musrfit 1.10.0
mud_all.c
Go to the documentation of this file.
1/*
2 * mud_all.c -- procedures for MUD_FMT_ALL sections
3 *
4 * Copyright (C) 1994-2010 TRIUMF (Vancouver, Canada)
5 *
6 * Authors: T. Whidden, D. Arseneau, S. Daviel
7 *
8 * Released under the GNU LGPL - see http://www.gnu.org/licenses
9 *
10 * This program is free software; you can distribute it and/or modify it under
11 * the terms of the Lesser GNU General Public License as published by the Free
12 * Software Foundation; either version 2 of the License, or any later version.
13 * Accordingly, this program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License
16 * for more details.
17 *
18 * Revision history:
19 * v1.00 15-Feb-1994 [T. Whidden] Initial version
20 * v1.10 17-Feb-1994 [T. Whidden] Groups with member index
21 * v1.2a 01-Mar-2000 DA Proc for unknown sections
22 * 25-Nov-2009 DA Handle 8-byte time_t
23 */
24
25#include <time.h>
26#include "mud.h"
27
28
29int
30MUD_SEC_proc( MUD_OPT op, BUF* pBuf, MUD_SEC* pMUD )
31{
32 switch( op )
33 {
34 case MUD_FREE:
35 break;
36 case MUD_DECODE:
37 break;
38 case MUD_ENCODE:
39 break;
40 case MUD_GET_SIZE:
41 return( 0 );
42 case MUD_SHOW:
43 printf( " MUD_SEC: \n" );
44 break;
45 case MUD_HEADS:
46 break;
47 }
48 return( 1 );
49}
50
51
52int
54{
55 switch( op )
56 {
57 case MUD_FREE:
58 break;
59 case MUD_DECODE:
60 break;
61 case MUD_ENCODE:
62 break;
63 case MUD_GET_SIZE:
64 return( 0 );
65 case MUD_SHOW:
66 printf( " MUD_EOF: \n" );
67 break;
68 case MUD_HEADS:
69 break;
70 }
71 return( 1 );
72}
73
74
75int
77{
78 int size;
79
80 switch( op )
81 {
82 case MUD_FREE:
83 break;
84 case MUD_DECODE:
85 decode_4( pBuf, &pMUD->fileSize );
86 decode_4( pBuf, &pMUD->formatID );
87 break;
88 case MUD_ENCODE:
89 encode_4( pBuf, &pMUD->fileSize );
90 encode_4( pBuf, &pMUD->formatID );
91 break;
92 case MUD_GET_SIZE:
93 size = 2*sizeof( UINT32 );
94 return( size );
95 case MUD_SHOW:
96 printf( " MUD_SEC_FIXED: fileSize=[%lu], formatID=[0x%08lX]\n",
97 (unsigned long)(pMUD->fileSize), (unsigned long)(pMUD->formatID) );
98 break;
99 case MUD_HEADS:
100 break;
101 }
102 return( 1 );
103}
104
105
106int
108{
109 int size;
110 int i;
111 MUD_INDEX** ppMUD_index;
112 MUD_INDEX* pMUD_index;
113
114 switch( op )
115 {
116 case MUD_FREE:
118 MUD_free( pMUD->pMem );
119 break;
120 case MUD_DECODE:
121 decode_4( pBuf, &pMUD->num );
122 decode_4( pBuf, &pMUD->memSize );
123 ppMUD_index = &pMUD->pMemIndex;
124 for( i = 0; i < pMUD->num; i++ )
125 {
126 pMUD_index = (MUD_INDEX*)zalloc( sizeof( MUD_INDEX ) );
127 MUD_INDEX_proc( MUD_DECODE, pBuf, pMUD_index );
128 *ppMUD_index = pMUD_index;
129 ppMUD_index = &(*ppMUD_index)->pNext;
130 }
131 break;
132 case MUD_ENCODE:
133 encode_4( pBuf, &pMUD->num );
134 encode_4( pBuf, &pMUD->memSize );
135
136 for( pMUD_index = pMUD->pMemIndex;
137 pMUD_index != NULL;
138 pMUD_index = pMUD_index->pNext )
139 MUD_INDEX_proc( MUD_ENCODE, pBuf, pMUD_index );
140 break;
141 case MUD_GET_SIZE:
142 size = 2*sizeof( UINT32 );
143 size += pMUD->num*MUD_INDEX_proc( MUD_GET_SIZE, NULL, NULL );
144 return( size );
145 case MUD_SHOW:
146 printf( " MUD_SEC_GRP: num=[%ld], memSize=%ld\n",
147 (long int)(pMUD->num), (long int)(pMUD->memSize) );
148 for( pMUD_index = pMUD->pMemIndex;
149 pMUD_index != NULL;
150 pMUD_index = pMUD_index->pNext )
151 MUD_INDEX_proc( MUD_SHOW, NULL, pMUD_index );
152 break;
153 case MUD_HEADS:
154 for( pMUD_index = pMUD->pMemIndex;
155 pMUD_index != NULL;
156 pMUD_index = pMUD_index->pNext )
157 MUD_INDEX_proc( MUD_HEADS, NULL, pMUD_index );
158 break;
159 }
160 return( 1 );
161}
162
163
164int
166{
167 int size;
168 char tempStr1[32];
169 time_t bintime;
170
171 switch( op )
172 {
173 case MUD_FREE:
174 _free( pMUD->author );
175 _free( pMUD->title );
176 _free( pMUD->comment );
177 break;
178 case MUD_DECODE:
179 decode_4( pBuf, &pMUD->ID );
180 decode_4( pBuf, &pMUD->prevReplyID );
181 decode_4( pBuf, &pMUD->nextReplyID );
182 decode_4( pBuf, &pMUD->time );
183 decode_str( pBuf, &pMUD->author );
184 decode_str( pBuf, &pMUD->title );
185 decode_str( pBuf, &pMUD->comment );
186 break;
187 case MUD_ENCODE:
188 encode_4( pBuf, &pMUD->ID );
189 encode_4( pBuf, &pMUD->prevReplyID );
190 encode_4( pBuf, &pMUD->nextReplyID );
191 encode_4( pBuf, &pMUD->time );
192 encode_str( pBuf, &pMUD->author );
193 encode_str( pBuf, &pMUD->title );
194 encode_str( pBuf, &pMUD->comment );
195 break;
196 case MUD_GET_SIZE:
197 size = 3*sizeof( UINT32 );
198 size += 1*sizeof( TIME );
199 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->author );
200 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->title );
201 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->comment );
202 return( size );
203 case MUD_SHOW:
204 printf( " MUD_SEC_CMT: \n" );
205 printf( " number:[%lu], prevReply:[%lu], nextReply:[%lu]\n",
206 (unsigned long)(pMUD->ID), (unsigned long)(pMUD->prevReplyID),
207 (unsigned long)(pMUD->nextReplyID) );
208 bintime = pMUD->time;
209 strncpy( tempStr1, ctime( &bintime ), sizeof(tempStr1) );
210 tempStr1[strlen(tempStr1)-1] = '\0';
211 printf( " time:[%s]\n", tempStr1 );
212 if( pMUD->author ) printf( " author:\"%s\"\n", pMUD->author );
213 if( pMUD->title ) printf( " title:\"%s\"\n", pMUD->title );
214 if( pMUD->comment ) printf( " comment:\"%s\"\n", pMUD->comment );
215 break;
216 case MUD_HEADS:
217 printf( "Comment number %lu. ", (unsigned long)(pMUD->ID) );
218 if( pMUD->prevReplyID > 0 )
219 printf(" Re: #%lu. ", (unsigned long)(pMUD->prevReplyID) );
220 if( pMUD->nextReplyID > 0 )
221 printf(" Next: #%lu.", (unsigned long)(pMUD->nextReplyID) );
222 printf( "\n" );
223 bintime = pMUD->time;
224 strncpy( tempStr1, ctime( &bintime ), sizeof(tempStr1) );
225 tempStr1[strlen(tempStr1)-1] = '\0';
226 if( pMUD->author ) printf( " author: %s, time: %s\n", pMUD->author, tempStr1 );
227 if( pMUD->title ) printf( " title: %s\n", pMUD->title );
228 if( pMUD->comment ) printf( "%s\n", pMUD->comment );
229 break;
230 }
231 return( 1 );
232}
233
234
235int
237{
238 switch( op )
239 {
240 case MUD_FREE:
241 break;
242 case MUD_DECODE:
243 break;
244 case MUD_ENCODE:
245 break;
246 case MUD_GET_SIZE:
247 return( 0 );
248 case MUD_SHOW:
249 printf( " UNKNOWN MUD SECTION: [] \n" );
250 break;
251 case MUD_HEADS:
252 break;
253 }
254 return( 1 );
255}
256
257
int MUD_INDEX_proc(MUD_OPT op, BUF *pBuf, MUD_INDEX *pMUD)
Definition mud.c:989
void MUD_free(void *pMUD)
Definition mud.c:83
#define NULL
Definition mud.h:167
UINT16 MUD_STR_LEN_TYPE
Definition mud.h:474
unsigned long UINT32
Definition mud.h:146
#define zalloc(n)
Definition mud.h:201
MUD_OPT
Definition mud.h:207
@ MUD_FREE
Definition mud.h:210
@ MUD_ENCODE
Definition mud.h:208
@ MUD_HEADS
Definition mud.h:213
@ MUD_SHOW
Definition mud.h:212
@ MUD_GET_SIZE
Definition mud.h:211
@ MUD_DECODE
Definition mud.h:209
struct _MUD_SEC_GRP MUD_SEC_GRP
struct _MUD_SEC MUD_SEC
#define encode_4(b, p)
Definition mud.h:456
#define _free(objp)
Definition mud.h:198
#define decode_4(b, p)
Definition mud.h:454
struct _MUD_SEC_UNKNOWN MUD_SEC_UNKNOWN
#define _strlen(s)
Definition mud.h:193
struct _MUD_INDEX MUD_INDEX
UINT32 TIME
Definition mud.h:154
int MUD_SEC_FIXED_proc(MUD_OPT op, BUF *pBuf, MUD_SEC_FIXED *pMUD)
Definition mud_all.c:76
int MUD_SEC_UNKNOWN_proc(MUD_OPT op, BUF *pBuf, MUD_SEC_UNKNOWN *pMUD)
Definition mud_all.c:236
int MUD_SEC_CMT_proc(MUD_OPT op, BUF *pBuf, MUD_SEC_CMT *pMUD)
Definition mud_all.c:165
int MUD_SEC_GRP_proc(MUD_OPT op, BUF *pBuf, MUD_SEC_GRP *pMUD)
Definition mud_all.c:107
int MUD_SEC_proc(MUD_OPT op, BUF *pBuf, MUD_SEC *pMUD)
Definition mud_all.c:30
int MUD_SEC_EOF_proc(MUD_OPT op, BUF *pBuf, MUD_SEC_EOF *pMUD)
Definition mud_all.c:53
void encode_str(BUF *pB, char **ps)
Definition mud_encode.c:140
void decode_str(BUF *pB, char **ps)
Definition mud_encode.c:115
Definition mud.h:253
char * title
Definition mud.h:306
char * comment
Definition mud.h:307
UINT32 nextReplyID
Definition mud.h:303
TIME time
Definition mud.h:304
char * author
Definition mud.h:305
UINT32 ID
Definition mud.h:301
UINT32 prevReplyID
Definition mud.h:302
UINT32 fileSize
Definition mud.h:274
UINT32 formatID
Definition mud.h:275
struct _MUD_INDEX * pNext
Definition mud.h:236
MUD_SEC * pMem
Definition mud.h:286
MUD_INDEX * pMemIndex
Definition mud.h:285
UINT32 num
Definition mud.h:283
UINT32 memSize
Definition mud.h:284