This is amlib.c in view mode; [Download] [Up]
/* amlib.c by jolly */ #import <libc.h> #import <sys/dir.h> #import <sys/timeb.h> #import "precomp.h" void ftime(); /* insert you favourite melody here */ void play_beep(void) { ask("at+vbt=2+vts=a","OK"); } int play_message(char *name) { static DIR *dirp; static struct direct *dp; static struct timeb tb; int i=0,dlen=0; static char ownname[MAXPATHLEN]; strcpy(ownname,name); dirp = opendir(name); if(dirp==NULL) return ply_message(ownname); for(dp = readdir(dirp); dp != NULL; dp=readdir(dirp)) if(dp->d_namlen>Z_EXTLEN && !strcmp(Z_EXT,dp->d_name+dp->d_namlen-Z_EXTLEN)) dlen++; if(dlen<1) { log("no random message"); return Z_ERROR; } rewinddir(dirp); ftime(&tb); srandom((int)(tb.millitm)); dlen=random()%dlen; for(dp = readdir(dirp); dp != NULL; dp=readdir(dirp)) if(dp->d_namlen>Z_EXTLEN && !strcmp(Z_EXT,dp->d_name+dp->d_namlen-Z_EXTLEN) && dlen==i++) sprintf(ownname,"%s/%s",name,dp->d_name); closedir(dirp); ownname[strlen(ownname)-Z_EXTLEN]=0; return ply_message(ownname); } int play_all(char *name) { static DIR *dirp; static struct direct *dp; static char ownname[MAXPATHLEN]; static int olen; strcpy(ownname,name); strcat(ownname,"/"); olen=strlen(ownname); dirp = opendir(name); if(dirp==NULL) fatal("Directory called :%s vanished during runtime\n",name); for(dp = readdir(dirp); dp != NULL; dp=readdir(dirp)) if(dp->d_namlen>Z_EXTLEN && !strcmp(dp->d_name+dp->d_namlen-Z_EXTLEN,Z_EXT)) { strcpy(ownname+olen,dp->d_name); ownname[olen+dp->d_namlen-Z_EXTLEN]=0; ply_message(ownname); } closedir(dirp); return 0; } int record_message(char *name) { int ret; char newname[MAXPATHLEN]; sprintf(newname,"%s%s",name,Z_EXT); ret=rec_message(newname); if(ret>0) return ret; switch(ret) { case FAX : try_fax_connection(newname);exit(1); case SILENCE : ply_message(S_MODEMCALL); try_data_connection(newname);return EOC; case DATACALL : try_data_connection(newname);return EOC; case QUIET : ply_message(S_THANKYOU); shorten_file(newname); return EOC; case MAXTIME : return MAXTIME; default : return EOC; } log("never ever on %d",ret); return EOC; // never reached } /*************************************************************************************stuff */ int remove_message(char *name) { char newname[MAXPATHLEN]; sprintf(newname,"%s%s",name,Z_EXT); return remove(newname); } char * get_time(char *str) { time_t now; now=time(NULL); strftime(str,30,"%a_%H:%M:%S",localtime(&now)); return str; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.