home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / cprog / actlib12.zip / TOOLS.ZIP / CONFIG.C < prev    next >
C/C++ Source or Header  |  1993-02-25  |  2KB  |  85 lines

  1. /*  Copyright (C) 1993   Marc Stern  (internet: stern@mble.philips.be)  */
  2.  
  3. #include "tools.h"
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <dos.h>
  7.  
  8.  
  9.  
  10. /***
  11.  *
  12.  *  Function   :    load_cfg
  13.  *
  14.  *  Topics     :    Load configuration from a file.
  15.  *
  16.  *  Decisions  :    The file has the same name as the parameter 'name'
  17.  *                  but with extension .CFG
  18.  *                  If configuration file is not found, result is unchanged.
  19.  *
  20.  *  Parameters :    in   char * name        filename
  21.  *                  out  void * config      ptr to variable containing configuration
  22.  *                  in   size_t size        size of data to read
  23.  *
  24.  *  Return     :    number of bytes read
  25.  *                  -1 if file was not found
  26.  *
  27.  ***/
  28.  
  29.  
  30. int load_cfg( const char *name, void *config, size_t bsize )
  31.  
  32. { char cfgname[_MAX_PATH], drive[_MAX_DRIVE], dir[_MAX_DIR], file[_MAX_FNAME], ext[_MAX_EXT];
  33.   FILE *cfgFile;
  34.   int r;
  35.  
  36.   _splitpath( name, drive, dir, file, ext );
  37.   _makepath( cfgname, drive, dir, file, "CFG" );
  38.  
  39.   cfgFile = fopen( cfgname, "rb" );
  40.   if ( ! cfgFile ) return -1;
  41.  
  42.   r = fread(config, 1, bsize, cfgFile);
  43.   fclose( cfgFile );
  44.   return r;
  45. }
  46.  
  47.  
  48. /***
  49.  *
  50.  *  Function   :    save_cfg
  51.  *
  52.  *  Topics     :    Save a configuration into a file.
  53.  *
  54.  *  Decisions  :    The file has the same name as the parameter 'name'
  55.  *                  but with extension .CFG
  56.  *
  57.  *  Parameters :    in   char * name        filename
  58.  *                  in   void * config      ptr to variable containing configuration
  59.  *                  in   size_t size        size of data to write
  60.  *
  61.  *  Return     :    number of bytes written
  62.  *                  -1 if file was not found
  63.  *
  64.  ***/
  65.  
  66.  
  67. int save_cfg( const char *name, const void *config, size_t bsize )
  68.  
  69. { char cfgname[_MAX_PATH], drive[_MAX_DRIVE], dir[_MAX_DIR], file[_MAX_FNAME], ext[_MAX_EXT];
  70.   FILE *cfgFile;
  71.   int r;
  72.  
  73.   _splitpath( name, drive, dir, file, ext );
  74.   _makepath( cfgname, drive, dir, file, "CFG" );
  75.  
  76.   cfgFile = fopen( cfgname, "wb" );
  77.   if ( ! cfgFile ) return -1;
  78.  
  79.   r = fwrite(config, 1, bsize, cfgFile);
  80.   fclose( cfgFile );
  81.   return r;
  82. }
  83.  
  84.  
  85.