| [683] | 1 | #include <SIOUX.h> | 
|---|
|  | 2 | #include <stdlib.h> | 
|---|
|  | 3 | #include <stdio.h> | 
|---|
|  | 4 | #include <string.h> | 
|---|
|  | 5 | #include "unixmac.h" | 
|---|
|  | 6 | #include "Files.h" | 
|---|
|  | 7 | #include <LowMem.h> | 
|---|
|  | 8 | #include "sys/time.h" | 
|---|
|  | 9 | #include "console.h" | 
|---|
|  | 10 |  | 
|---|
|  | 11 | int _wakeup = 0; | 
|---|
|  | 12 | int macSleepTicks = 10; | 
|---|
|  | 13 | int macRunTicks = 5; | 
|---|
|  | 14 | static long int macLastTicks = 0; | 
|---|
|  | 15 |  | 
|---|
|  | 16 | /*int utimes(char* fn, void*) | 
|---|
|  | 17 | { | 
|---|
|  | 18 | FileParam pb; | 
|---|
|  | 19 | char pfn[256]; | 
|---|
|  | 20 | strncpy(pfn, fn, 255); | 
|---|
|  | 21 | c2pstr(pfn); | 
|---|
|  | 22 |  | 
|---|
|  | 23 | pb.ioCompletion = NULL; | 
|---|
|  | 24 | pb.ioVRefNum = NULL; | 
|---|
|  | 25 | pb.ioFVersNum = 0; | 
|---|
|  | 26 | pb.ioFDirIndex = 0; | 
|---|
|  | 27 | pb.ioNamePtr = (StringPtr) &pfn; | 
|---|
|  | 28 |  | 
|---|
|  | 29 | PBGetFInfo((ParmBlkPtr)&pb, FALSE); | 
|---|
|  | 30 |  | 
|---|
|  | 31 | GetDateTime(&(pb.ioFlMdDat)); | 
|---|
|  | 32 |  | 
|---|
|  | 33 | PBSetFInfo((ParmBlkPtr)&pb, FALSE); | 
|---|
|  | 34 | return 0; | 
|---|
|  | 35 | } | 
|---|
|  | 36 |  | 
|---|
|  | 37 | */ | 
|---|
|  | 38 | /* | 
|---|
|  | 39 | unsigned int sleep(unsigned int secs) | 
|---|
|  | 40 | { | 
|---|
|  | 41 | unsigned long int startTime, endTime, sleepTime, time; | 
|---|
|  | 42 | EventRecord theEvent; | 
|---|
|  | 43 | GetDateTime(&startTime); | 
|---|
|  | 44 | endTime = startTime + secs; | 
|---|
|  | 45 | time = startTime; | 
|---|
|  | 46 | while ((time < endTime) && !_wakeup) { | 
|---|
|  | 47 | sleepTime = 60 * (endTime - time); | 
|---|
|  | 48 | if (WaitNextEvent(everyEvent, &theEvent,sleepTime,0)) | 
|---|
|  | 49 | SIOUXHandleOneEvent(&theEvent); | 
|---|
|  | 50 | GetDateTime(&time); | 
|---|
|  | 51 | } | 
|---|
|  | 52 | return 0; | 
|---|
|  | 53 | } | 
|---|
|  | 54 | */ | 
|---|
|  | 55 |  | 
|---|
|  | 56 | void yield() | 
|---|
|  | 57 | { | 
|---|
|  | 58 | EventRecord theEvent; | 
|---|
|  | 59 | long int ticks = LMGetTicks(); | 
|---|
|  | 60 | if (ticks - macLastTicks >= macRunTicks) { | 
|---|
|  | 61 | if (WaitNextEvent(everyEvent, &theEvent,macSleepTicks,0)) | 
|---|
|  | 62 | SIOUXHandleOneEvent(&theEvent); | 
|---|
|  | 63 | macLastTicks = LMGetTicks(); | 
|---|
|  | 64 | } | 
|---|
|  | 65 | } | 
|---|
|  | 66 |  | 
|---|
|  | 67 | pid_t fork() | 
|---|
|  | 68 | { | 
|---|
|  | 69 | return 0; | 
|---|
|  | 70 | } | 
|---|
|  | 71 |  | 
|---|
|  | 72 | int link(char*, char*) {return 0;} | 
|---|
|  | 73 | char* sys_errlist[1]; | 
|---|
|  | 74 |  | 
|---|
|  | 75 |  | 
|---|
|  | 76 | void InitToolBox() | 
|---|
|  | 77 | { | 
|---|
|  | 78 | InitGraf(&qd.thePort);                // Toolbox Managers | 
|---|
|  | 79 | InitFonts(); | 
|---|
|  | 80 | InitWindows(); | 
|---|
|  | 81 | InitMenus(); | 
|---|
|  | 82 | TEInit(); | 
|---|
|  | 83 | InitDialogs(nil); | 
|---|
|  | 84 | } | 
|---|
|  | 85 |  | 
|---|
|  | 86 | #ifdef __mac__ | 
|---|
|  | 87 | #define SEP ':' | 
|---|
|  | 88 | #else | 
|---|
|  | 89 | #define SEP '/' | 
|---|
|  | 90 | #endif | 
|---|
|  | 91 |  | 
|---|
|  | 92 | char * basename(char * path) | 
|---|
|  | 93 | { | 
|---|
|  | 94 | char* p = path; | 
|---|
|  | 95 | while (*p) p++; | 
|---|
|  | 96 | while (p>=path && *p != SEP) p--; | 
|---|
|  | 97 | p++; | 
|---|
|  | 98 | return p; | 
|---|
|  | 99 | } | 
|---|
|  | 100 |  | 
|---|
|  | 101 | int kill(int , int ) {return 0;} | 
|---|
|  | 102 |  | 
|---|
|  | 103 | int gettimeofday(struct timeval *tp, struct timezone */*tzp*/) | 
|---|
|  | 104 | { | 
|---|
|  | 105 | tp->tv_usec = 0; | 
|---|
|  | 106 | tp->tv_sec = time(NULL); | 
|---|
|  | 107 | return 0; | 
|---|
|  | 108 | } | 
|---|
|  | 109 |  | 
|---|
|  | 110 | #define MAX_ARGS 100 | 
|---|
|  | 111 |  | 
|---|
|  | 112 | static char                     argStr[65535]; | 
|---|
|  | 113 | static char             *argv[MAX_ARGS + 1]; | 
|---|
|  | 114 |  | 
|---|
|  | 115 |  | 
|---|
|  | 116 | static int ParseArgs(char *s) | 
|---|
|  | 117 | { | 
|---|
|  | 118 | int  n = 1, Quote = 0; | 
|---|
|  | 119 | char *p = s, *p1, c; | 
|---|
|  | 120 |  | 
|---|
|  | 121 | p1 = (char *) argStr; | 
|---|
|  | 122 | while ((c = *p++) != 0) { | 
|---|
|  | 123 | if (c==' ') continue; | 
|---|
|  | 124 | argv[n++] = p1; | 
|---|
|  | 125 | if (n > MAX_ARGS)                               /* mm 970404 */ | 
|---|
|  | 126 | return (n-1);                           /* mm 970404 */ | 
|---|
|  | 127 | do { | 
|---|
|  | 128 | if (c=='\\' && *p++) | 
|---|
|  | 129 | c = *p++; | 
|---|
|  | 130 | else | 
|---|
|  | 131 | if ((c=='"') || (c == '\'')) { | 
|---|
|  | 132 | if (!Quote) { | 
|---|
|  | 133 | Quote = c; | 
|---|
|  | 134 | continue; | 
|---|
|  | 135 | } | 
|---|
|  | 136 | if (c == Quote) { | 
|---|
|  | 137 | Quote = 0; | 
|---|
|  | 138 | continue; | 
|---|
|  | 139 | } | 
|---|
|  | 140 | } | 
|---|
|  | 141 | *p1++ = c; | 
|---|
|  | 142 | } while (*p && ((c = *p++) != ' ' || Quote)); | 
|---|
|  | 143 | *p1++ = 0; | 
|---|
|  | 144 |  | 
|---|
|  | 145 | } | 
|---|
|  | 146 | return n; | 
|---|
|  | 147 |  | 
|---|
|  | 148 | } | 
|---|
|  | 149 |  | 
|---|
|  | 150 | int xccommand(char ***arg) | 
|---|
|  | 151 | { | 
|---|
|  | 152 | long len; | 
|---|
|  | 153 | char* argument; | 
|---|
|  | 154 | int n = ccommand(arg); | 
|---|
|  | 155 | if (n==1 && (*arg)[1][0] == '@') { | 
|---|
|  | 156 | FILE* f = fopen((*arg)[1]+1,"r"); | 
|---|
|  | 157 | fseek(f, 0, SEEK_END); | 
|---|
|  | 158 | len = ftell(f); | 
|---|
|  | 159 | fseek(f, 0, SEEK_SET); | 
|---|
|  | 160 | argument = (char*) malloc(len+1); | 
|---|
|  | 161 | fread(argument, 1, len, f); | 
|---|
|  | 162 | n = ParseArgs(argument); | 
|---|
|  | 163 | } | 
|---|
|  | 164 | return n; | 
|---|
|  | 165 | } | 
|---|
|  | 166 |  | 
|---|