/*--------------------------------------------------------------------------*/ BOOL IsTheGoodShell(void) { char shellCmd[PATH_MAX]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; strcpy(shellCmd, ""); strcpy(fname, ""); GetEnvironmentVariable("ComSpec", shellCmd, PATH_MAX); os_splitpath(shellCmd, drive, dir, fname, ext); if (_stricmp(fname, "cmd") == 0) { return TRUE; } return FALSE; }
pstr STDCALL os_filefullname( pstr filename, pstr result ) { pubyte ptr; #ifdef LINUX //ubyte exename[512]; //ubyte proname[ 512 ]; pstr p_drive,p_path,p_fname,p_fext,p_slesh; ubyte ffn_drive[FILENAME_MAX+1]; ubyte ffn_path[PATH_MAX+1]; ubyte ffn_fname[FILENAME_MAX+1]; ubyte ffn_fext[FILENAME_MAX+1]; os_splitpath(str_ptr(filename),ffn_drive,ffn_path,ffn_fname,ffn_fext); p_slesh = str_new((pubyte)"/"); if (strlen(ffn_path)==0) { char cur[512]; getcwd( cur, 512 ); p_path = str_new(cur); str_add(p_path,p_slesh); } else p_path = str_new(ffn_path); p_fname = str_new(ffn_fname); p_fext = str_new(ffn_fext); str_add(result,p_path); str_add(result,p_fname); str_add(result,p_fext); str_destroy(p_path); str_destroy(p_slesh); str_destroy(p_fname); str_destroy(p_fext); /* char cur[512]; if ( filename[0] != '/' ) { getcwd( cur, 512 ); chdir( filename ); basename( filename ); getcwd( str_ptr( ( pstr )buf ), 512 ); str_setlen( ( pstr )buf, strlen( str_ptr( ( pstr )buf ) ) ); str_appendb( buf, '/' ); str_appendp( buf, filename ); chdir( cur ); } else { //Ìîæåò ðàáîòàòü íåêîððåêòíî åñëè â àáñîëþòíîì ïóòè âñòðå÷àþòñÿ '.' '..' str_appendp( buf, filename ); } */ #else uint len; str_reserve( result, 512 ); len = GetFullPathName(str_ptr(filename), 512, str_ptr(result), &ptr ); // äëÿ Windows str_setlen(result, len); #endif return result; }