home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / graphics-0.17 / dist-stat / getname.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-11-13  |  1.7 KB  |  93 lines

  1. /*
  2.  * $Header: /files1/home/toy/src/stat/RCS/getname.c,v 1.2 90/09/02 11:15:50 toy Exp $
  3.  * NAME
  4.  *    get_my_name
  5.  *
  6.  * SYNOPSIS
  7.  *    const char *get_my_name(argv, def_name)
  8.  *    const char    *argv;
  9.  *    const char    *def_name;
  10.  *
  11.  * DESCRIPTION
  12.  *    Return the name of the current program, or set it to
  13.  *    a default name.  "argv" should be set to argv[0] in the
  14.  *    main program.  If argv is NULL, then the default name
  15.  *    "def_name" is used.
  16.  *
  17.  * HISTORY
  18.  * $Log:    getname.c,v $
  19.  * Revision 1.2  90/09/02  11:15:50  toy
  20.  * Added support for MSDOS
  21.  *
  22.  * Revision 1.1  90/09/01  11:35:03  toy
  23.  * Initial revision
  24.  *
  25.  */
  26.  
  27. #if    defined(__STDC__) || defined(__GNUC__)
  28. #include <stddef.h>
  29. #include <string.h>
  30. #else
  31. #include <stdio.h>
  32. #include <string.h>
  33. #endif
  34.  
  35. #ifdef    BSD
  36. #define    strrchr(s, c)    index(s, c)
  37. #endif
  38.  
  39. #ifndef    lint
  40. static char RCSID[] = "@(#) $Id: getname.c,v 1.2 90/09/02 11:15:50 toy Exp $";
  41. #endif
  42.  
  43. #if    defined(__TURBOC__) || defined(MSDOS)
  44. #define    PATH_SEP    '\\'
  45. #include <stdlib.h>
  46. extern char *strlwr (char *s);
  47. #else
  48. #define    PATH_SEP    '/'
  49. #endif
  50.  
  51. #if    defined(__STDC__) || defined(__GNUC__)
  52. char *
  53. get_my_name (char *argv, const char *def_name)
  54. #else
  55. char *
  56. get_my_name (argv, def_name)
  57.      char *argv;        /* argv[0] in main     */
  58.      char *def_name;        /* Default name         */
  59. #endif
  60. {
  61.   char *name;
  62.  
  63.   if (argv == NULL)
  64.     {
  65.       name = (def_name != NULL) ? def_name : "Unknown??";
  66.     }
  67.   else
  68.     {
  69.       name = strrchr (argv, PATH_SEP);
  70.       if (name == NULL)
  71.     {
  72.       name = argv;
  73.     }
  74.       else
  75.     {
  76.       name++;
  77.     }
  78. #if    defined(__TURBOC__) || defined(MSDOS)
  79.       {
  80.     char *name_buf;
  81.     name_buf = malloc (strlen (name) + 1);
  82.     strcpy (name_buf, name);
  83.     *strrchr (name_buf, '.') = '\0';
  84.     (void) strlwr (name_buf);
  85.     strcpy (argv, name_buf);
  86.     free (name_buf);
  87.       }
  88. #endif
  89.     }
  90.  
  91.   return name;
  92. }
  93.