musrfit 1.10.0
mud_tri_ti.c
Go to the documentation of this file.
1/*
2 * mud_tri_ti.c -- procedures for MUD_FMT_TRI_TI sections
3 *
4 * Copyright (C) 1994-2010 TRIUMF (Vancouver, Canada)
5 *
6 * Authors: T. Whidden, D. Arseneau
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.0 26-Jan-1994 [T. Whidden] Initial version
20 * v1.0a 14-Apr-1994 [T. Whidden] operator -> experimenter
21 * v1.0b 22-Apr-1994 [T. Whidden] rename TI to TRI_TI
22 * 25-Nov-2009 DA Handle 8-byte time_t
23 */
24
25#include <time.h>
26#include "mud.h"
27
28
29int
31{
32 int size;
33 char tempStr1[32];
34 char tempStr2[32];
35 time_t bintime;
36
37 switch( op )
38 {
39 case MUD_FREE:
40 _free( pMUD->title );
41 _free( pMUD->lab );
42 _free( pMUD->area );
43 _free( pMUD->method );
44 _free( pMUD->apparatus );
45 _free( pMUD->insert );
46 _free( pMUD->sample );
47 _free( pMUD->orient );
48 _free( pMUD->das );
49 _free( pMUD->experimenter );
50 _free( pMUD->subtitle );
51 _free( pMUD->comment1 );
52 _free( pMUD->comment2 );
53 _free( pMUD->comment3 );
54 break;
55 case MUD_DECODE:
56 decode_4( pBuf, &pMUD->exptNumber );
57 decode_4( pBuf, &pMUD->runNumber );
58 decode_4( pBuf, &pMUD->timeBegin );
59 decode_4( pBuf, &pMUD->timeEnd );
60 decode_4( pBuf, &pMUD->elapsedSec );
61 decode_str( pBuf, &pMUD->title );
62 decode_str( pBuf, &pMUD->lab );
63 decode_str( pBuf, &pMUD->area );
64 decode_str( pBuf, &pMUD->method );
65 decode_str( pBuf, &pMUD->apparatus );
66 decode_str( pBuf, &pMUD->insert );
67 decode_str( pBuf, &pMUD->sample );
68 decode_str( pBuf, &pMUD->orient );
69 decode_str( pBuf, &pMUD->das );
70 decode_str( pBuf, &pMUD->experimenter );
71 decode_str( pBuf, &pMUD->subtitle );
72 decode_str( pBuf, &pMUD->comment1 );
73 decode_str( pBuf, &pMUD->comment2 );
74 decode_str( pBuf, &pMUD->comment3 );
75 break;
76 case MUD_ENCODE:
77 encode_4( pBuf, &pMUD->exptNumber );
78 encode_4( pBuf, &pMUD->runNumber );
79 encode_4( pBuf, &pMUD->timeBegin );
80 encode_4( pBuf, &pMUD->timeEnd );
81 encode_4( pBuf, &pMUD->elapsedSec );
82 encode_str( pBuf, &pMUD->title );
83 encode_str( pBuf, &pMUD->lab );
84 encode_str( pBuf, &pMUD->area );
85 encode_str( pBuf, &pMUD->method );
86 encode_str( pBuf, &pMUD->apparatus );
87 encode_str( pBuf, &pMUD->insert );
88 encode_str( pBuf, &pMUD->sample );
89 encode_str( pBuf, &pMUD->orient );
90 encode_str( pBuf, &pMUD->das );
91 encode_str( pBuf, &pMUD->experimenter );
92 encode_str( pBuf, &pMUD->subtitle );
93 encode_str( pBuf, &pMUD->comment1 );
94 encode_str( pBuf, &pMUD->comment2 );
95 encode_str( pBuf, &pMUD->comment3 );
96 break;
97 case MUD_GET_SIZE:
98 size = 5*sizeof( UINT32 );
99 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->title );
100 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->lab );
101 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->area );
102 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->method );
103 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->apparatus );
104 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->insert );
105 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->sample );
106 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->orient );
107 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->das );
108 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->experimenter );
109 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->subtitle );
110 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->comment1 );
111 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->comment2 );
112 size += sizeof( MUD_STR_LEN_TYPE ) + _strlen( pMUD->comment3 );
113 return( size );
114 case MUD_SHOW:
115 printf( " MUD_SEC_TRI_TI_RUN_DESC: expt:[%lu], run:[%lu]\n",
116 (unsigned long)(pMUD->exptNumber), (unsigned long)(pMUD->runNumber) );
117 bintime = pMUD->timeBegin;
118 strncpy( tempStr1, ctime( &bintime ), sizeof(tempStr1) );
119 tempStr1[strlen(tempStr1)-1] = '\0';
120 bintime = pMUD->timeEnd;
121 strncpy( tempStr2, ctime( &bintime ), sizeof(tempStr2) );
122 tempStr2[strlen(tempStr2)-1] = '\0';
123 printf( " timeBegin:[%s]\n", tempStr1 );
124 printf( " timeEnd:[%s]\n", tempStr2 );
125 printf( " elapsedSec:[%lu]\n", (unsigned long)(pMUD->elapsedSec) );
126 if( pMUD->title ) printf( " title:\"%s\"\n", pMUD->title );
127 if( pMUD->lab ) printf( " lab:\"%s\"\n", pMUD->lab );
128 if( pMUD->area ) printf( " area:\"%s\"\n", pMUD->area );
129 if( pMUD->method ) printf( " method:\"%s\"\n", pMUD->method );
130 if( pMUD->apparatus )
131 printf( " apparatus:\"%s\"\n", pMUD->apparatus );
132 if( pMUD->insert ) printf( " insert:\"%s\"\n", pMUD->insert );
133 if( pMUD->sample ) printf( " sample:\"%s\"\n", pMUD->sample );
134 if( pMUD->orient ) printf( " orient:\"%s\"\n", pMUD->orient );
135 if( pMUD->das ) printf( " das:\"%s\"\n", pMUD->das );
136 if( pMUD->experimenter )
137 printf( " experimenter:\"%s\"\n", pMUD->experimenter );
138 if( pMUD->subtitle )
139 printf( " subtitle:\"%s\"\n", pMUD->subtitle );
140 if( pMUD->comment1 )
141 printf( " comment1:\"%s\"\n", pMUD->comment1 );
142 if( pMUD->comment2 )
143 printf( " comment2:\"%s\"\n", pMUD->comment2 );
144 if( pMUD->comment3 )
145 printf( " comment3:\"%s\"\n", pMUD->comment3 );
146 break;
147 case MUD_HEADS:
148 printf( "Run number: %lu\n", (unsigned long)(pMUD->runNumber) );
149 printf( " exper num: %lu\n", (unsigned long)(pMUD->exptNumber) );
150 if( pMUD->experimenter )
151 printf( " operator: %s\n", pMUD->experimenter );
152 if( pMUD->method )
153 printf( " method: %s\n", pMUD->method );
154 bintime = pMUD->timeBegin;
155 strncpy( tempStr1, ctime( &bintime ), sizeof(tempStr1) );
156 tempStr1[strlen(tempStr1)-1] = '\0';
157 bintime = pMUD->timeEnd;
158 strncpy( tempStr2, ctime( &bintime ), sizeof(tempStr2) );
159 tempStr2[strlen(tempStr2)-1] = '\0';
160 printf( " began: %s\n ended: %s\n",
161 tempStr1, tempStr2 );
162 printf( " elapsed: %ld:%.2d:%.2d (%lu seconds)\n",
163 (long)(pMUD->elapsedSec/3600), ((pMUD->elapsedSec%3600)/60), (pMUD->elapsedSec%60),
164 (unsigned long)(pMUD->elapsedSec) );
165 if( pMUD->title ) printf( " title: %s\n", pMUD->title );
166 if( pMUD->sample ) printf( " sample: %s\n", pMUD->sample );
167 if( pMUD->orient ) printf( " orient: %s\n", pMUD->orient );
168 if( pMUD->subtitle )
169 printf( " subtitle: %s\n", pMUD->subtitle );
170 if( pMUD->lab ) printf( " lab: %s\n", pMUD->lab );
171 if( pMUD->area ) printf( " area: %s\n", pMUD->area );
172 if( pMUD->das ) printf( " das: %s\n", pMUD->das );
173 if( pMUD->apparatus )
174 printf( " apparatus: %s\n", pMUD->apparatus );
175 if( pMUD->insert ) printf( " insert: %s\n", pMUD->insert );
176 if( pMUD->comment1 )
177 printf( " comment1: %s\n", pMUD->comment1 );
178 if( pMUD->comment2 )
179 printf( " comment2: %s\n", pMUD->comment2 );
180 if( pMUD->comment3 )
181 printf( " comment3: %s\n", pMUD->comment3 );
182 break;
183 }
184 return( 1 );
185}
186
187
UINT16 MUD_STR_LEN_TYPE
Definition mud.h:474
unsigned long UINT32
Definition mud.h:146
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
#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
#define _strlen(s)
Definition mud.h:193
void encode_str(BUF *pB, char **ps)
Definition mud_encode.c:140
void decode_str(BUF *pB, char **ps)
Definition mud_encode.c:115
int MUD_SEC_TRI_TI_RUN_DESC_proc(MUD_OPT op, BUF *pBuf, MUD_SEC_TRI_TI_RUN_DESC *pMUD)
Definition mud_tri_ti.c:30
Definition mud.h:253