char *cd_cleanpath(char *path) { t_dlist *lst; t_dlist *clean; char cpath[2048]; char *pref; if (!ft_strcmp("-", path)) { if (!(path = ft_getenv("OLDPWD"))) cd_exit("OLDPWD needed in the environment"); return (ft_strdup(path)); } else if (*path != '/') { if (!(pref = ft_getenv("PWD"))) cd_exit("PWD needed in the environment"); ft_sprintf(cpath, "%s/%s/", pref, path); } else ft_sprintf(cpath, "%s/", path); if (!(lst = makelst(cpath))) return (NULL); if (!(clean = ft_dlstmap(lst, cleanlst))) return (NULL); ft_dlstdel(&lst, NULL); clean = cleanlstparent(clean); return (convertlst(&clean)); }
/* * Main procedure loops over user requests. */ int main() { int i = 0 ; char c ; // Command Read From Input. // Open CD ROM Drive. if ( cd_init() < 0 ) { show_error( ERROR, cd_error ) ; return 1; } // Shows possible commands. show_usage(); // While Not Quit. while ((c = read_cmd()) != 'q' ) { if (( i = valid_cmd( c )) == -1 ) { printf("Unrecognised command: `%c'\n", c ) ; } else { (*myCmdStruct[i].func)() ; } } // Stop Device. cd_exit(); return 0 ; }
char *cd_currentrep(void) { char *rep; if (!(rep = ft_getenv("HOME"))) cd_exit("HOME needed in the environment"); return (rep); }
int chdir_wrapper(char *path, char *rep) { char msg[1024]; if (!chdir(path)) return (0); ft_snprintf(msg, 1024, "Permission denied: %s", rep); cd_exit(msg); return (-1); }
int access_wrapper(char *path, char *rep) { char msg[1024]; if (!access(path, F_OK)) return (0); ft_snprintf(msg, 1024, "No such directory: %s", rep); cd_exit(msg); return (-1); }
char *getcwd_wrapper(void) { char *cwd; char msg[1024]; if ((cwd = getcwd(NULL, 0))) return (cwd); ft_snprintf(msg, 1024, "Can't get Current Working Dir via SysCall"); cd_exit(msg); return (NULL); }
void AGSDOS::ShutdownCDPlayer() { cd_exit(); }
void AGSMac::ShutdownCDPlayer() { cd_exit(); }
int main() { char cmd[20]; int done = 0; int ret, trk, a, b; if (cd_init() < 0) { printf("Error initialising libcda (%s)\n", cd_error); return 1; } show_cmds(); do { printf(">>> "); fflush(stdout); scanf("%s", cmd); switch (cmd[0]) { case '?': show_cmds(); break; case 'p': trk = input_int("Track"); ret = cd_play(trk); if (ret != 0) printf("Error occurred (%s)\n", cd_error); break; case 'r': a = input_int("First track"); b = input_int("Last track"); ret = cd_play_range(a, b); if (ret != 0) printf("Error occurred (%s)\n", cd_error); break; case 'f': trk = input_int("Start track"); ret = cd_play_from(trk); if (ret != 0) printf("Error occurred (%s)\n", cd_error); break; case 'P': trk = cd_current_track(); if (trk) printf("Playing track %d\n", trk); else printf("Not playing\n"); break; case 'w': cd_pause(); break; case 'W': cd_resume(); break; case 'S': ret = cd_is_paused(); if (ret) printf("Paused\n"); else printf("Not paused\n"); break; case 's': cd_stop(); break; case 'i': ret = cd_get_tracks(&a, &b); if (ret != 0) printf("Error occurred (%s)\n", cd_error); else printf("First track: %d\nLast track: %d\n", a, b); break; case 'a': trk = input_int("Track"); ret = cd_is_audio(trk); if (ret < 0) printf("Error occurred (%s)\n", cd_error); else printf("Track %d is %s\n", trk, (ret ? "audio" : "data")); break; case 'v': a = input_int("Left (0-255)"); b = input_int("Right (0-255)"); cd_set_volume(a, b); break; case 'V': cd_get_volume(&a, &b); printf("Left volume: %d\nRight volume: %d\n", a, b); break; case 'e': cd_eject(); break; case 'c': cd_close(); break; case 'q': done = 1; break; default: printf("Unrecognised command: `%c'\n", cmd[0]); } } while (!done); cd_exit(); return 0; }