home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / c / lpc05b.zip / GIO.C < prev    next >
C/C++ Source or Header  |  1992-05-22  |  2KB  |  140 lines

  1. #include <stdio.h>
  2. #include "gio.h"
  3.  
  4.  
  5. GIO * greopen( type, name, arg, gp )
  6. int type;
  7. char *name;
  8. char *arg;
  9. GIO *gp;
  10. {
  11.     gclose(gp);
  12.     gp = gopen( type, name, arg );
  13. }
  14.  
  15. GIO * gopen( type, name, arg )
  16. int type;
  17. char *name;
  18. char *arg;
  19. {
  20.     GIO    *gp;
  21.  
  22.     if ((gp = (GIO *)malloc(sizeof(GIO))) == NULL)
  23.         return (NULL);
  24.  
  25.     switch (type)
  26.         {
  27.         case GIO_STDIN:
  28.         gp->iotype = GIO_FILE;
  29.         gp->fp = stdin;
  30.         gp->stdio = 1;
  31.         break;
  32.  
  33.         case GIO_STDOUT:
  34.         gp->iotype = GIO_FILE;
  35.         gp->fp = stdout;
  36.         gp->stdio = 1;
  37.         break;
  38.  
  39.         case GIO_STDERR:
  40.         gp->iotype = GIO_FILE;
  41.         gp->fp = stderr;
  42.         gp->stdio = 1;
  43.         break;
  44.     
  45.         case GIO_FILE:
  46.         gp->iotype = GIO_FILE;
  47.         gp->stdio = 0;
  48.         if ((gp->fp = fopen(name, arg)) == NULL)
  49.             return (NULL);
  50.         break;
  51.  
  52.         case GIO_MSGQ:
  53.         return (NULL);
  54.         break;
  55.  
  56.         default:
  57.         return (NULL);
  58.         break;
  59.         }
  60.     
  61.     return (gp);    
  62. }
  63.  
  64. int gclose( gp )
  65. GIO *gp;
  66. {
  67.     if (gp == NULL) return;
  68.     switch (gp->iotype)
  69.         {
  70.         case GIO_FILE:
  71.         if (!(gp->stdio))
  72.             fclose(gp->fp);
  73.         break;
  74.  
  75.         case GIO_MSGQ:
  76.         break;
  77.  
  78.         default:
  79.         return (NULL);
  80.         }
  81.  
  82.     free(gp);
  83.     return (1);
  84. }
  85.  
  86. int geof( gp )
  87. GIO *gp;
  88. {
  89.     switch (gp->iotype)
  90.         {
  91.         case GIO_FILE:
  92.         return (feof(gp->fp));
  93.  
  94.         case GIO_MSGQ:
  95.         return (1);
  96.         break;
  97.  
  98.         default:
  99.         return (1);
  100.         }
  101. }
  102.  
  103. int gputs( s, gp )
  104. char *s;
  105. GIO *gp;
  106. {
  107.     if (gp == NULL) return;
  108.     switch (gp->iotype)
  109.         {
  110.         case GIO_FILE:
  111.         return (fputs( s, gp->fp ));
  112.  
  113.         case GIO_MSGQ:
  114.         break;
  115.  
  116.         default:
  117.         return (-1);
  118.         }
  119. }
  120.  
  121. int gread( buf, size, n, gp )
  122. char *buf;
  123. int size;
  124. int n;
  125. GIO *gp;
  126. {
  127.     switch (gp->iotype)
  128.         {
  129.         case GIO_FILE:
  130.         return (fread(buf, size, n, gp->fp));
  131.  
  132.         case GIO_MSGQ:
  133.         break;
  134.  
  135.         default:
  136.         return (0);
  137.         }
  138. }
  139.  
  140.