home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / sps3 / part02 / openfiles.c < prev    next >
C/C++ Source or Header  |  1992-05-08  |  4KB  |  195 lines

  1. # ifndef lint
  2. static char SccsId[] =  "@(#)openfiles.c    1.1\t10/1/88" ;
  3. # endif
  4.  
  5. # include       <stdio.h>
  6. # include       "sps.h"
  7. # include       "flags.h"
  8. # include       <varargs.h>
  9. # ifdef KVM
  10. # include       <kvm.h>
  11. # endif
  12.  
  13. /* Miscellaneous procedures */
  14.  
  15. /* OPENFILE - Opens the named file */
  16. openfile ( name )
  17.  
  18. char                            *name ;
  19.  
  20. {
  21.     register int            fd ;
  22.  
  23.     if ( (fd = open( name, 0 )) >= 0 )
  24.         return ( fd ) ;
  25.     fprintf( stderr, "sps - Can't open %s", name ) ;
  26.     sysperror() ;
  27.     /* NOTREACHED */
  28. }
  29.  
  30. # ifdef KVM
  31.  
  32. getkmem ( addr, buf, bufsize )
  33.  
  34. long                            addr ;
  35. char                            *buf ;
  36. int                             bufsize ;
  37. {
  38.     extern kvm_t            *Flkvm ;
  39.  
  40.     return( kvm_read( Flkvm, (long)addr, buf, bufsize ) ) ;
  41. }
  42.  
  43. # else
  44.  
  45. getkmem ( addr, buf, bufsize )
  46.  
  47. long                            addr ;
  48. char                            *buf ;
  49. int                             bufsize ;
  50. {
  51.     extern int              Flkmem ;
  52.  
  53.     memseek( Flkmem, (long)addr ) ;
  54.     return( read( Flkmem, buf, bufsize ) ) ;
  55. }
  56.  
  57. /* MEMSEEK - Seek on a special file */
  58. memseek ( fd, pos )
  59.  
  60. int                             fd ;
  61. long                            pos ;
  62.  
  63. {
  64.     extern int              errno ;
  65.     extern struct flags     Flg ;
  66.     long                    lseek() ;
  67.  
  68.     errno = 0 ;
  69.     if ( Flg.flg_k )
  70. # ifdef SUN
  71.         pos &= KERNELBASE - 1 ;
  72. # else
  73.         pos &= 0x7fffffff ;
  74. # endif
  75.     (void)lseek( fd, pos, 0 ) ;
  76.     if ( errno )
  77.     {
  78.         fprintf( stderr, "sps - Seek failed" ) ;
  79.         sysperror() ;
  80.     }
  81. }
  82.  
  83. /* SWSEEK - Seek on the swap device */
  84. swseek ( pos )
  85.  
  86. long                            pos ;
  87.  
  88. {
  89.     extern int              Flswap ;
  90.     extern int              errno ;
  91.     long                    lseek() ;
  92.  
  93.     errno = 0 ;
  94.     (void)lseek( Flswap, pos, 0 ) ;
  95.     if ( errno )
  96.     {
  97.         fprintf( stderr, "sps - Seek failed" ) ;
  98.         sysperror() ;
  99.     }
  100. }
  101.  
  102. # endif
  103.  
  104. # ifdef lint
  105. int                             errno ;
  106. int                             sys_nerr ;
  107. char                            *sys_errlist[] ;
  108. # endif
  109.  
  110. /* SYSPERROR - Reports a system defined error msg and then exits gracefully */
  111. sysperror ()
  112. {
  113.     extern int              errno ;
  114.     extern int              sys_nerr ;
  115.     extern char             *sys_errlist[] ;
  116.  
  117.     if ( 0 < errno && errno < sys_nerr )
  118.         fprintf( stderr, " : %s", sys_errlist[errno] ) ;
  119.     (void)fputc( '\n', stderr ) ;
  120.     exit( 1 ) ;
  121. }
  122.  
  123. /* STRSAVE - Store a string in core for later use. */
  124. char    *strsave ( cp )
  125.  
  126. register char                   *cp ;
  127.  
  128. {
  129.     register char           *chp ;
  130.     char                    *getcore(), *strcpy() ;
  131.  
  132.     chp = getcore( strlen( cp ) + 1 ) ;
  133.     (void)strcpy( chp, cp ) ;
  134.     return ( chp ) ;
  135. }
  136.  
  137. /* GETCORE - Allocate and return a pointer to the asked for amount of core */
  138. char    *getcore ( size )
  139.  
  140. register int                    size ;
  141.  
  142. {
  143.     register char           *chp ;
  144.     char                    *malloc() ;
  145.  
  146.     if ( chp = malloc( (unsigned)size ) )
  147.         return ( chp ) ;
  148.     fprintf( stderr, "sps - Out of core" ) ;
  149.     sysperror() ;
  150.     /* NOTREACHED */
  151. }
  152.  
  153. union flaglist  *getflgsp ( argc )
  154.  
  155. register int                    argc ;
  156.  
  157. {
  158.     char                    *getcore() ;
  159.  
  160.     return ( (union flaglist*)getcore( sizeof( union flaglist )*argc ) ) ;
  161. }
  162.  
  163. /* PREXIT - Print an error message and exit */
  164. /* VARARGS */
  165. /* ARGSUSED */
  166. prexit ( va_alist )
  167.  
  168. va_dcl
  169.  
  170. {
  171.     char                    *fmt ;
  172.     va_list                  args ;
  173.  
  174.     va_start( args ) ;
  175.     fmt = va_arg( args, char * ) ;
  176.  
  177.     vfprintf( stderr, fmt, args ) ;
  178.     exit( 1 ) ;
  179. }
  180.  
  181. # ifndef VPRINTF
  182.  
  183. int vfprintf ( filep, fmt, args )
  184.  
  185. FILE                            *filep ;
  186. char                            *fmt ;
  187. va_list                          args ;
  188.  
  189. {
  190.     _doprnt( fmt, args, filep ) ;    
  191.     return( ferror( filep ) ? EOF : 0 ) ;
  192. }
  193.  
  194. # endif
  195.