// File : /adm/simul_efun/user_path.c // Creator : Someone@TMI (Sometime) // // Modified for student directory use by Watcher@TMI-2 (5/93) // Mobydick added the is_user_path() function, 93-11-1. #include <config.h> #include <daemons.h> string user_path(string name) { if(!name) return ""; if(STUDENT_D->query_student(name)) return ("/student/" + name + "/"); return sprintf("/u/%c/%s/", name[0], name); } // This simul_efun takes a path and an optional name. If the name arg // is passed, then it returns 1 if path is (name)'s directory and 0 if // not. If no name is passed, it returns the name of the wizard if path // is a valid directory for some user, and returns 0 if not. // Note that it does not check whether that user is actually a wizard, // or whether the directory exists or not. It only checks if the path // can be mapped to a name, and if some player of that name exists. varargs mixed is_user_path (string path, string name) { string s1,s2 ; if (name) { if (sscanf(path,"/u/%s/%s",s1,s2)!=2) { if (!STUDENT_D->query_student(name)) return 0 ; if (sscanf(path,"/student/%s",s1)!=1) return 0 ; if (s1!=name) return 0 ; return 1 ; } if (s1[0] != s2[0]) return 0; if (s2!=name) return 0 ; return 1 ; } if (sscanf(path,"/student/%s",s1)==1) { if (STUDENT_D->query_student(s1)) return s1 ; return 0 ; } if (sscanf(path,"/u/%s/%s",s1,s2)!=2) return 0 ; if (s1[0] != s2[0]) return 0; if (!user_exists(s2)) return 0 ; return s2 ; }