IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 12, 2007, 9:52:11 AM (19 years ago)
Author:
eugene
Message:

adding gprintSetFileAllThreads vs ThisThread

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/lib.shell/gprint.c

    r15030 r15791  
    126126}
    127127
    128 void gprintSetFile (gpDest dest, char *filename) {
    129 
    130   gpStream *stream;
    131   stream = gprintGetStream (dest);
     128void gprintSetFileAllThreads (gpDest dest, char *filename) {
     129
     130  int i;
     131
     132  for (i = 0; i < Nstreams; i++) {
     133    if (streams[i].dest != dest) continue;
     134    gprintSetFile (&streams[i], dest, filename);
     135  }
     136  return;
     137}
     138
     139void gprintSetFileThisThread (gpDest dest, char *filename) {
     140
     141  gpStream *stream;
     142  stream = gprintGetStream (dest);
     143
     144  gprintSetFile (stream, dest, filename);
     145  return;
     146}
     147
     148void gprintSetFile (gpStream *stream, gpDest dest, char *filename) {
    132149
    133150  /* if we have an open buffer, free it and null it */
     
    146163  }
    147164skip_close:
    148  
    149   free (stream[0].name);
     165
     166  // if NULL, reuse exising stream name
     167  if (filename != NULL) {
     168    free (stream[0].name);
     169    stream[0].name = strcreate (filename);
     170  }
    150171
    151172  /* we allow the user to set stdout to ERR and stderr to LOG if they want */
    152   if (!strcmp (filename, "stdout")) {
     173  if (!strcmp (stream[0].name, "stdout")) {
    153174    stream[0].file = stdout;
    154     stream[0].name = strcreate (filename);
    155175    goto skip_open;
    156176  }
    157   if (!strcmp (filename, "stderr")) {
     177  if (!strcmp (stream[0].name, "stderr")) {
    158178    stream[0].file = stderr;
    159     stream[0].name = strcreate (filename);
    160179    goto skip_open;
    161180  }
    162181 
    163182  /* open the file */
    164   stream[0].file = fopen (filename, "a");
     183  stream[0].file = fopen (stream[0].name, "a");
    165184  if (stream[0].file == NULL) {
    166     fprintf (stderr, "cannot open file %s\n", filename);
     185    fprintf (stderr, "cannot open file %s\n", stream[0].name);
     186    free (stream[0].name);
    167187    stream[0].file = (dest == GP_LOG) ? stdout : stderr;
    168188    stream[0].name = (dest == GP_LOG) ? strcreate ("stdout") : strcreate("stderr");
    169   } else {
    170     stream[0].name = strcreate (filename);
    171189  }
    172190
    173191skip_open:
    174192  stream[0].mode = GP_FILE;
     193  return;
    175194}
    176195
Note: See TracChangeset for help on using the changeset viewer.