int show_volumes_menu(FileView *view) { TCHAR c; TCHAR vol_name[MAX_PATH]; TCHAR file_buf[MAX_PATH]; static menu_info m; init_menu_info(&m, VOLUMES, strdup("No volumes mounted")); m.title = strdup(" Mounted Volumes "); for(c = TEXT('a'); c < TEXT('z'); c++) { if(drive_exists(c)) { TCHAR drive[] = TEXT("?:\\"); drive[0] = c; if(GetVolumeInformation(drive, vol_name, MAX_PATH, NULL, NULL, NULL, file_buf, MAX_PATH)) { char item_buf[MAX_PATH + 5]; snprintf(item_buf, sizeof(item_buf), "%s %s ", drive, vol_name); m.len = add_to_string_array(&m.items, m.len, 1, item_buf); } } } return display_menu(&m, view); }
bool OSD::CheckPathAccess (const char* pcszPath_) { #if defined(ALLEGRO_DOS) return (strlen(pcszPath_) > 3) ? true : drive_exists(pcszPath_[0]-'A') && !access(pcszPath_, D_OK); #endif return !access(pcszPath_, X_OK); }
int is_path_well_formed(const char *path) { #ifndef _WIN32 return strchr(path, '/') != NULL; #else return is_unc_path(path) || (strlen(path) >= 2 && path[1] == ':' && drive_exists(path[0])); #endif }
/* count_disks: * Counts the number of valid drives. */ static int count_disks() { int c, i; c = 0; for (i=0; i<26; i++) if (drive_exists(i)) c++; return c; }
/* get_x_drive: * Returns the drive letter matching the specified list index. */ static int get_x_drive(int index) { int c, i; c = 0; for (i=0; i<26; i++) { if (drive_exists(i)) { c++; if (c==index) return i; } } return -1; }
/* fs_dlist_proc: * Dialog procedure for the file selector disk list. */ static int fs_dlist_proc(int msg, DIALOG *d, int c) { char *s = file_selector[FS_EDIT].dp; int ret, i, temp; if (msg == MSG_START) { d->d1 = d->d2 = 0; temp = utoupper(ugetc(s)); if (((temp >= 'A') && (temp <= 'Z')) && (ugetat(s, 1) == DEVICE_SEPARATOR)) { temp -= 'A'; for (i=0; i<temp; i++) if (drive_exists(i)) d->d1++; } } ret = d_text_list_proc(msg, d, c); if (ret == D_CLOSE) { temp = 'A' + get_x_drive(d->d1+1); if ((temp < 'A') || (temp > 'Z')) temp = 'C'; s += usetc(s, temp); s += usetc(s, DEVICE_SEPARATOR); s += usetc(s, OTHER_PATH_SEPARATOR); usetc(s, 0); scare_mouse(); SEND_MESSAGE(file_selector+FS_FILES, MSG_START, 0); SEND_MESSAGE(file_selector+FS_FILES, MSG_DRAW, 0); SEND_MESSAGE(file_selector+FS_EDIT, MSG_START, 0); SEND_MESSAGE(file_selector+FS_EDIT, MSG_DRAW, 0); unscare_mouse(); return D_O_K; } return ret; }