/* Raydium - CQFD Corp. http://raydium.org/ License: GPL - GNU General Public License, see "gpl.txt" file. */ // ------------- // doc // mania_drive ! (current "home" functions, and network [net tracks & lan]) #ifndef DONT_INCLUDE_HEADERS #include "index.h" #else #include "headers/path.h" #endif #include "path.h" int raydium_path_find_free(void) { int i; for(i=0;i=2 && ext[0]=='*' && ext[1]=='.') ext+=2; strcpy(raydium_path_paths[id].ext,ext); strcpy(raydium_path_paths[id].path,dir); if(dir[strlen(dir)-1]=='/') raydium_path_paths[id].path[strlen(dir)-1]=0; raydium_path_paths[id].mode=RAYDIUM_PATH_MODE_READ; raydium_path_paths[id].state=1; return 1; } signed char raydium_path_add(char *dir) { int id; id=raydium_path_find_free(); if(id<0) { raydium_log("path: ERROR: no more free path slot"); return 0; } if(dir==NULL || strlen(dir)==0) { raydium_log("path: ERROR: directory name is not valid"); return 0; } if(strchr(dir,'*')) { char path[RAYDIUM_MAX_DIR_LEN]; char ext[RAYDIUM_MAX_DIR_LEN]; raydium_file_dirname(path,dir); raydium_file_basename(ext,dir); return raydium_path_ext(path,ext); } strcpy(raydium_path_paths[id].path,dir); if(dir[strlen(dir)-1]=='/') raydium_path_paths[id].path[strlen(dir)-1]=0; raydium_path_paths[id].mode=RAYDIUM_PATH_MODE_READ; raydium_path_paths[id].state=1; raydium_path_paths[id].ext[0]=0; return 1; } signed char raydium_path_write(char *dir) { if(!raydium_file_directory_writable(dir)) { raydium_log("path: ERROR: '%s' is not a writable directory !",dir); return 0; } strcpy(raydium_path_write_current,dir); if(dir[strlen(dir)-1]=='/') raydium_path_write_current[strlen(dir)-1]=0; return 1; } signed char raydium_path_string_from(char *str) { // cut the string on ':' char part[RAYDIUM_MAX_DIR_LEN]; char *c; int end; signed char last=0; if(!str || strlen(str)==0) return 0; raydium_path_reset(); do { if((c=strchr(str,':'))) end=c-str; else { end=strlen(str); last=1; } strncpy(part,str,end); part[end]=0; raydium_path_add(part); str+=(end+1); } while(!last); return 1; } int raydium_path_string_to(char *out) { int i; out[0]=0; for(i=0;i