20-apr-2005 NvE Id of owning device added to the output of AliSignal::Data().
[u/mrichter/AliRoot.git] / RALICE / icepack / iceconvert / rdmc.c
1 /****************************************************************************/
2 /* This is rdmc.c - some routines for reading mc and preprocessed data      */
3 /* files in the formats described in format.txt of jk/rw (10.10.93)         */
4 /* and in the DUMAND ascii format used by cw                                */
5 /****************************************************************************/
6
7 char *rdmc_cvsid = 
8 "$Header: /net/local/cvsroot/siegmund/rdmc/rdmc.c,v 1.59 2004/04/15 14:45:52 wiebusch Exp $";
9
10 #include <string.h>
11 #include <stdlib.h>
12 #include <ctype.h>
13
14 /////////////////#include <unistd.h>
15
16 #include <fcntl.h>
17
18 #if defined(OSF1) || defined(AIX) || defined (SunOS)
19 #include <errno.h>
20 #endif
21
22 #include "rdmc.h"
23
24 #include "rdmc_local.h"
25
26 #ifdef BAIKAL_BIN_F
27 #include "baikal.h"
28 #endif
29 #ifdef AMANDA_ASCII_F
30 #include "amanda.h"
31 #endif
32 #ifdef DUMAND_ASCII_F
33 #include "dumand.h"
34 #endif
35 #ifdef UWI_ASCII_F
36 #include "uwi.h"
37 #endif
38
39 #ifndef DEBUG
40 #define DEBUG 0                       /* DEBUG 1 writes some info to stderr */
41 #endif
42
43 #define PID180 (M_PI/180.)
44
45 /****************************************************************************/
46 /* write_parameters() simply adds the program name and the parameters to    */
47 /* the fp->creator field                                                    */
48 /****************************************************************************/
49
50 void rdmc_write_parameters(mcfile *fp, int argc,  char **argv, const char *version)
51 {
52   int i;
53   char *progname;
54   int linelength = 0;
55
56   progname = strrchr(argv[0],'/');
57   if (progname == NULL) 
58     progname = argv[0];
59   else
60     progname++;
61
62   rdmc_append_comment(&(fp->creator)," ");
63   rdmc_append_comment(&(fp->creator),progname);
64   
65   if (version != NULL) {
66     rdmc_append_comment(&(fp->creator)," (");
67     rdmc_append_comment(&(fp->creator),version);
68     rdmc_append_comment(&(fp->creator),") ");
69   }
70
71   linelength = strlen(progname) + strlen(version) + 5;
72
73   for (i = 1; i < argc; i++) {
74     linelength += strlen(argv[i]) + 1;
75     if (linelength > F2000_MAXLINE - RDMC_MAXTOKENLENGTH) {
76       rdmc_append_comment(&(fp->creator), "\\\n");
77       linelength = 1 + strlen(argv[i]);
78     }
79     rdmc_append_comment(&(fp->creator), " ");
80     rdmc_append_comment(&(fp->creator),argv[i]);
81   }
82
83   rdmc_append_comment(&(fp->creator),"\n");
84
85 } /* write_parameters() */
86
87 /**********************************************/
88 /* appends a comment to a  character field */
89 /**********************************************/
90
91 void rdmc_append_comment(char **comment, const char *s){
92   if (comment != NULL){ /* it is there at all */
93     if (*comment == NULL) {
94       *comment = (char*)malloc(strlen(s) + 1);
95       strcpy(*comment, s);
96     } else {
97       *comment = (char*)realloc(*comment, strlen(*comment) + strlen(s) + 1);
98       strcat(*comment, s);
99     }
100   }
101 }
102
103 void rdmc_concat_comment(char **comment, const char *s, const int form){
104   switch(form){
105 #if 0     /* not needed */
106   case   DUMAND_ASCII_F  :
107         /* not needed */
108     break;
109 #endif
110   default:
111     rdmc_append_comment(comment,"!");
112     break;
113   }
114   rdmc_append_comment(comment,s);
115 }