X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f Date: Thu, 31 May 2007 12:35:31 +0200 From: Robert Riebisch User-Agent: Thunderbird 1.5.0.12 (Windows/20070509) MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Finding a program's base directory Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 45 Message-ID: <465ea4ec$0$23146$9b4e6d93@newsspool1.arcor-online.net> Organization: Arcor NNTP-Posting-Date: 31 May 2007 12:35:24 CEST NNTP-Posting-Host: 2d2db171.newsspool1.arcor-online.net X-Trace: DXC=eb`?=4\QMO5_A0jCfgHO6>ic==]BZ:af>4Fo<]lROoR1Fl8W>\BH3Y2<2Wifi:>gf9B5lc^0gQ=41?lK5CCSWJM4k;WSL`n5Im2:0;EIU337C5A14d]]KebZ; X-Complaints-To: usenet-abuse AT arcor DOT de To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hi! I want to find a program's base directory. Program binary is in, e.g., `C:\PROGRAMS\FOO\BIN\BAR.EXE'. get_base_dir() is called with argv[0] in pgm and shall return `C:\PROGRAMS\FOO'. The following code works for me, but as I'm no C expert, I want you to have a look at it. Specifically I'm not sure about the `base_path != NULL' comparison. Is it necessary or just a waste? Thanks in advance! *** # ifdef __DJGPP__ # include int _crt0_startup_flags = _CRT0_FLAG_USE_DOS_SLASHES; # endif *** *** static char *get_base_dir(char *pgm) { static char base_path[MAX_PATH_LEN]; char *p; strncpy (base_path, pgm, MAX_PATH_LEN); if (base_path != NULL) { /* drop file name */ p = strrchr (base_path, '\\'); if (p != NULL) { *p = '\0'; /* drop also 'bin' */ p = strrchr (base_path, '\\'); if (p != NULL) *p = '\0'; } } return base_path; } *** -- Robert Riebisch Bitte NUR in der Newsgroup antworten! Please reply to the Newsgroup ONLY!