(root)/
xz-5.4.5/
src/
common/
tuklib_progname.c
       1  ///////////////////////////////////////////////////////////////////////////////
       2  //
       3  /// \file       tuklib_progname.c
       4  /// \brief      Program name to be displayed in messages
       5  //
       6  //  Author:     Lasse Collin
       7  //
       8  //  This file has been put into the public domain.
       9  //  You can do whatever you want with this file.
      10  //
      11  ///////////////////////////////////////////////////////////////////////////////
      12  
      13  #include "tuklib_progname.h"
      14  #include <string.h>
      15  
      16  
      17  #ifndef HAVE_PROGRAM_INVOCATION_NAME
      18  char *progname = NULL;
      19  #endif
      20  
      21  
      22  extern void
      23  tuklib_progname_init(char **argv)
      24  {
      25  #ifdef TUKLIB_DOSLIKE
      26  	// On these systems, argv[0] always has the full path and .exe
      27  	// suffix even if the user just types the plain program name.
      28  	// We modify argv[0] to make it nicer to read.
      29  
      30  	// Strip the leading path.
      31  	char *p = argv[0] + strlen(argv[0]);
      32  	while (argv[0] < p && p[-1] != '/' && p[-1] != '\\')
      33  		--p;
      34  
      35  	argv[0] = p;
      36  
      37  	// Strip the .exe suffix.
      38  	p = strrchr(p, '.');
      39  	if (p != NULL)
      40  		*p = '\0';
      41  
      42  	// Make it lowercase.
      43  	for (p = argv[0]; *p != '\0'; ++p)
      44  		if (*p >= 'A' && *p <= 'Z')
      45  			*p = *p - 'A' + 'a';
      46  #endif
      47  
      48  	progname = argv[0];
      49  	return;
      50  }