/[xlog]/xlog/src/logfile/oldlog.c
ViewVC logotype

Diff of /xlog/src/logfile/oldlog.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by pa4tu, Sat Oct 19 17:51:39 2002 UTC revision 1.2 by pa4tu, Thu Nov 21 19:57:46 2002 UTC
# Line 36  Line 36 
36  /*  /*
37   * file fields   * file fields
38   */   */
39  const gint old_log_fields[] = { DATE, GMT, CALL, BAND, MODE, RST, MYRST,  const gint old_log_fields[] = { DATE, GMT, CALL, BAND, MODE, RST, MYRST,
40          QSLOUT, QSLIN, REMARKS };    QSLOUT, QSLIN, REMARKS
41    };
42  const gint old_log_widths[] = { 15, 15, 15, 15, 15, 15, 15, 15, 15, 80 };  const gint old_log_widths[] = { 15, 15, 15, 15, 15, 15, 15, 15, 15, 80 };
43  const gint old_log_field_nr = 10;  const gint old_log_field_nr = 10;
44    
45  static gint old_log_open(LOGDB*);  static gint old_log_open (LOGDB *);
46  static void old_log_close(LOGDB*);  static void old_log_close (LOGDB *);
47  static gint old_log_create(LOGDB*);  static gint old_log_create (LOGDB *);
48  static gint old_log_qso_append(LOGDB*, const qso_t*);  static gint old_log_qso_append (LOGDB *, const qso_t *);
49  static gint old_log_qso_foreach(LOGDB*, gint (*fn)(LOGDB*, qso_t*, gpointer arg), gpointer arg);  static gint old_log_qso_foreach (LOGDB *,
50                                     gint (*fn) (LOGDB *, qso_t *, gpointer arg),
51                                     gpointer arg);
52    
53  const struct log_ops old_log_ops = {  const struct log_ops old_log_ops = {
54  open:                   old_log_open,    open:old_log_open,
55  close:                  old_log_close,    close:old_log_close,
56  create:                 old_log_create,    create:old_log_create,
57  qso_append:             old_log_qso_append,    qso_append:old_log_qso_append,
58  qso_foreach:    old_log_qso_foreach,    qso_foreach:old_log_qso_foreach,
59  type:                   TYPE_OLD_LOG,    type:TYPE_OLD_LOG,
60  name:                   "Oldlog",    name:"Oldlog",
61  extension:              ".log",    extension:".log",
62  };  };
63    
64  /*  /*
65   * open for read   * open for read
66   */   */
67  gint old_log_open(LOGDB *handle)  gint
68    old_log_open (LOGDB * handle)
69  {  {
70          FILE *fp;    FILE *fp;
71    
72          fp = fopen(handle->path, "r");    fp = fopen (handle->path, "r");
73          if (!fp) return -1;    if (!fp)
74          handle->priv = (gpointer)fp;      return -1;
75      handle->priv = (gpointer) fp;
76    
77          /* TODO: read first line, and determine whether v0.4 and v0.5 */    /* TODO: read first line, and determine whether v0.4 and v0.5 */
78    
79          handle->column_nr = old_log_field_nr;    handle->column_nr = old_log_field_nr;
80          memcpy(handle->column_fields, old_log_fields, sizeof(old_log_fields));    memcpy (handle->column_fields, old_log_fields, sizeof (old_log_fields));
81          memcpy(handle->column_widths, old_log_widths, sizeof(old_log_widths));    memcpy (handle->column_widths, old_log_widths, sizeof (old_log_widths));
82    
83          return 0;    return 0;
84  }  }
85    
86  /*  /*
87   * open for write   * open for write
88   */   */
89  gint old_log_create(LOGDB *handle)  gint
90    old_log_create (LOGDB * handle)
91  {  {
92          FILE *fp;    FILE *fp;
93    
94          fp = fopen(handle->path, "w");    fp = fopen (handle->path, "w");
95          if (!fp) return -1;    if (!fp)
96          handle->priv = (gpointer)fp;      return -1;
97          return 0;    handle->priv = (gpointer) fp;
98      return 0;
99  }  }
100    
101  void old_log_close(LOGDB *handle)  void
102    old_log_close (LOGDB * handle)
103  {  {
104          FILE *fp = (FILE*)handle->priv;    FILE *fp = (FILE *) handle->priv;
105          fclose(fp);    fclose (fp);
106  }  }
107    
108  /*  /*
109   * version 0.5 format.   * version 0.5 format.
110   * each field 15 positions, remarks on a separate line, 80 wide   * each field 15 positions, remarks on a separate line, 80 wide
111   */   */
112  gint old_log_qso_append(LOGDB *handle, const qso_t *q)  gint
113    old_log_qso_append (LOGDB * handle, const qso_t * q)
114  {  {
115          FILE *fp = (FILE *)handle->priv;    FILE *fp = (FILE *) handle->priv;
116    
117          fprintf(fp, "%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n%-80s\n",    fprintf (fp, "%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n%-80s\n",
118                  q[DATE], q[GMT], q[CALL], q[BAND], q[MODE],             q[DATE], q[GMT], q[CALL], q[BAND], q[MODE],
119                  q[RST], q[MYRST], q[QSLOUT], q[QSLIN], q[REMARKS]);             q[RST], q[MYRST], q[QSLOUT], q[QSLIN], q[REMARKS]);
120          return 0;    return 0;
121  }  }
122    
123  gint old_log_qso_foreach(LOGDB *handle, gint (*fn)(LOGDB*, qso_t*, gpointer arg), gpointer arg)  gint
124    old_log_qso_foreach (LOGDB * handle,
125                         gint (*fn) (LOGDB *, qso_t *, gpointer arg),
126                         gpointer arg)
127  {  {
128          FILE *fp = (FILE*)handle->priv;    FILE *fp = (FILE *) handle->priv;
129          gint i, ret;    gint i, ret;
130          qso_t q[QSO_FIELDS];    qso_t q[QSO_FIELDS];
131          gchar buffer[81];    gchar buffer[81];
132                    
133          while (!feof(fp)) {    while (!feof (fp))
134                  memset(q, 0, sizeof(q));      {
135                  for (i = 0; i < 7; i++) {        memset (q, 0, sizeof (q));
136                          fgets(buffer, 16, fp);        for (i = 0; i < 7; i++)
137            {
138                          if (strlen(buffer) != 15 || feof(fp)) {            fgets (buffer, 16, fp);
139                                  return 0;  
140                          }            if (strlen (buffer) != 15 || feof (fp))
141                          q[old_log_fields[i]] = g_strdup(g_strstrip(buffer));              {
142                  }                return 0;
143                }
144                  /* QSLOUT and QSLIN are not present in version 0.4 */            q[old_log_fields[i]] = g_strdup (g_strstrip (buffer));
145                  fgets(buffer, 16, fp); /*QSL out? */          }
                 if (strlen(buffer) == 15) {  
                         q[QSLOUT] = g_strdup(g_strstrip(buffer));  
                         fgets(buffer, 16, fp); /*QSL in*/  
                         q[QSLIN] = g_strdup(g_strstrip(buffer));  
                         fgets(buffer, 3, fp); /*EOL*/  
                 } else {  
                         q[QSLOUT] = g_strdup("");  
                         q[QSLIN] = g_strdup("");  
                         /* EOL already eaten by previous fgets */  
                 }  
   
                 /* line with remarks */  
                 fgets(buffer, 80, fp);  
                 q[REMARKS] = g_strdup(g_strstrip(buffer));  
                 fgets(buffer, 3, fp); /*EOL*/  
146    
147                  ret = (*fn)(handle, q, arg);        /* QSLOUT and QSLIN are not present in version 0.4 */
148                  if (ret) return ret;        fgets (buffer, 16, fp);   /*QSL out? */
149          if (strlen (buffer) == 15)
150            {
151              q[QSLOUT] = g_strdup (g_strstrip (buffer));
152              fgets (buffer, 16, fp);       /*QSL in */
153              q[QSLIN] = g_strdup (g_strstrip (buffer));
154              fgets (buffer, 3, fp);
155            /*EOL*/}
156          else
157            {
158              q[QSLOUT] = g_strdup ("");
159              q[QSLIN] = g_strdup ("");
160              /* EOL already eaten by previous fgets */
161          }          }
162          return 0;  
163          /* line with remarks */
164          fgets (buffer, 80, fp);
165          q[REMARKS] = g_strdup (g_strstrip (buffer));
166          fgets (buffer, 3, fp);
167          /*EOL*/ ret = (*fn) (handle, q, arg);
168          if (ret)
169            return ret;
170        }
171      return 0;
172  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26