home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / cprog / actlib12.zip / TOOLS.ZIP / PGMPATH.C < prev    next >
C/C++ Source or Header  |  1993-02-25  |  1KB  |  54 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. #ifdef _MSC_VER
  9. extern char __far *_pgmptr
  10. #else
  11. extern char **_argv;
  12. #endif
  13.  
  14.  
  15. /***
  16.  *  Function    :  getpgmpath
  17.  *
  18.  *  Description :  Transforms a filename into a full pathname
  19.  *                 relative to program directory.
  20.  *
  21.  *  Parameters  :  in/out   char *filename    input filename
  22.  *
  23.  *  Return      :  pointer to filename    
  24.  *
  25.  *  Precond     :  Global variable extern char **_argv must be defined
  26.  *                 and assign to argv in main( int argc, char *argv[] )
  27.  *                 Built-in in Borland
  28.  *                 Built-in in Microsoft (uses _pgmptr)
  29.  *
  30.  *  OS/Compiler :  MS-DOS version >= 3.0
  31.  ***/
  32.  
  33. char *getpgmpath( char *filename )
  34.  
  35. { char buffer[_MAX_PATH], *ptr;
  36.  
  37.   strcpy( buffer, filename );
  38. #ifdef _MSC_VER
  39.   strcpy( filename, _pgmptr );
  40. #else
  41.   strcpy( filename, _argv[0] );
  42. #endif
  43.   ptr = strrchr(filename, '\\');
  44.  
  45.   if ( ! ptr ) { strcpy( filename, buffer );
  46.                  return filename;
  47.                }
  48.  
  49.   strcpy( ptr + 1, buffer );
  50.   strupr( filename );
  51.  
  52.   return filename;
  53. }
  54.