IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 13, 2008, 8:30:49 AM (18 years ago)
Author:
eugene
Message:

add output variables for stdout, stderr

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pcontrol/stdout.c

    r12840 r18116  
    11# include "pcontrol.h"
    22
     3// XXX unify by testing for value of argv[0]
    34int stdout_pc (int argc, char **argv) {
    45
    5   int JobID, StackID;
     6  int N, JobID, StackID;
    67  Job *job;
    78  IOBuffer *buffer;
     9  char *varName;
     10
     11  varName = NULL;
     12  if ((N = get_argument (argc, argv, "-var"))) {
     13    remove_argument (N, &argc, argv);
     14    varName = strcreate (argv[N]);
     15    remove_argument (N, &argc, argv);
     16  }
    817
    918  if (argc != 2) {
    10     gprint (GP_ERR, "USAGE: stdout (JobID)\n");
     19    gprint (GP_ERR, "USAGE: stdout (JobID) [-var name]\n");
    1120    gprint (GP_LOG, "STATUS %d\n", -1);
    1221    return (FALSE);
     
    2534
    2635  gprint (GP_ERR, "job not found in EXIT or CRASH\n");
    27   gprint (GP_LOG, "STATUS %d\n", -2);
     36  if (varName == NULL) {
     37    gprint (GP_LOG, "STATUS %d\n", -2);
     38  } else {
     39    set_str_variable (varName, "NULL");
     40    free (varName);
     41  }
    2842  return (FALSE);
    2943
    3044found_stdout:
    3145  buffer = &job[0].stdout_buff;
    32   fwrite (buffer[0].buffer, 1, buffer[0].Nbuffer, stdout);
    33   gprint (GP_LOG, "STATUS %d\n", 0);
     46  if (varName == NULL) {
     47    fwrite (buffer[0].buffer, 1, buffer[0].Nbuffer, stdout);
     48    gprint (GP_LOG, "STATUS %d\n", 0);
     49  } else {
     50    // XXX this can drop '0' values
     51    set_str_variable (varName, buffer[0].buffer);
     52    free (varName);
     53  }
    3454  PutJob (job, StackID, STACK_BOTTOM);
    3555  return (TRUE);
     
    3858int stderr_pc (int argc, char **argv) {
    3959
    40   int JobID, StackID;
     60  int N, JobID, StackID;
    4161  Job *job;
    4262  IOBuffer *buffer;
     63  char *varName;
     64
     65  varName = NULL;
     66  if ((N = get_argument (argc, argv, "-var"))) {
     67    remove_argument (N, &argc, argv);
     68    varName = strcreate (argv[N]);
     69    remove_argument (N, &argc, argv);
     70  }
    4371
    4472  if (argc != 2) {
    45     gprint (GP_ERR, "USAGE: stderr (JobID)\n");
     73    gprint (GP_ERR, "USAGE: stderr (JobID) [-var name]\n");
    4674    gprint (GP_LOG, "STATUS %d\n", -1);
    4775    return (FALSE);
     
    6088
    6189  gprint (GP_ERR, "job not found in EXIT or CRASH\n");
    62   gprint (GP_LOG, "STATUS %d\n", -2);
     90  if (varName == NULL) {
     91    gprint (GP_LOG, "STATUS %d\n", -2);
     92  } else {
     93    set_str_variable (varName, "NULL");
     94    free (varName);
     95  }
    6396  return (FALSE);
    6497
    6598found_stderr:
    6699  buffer = &job[0].stderr_buff;
    67   fwrite (buffer[0].buffer, 1, buffer[0].Nbuffer, stdout);
    68   gprint (GP_LOG, "STATUS %d\n", 0);
     100  if (varName == NULL) {
     101    fwrite (buffer[0].buffer, 1, buffer[0].Nbuffer, stdout);
     102    gprint (GP_LOG, "STATUS %d\n", 0);
     103  } else {
     104    // XXX this can drop '0' values
     105    set_str_variable (varName, buffer[0].buffer);
     106    free (varName);
     107  }
    69108  PutJob (job, StackID, STACK_BOTTOM);
    70109  return (TRUE);
Note: See TracChangeset for help on using the changeset viewer.