00001
00002
00003
00004
00005
00006
00007
00008
00009 class SystemDataClass {
00010 public:
00011
00012 BOOL IgnoreExceptions[256];
00013 char *ExceptionMsgs[256];
00014 Thread *MainThread;
00015 BOOL KeysStatus[256];
00016 BOOL b_trace;
00017 Window *ActiveWindow;
00018
00019
00020 Font *fnt;
00021 Mouse *mouse;
00022
00023 Bitmap *icon_file;
00024 Bitmap *icon_folder;
00025 Bitmap *icon_drive;
00026 Bitmap *icon_plus;
00027 Bitmap *icon_minus;
00028
00029 Bitmap *icon_parentpath;
00030 Bitmap *icon_makepath;
00031 };
00032
00033 extern SystemDataClass *SystemData;
00034
00035
00036 #define FR_FLG_WHOLE 1
00037 #define FR_FLG_CASE 2
00038
00039 #define FR_EVENT_FIND 1 //FindDialog(), ReplaceDialog()
00040 #define FR_EVENT_REPLACE 2 //ReplaceDialog() only
00041 #define FR_EVENT_REPLACEALL 3 //ReplaceDialog() only
00042
00043 class FindReplaceDialogCallback {
00044 public:
00045 virtual BOOL Event(char *findstr, char *newstr, int event, int flgs);
00046 };
00047
00048 class SystemCode {
00049 public:
00050 static void LoadResources();
00051
00052 static void DefaultExceptionHandler(uint8 except);
00053
00054 static void SetStackSize(uint32);
00055 static uint32 GetStackSize();
00056
00057 static void RaiseException(uint8 except);
00058
00059 static void IgnoreException(uint8 except, BOOL _ignore) {
00060 SystemData->IgnoreExceptions[except] = _ignore ? TRUE : FALSE;
00061 }
00062 static void SetExceptionMsg(uint8 except, char *msg);
00063 static char *GetExceptionMsg(uint8 except);
00064 static BOOL DefaultEventHandler(Element *id, int msg, int x, int y, int flgs);
00065 static BOOL DefaultEventHandler(Network *id, int msg, int x, int y, int flgs);
00066 static BOOL DefaultEventHandler(Thread *id, int msg, int x, int y, int flgs);
00067
00068 static void StaticSetLastErrorMsg(char *, ...);
00069 static char *StaticGetLastErrorMsg();
00070 static void StaticSetLastError(int code);
00071 static uint32 StaticGetLastError();
00072
00073 static BOOL GetUserName(String &s);
00074 static BOOL GetComputerName(String &s);
00075 static BOOL GetExecutableFilename(String &s);
00076
00077 static BOOL SetServiceStatus(BOOL state);
00078 static void ProcessQueue(BOOL wait4msg);
00079
00080
00081 static void WaitMessage();
00082 static BOOL IsQueueEmpty();
00083 static BOOL WakeThread(Thread *);
00084 static BOOL PostMessage(Thread *, uint32 msg, iPTR wParam, iPTR lParam);
00085 static BOOL PostMessage(Window *, uint32 msg, iPTR wParam, iPTR lParam);
00086 static BOOL CreateLink(char *PathObj, char *PathLink, char *WorkPath, char *Desc = (char*)NULL, char *Args = (char*)NULL);
00087 static BOOL CreateStartMenuItem(char *menupath, char *app, char *title, char *args = (char*)NULL);
00088
00089 static void ExpandEnvironmentStrings(String &str);
00090 static int CmpVersion(Version &v1, Version &v2);
00091
00092 static void DialogInit(Font *, Mouse *);
00093 static int Message(char *msg, char *title = "Application Message", char *t1 = "OK", char *t2 = NULL, char *t3 = NULL);
00094 static BOOL GetFileName(char *title, String &path, String &filename, char *types = (char*)NULL, int typeidx = 0, BOOL open = TRUE, BOOL folder = FALSE);
00095 static BOOL GetString(char *title, char *desc, String &str, char *badchars = (char*)NULL, char *goodchars = (char*)NULL);
00096 static BOOL FindDialog(char *title, String &str, FindReplaceDialogCallback *cb, int &flgs);
00097 static BOOL ReplaceDialog(char *title, String &oldstr, String &newstr, FindReplaceDialogCallback *cb, int &flgs);
00098
00099 static char *GetParameter(uint8 idx);
00100 static uint32 GetParameterCount();
00101
00102 static Thread *GetCurrentThread();
00103
00104 static void Exit(uint32 ExitCode = 0);
00105 static void ExitErrorMsg();
00106 static void ExitErrorMsg(char *msg,...);
00107
00108 static PTR MemAlloc(uint32 siz, uint32 flgs = 0);
00109 static PTR MemAllocZ(uint32 siz, uint32 flgs = 0);
00110 static PTR MemReAlloc(PTR ptr, uint32 siz);
00111 static PTR MemReAlloc(PTR *ptr, uint32 siz) { return (*ptr = MemReAlloc(*ptr, siz)); }
00112 static BOOL MemFree(PTR ptr);
00113 static uint32 MemAvailPhys();
00114 static uint32 MemAvailVir();
00115
00116 static PTR Lock(PTR);
00117 static BOOL Unlock(PTR);
00118 static char **GetEnvironmentStrings();
00119 static BOOL GetEnvironmentVariable(char *vname, String &ret);
00120 static BOOL SetEnvironmentVariable(char *vname, char *vdata);
00121 static BOOL IsWindowsNT();
00122
00123 #ifdef _CONSOLE
00124 static void Print(char *);
00125 static void DirectPrint(PTR, uint32 len);
00126 static void DirectPrint(char *);
00127 #endif
00128
00129 static char *strcpy(char *dest, const char *src);
00130 static char *strcpy(String &dest, const char *src);
00131 static char *strcat(char *dest, const char *src);
00132 static char *strcat(String &dest, const char *src);
00133 static int strcmp(const char *s1, const char *s2);
00134 static int stricmp(const char *s1, const char *s2);
00135 static char *strdup(const char *s);
00136 static char *strchr(char const *s, char c);
00137 static char *strrchr(char const *s, char c);
00138 static char *strset(char *s, char c);
00139 static int strlen(char const *s);
00140 static char *strupr(char *s);
00141 static char toupper(char);
00142 static char *strlwr(char *s);
00143 static char tolower(char);
00144 static void *memcpy(void *dest, void const *src, int len);
00145 static int memcmp(const void *s1, const void *s2, int len);
00146 static int memicmp(const void *s1, const void *s2, int len);
00147 static void *memchr(const void *s, char c, int len);
00148 static void *memset(void *s, uint8 c, int len);
00149 static void *memset16(void *s, uint16 c, int len);
00150 static void *memset24(void *s, uint32 c, int len);
00151 static void *memset32(void *s, uint32 c, int len);
00152 static int vsnprintf(char *, int, const char *, va_list arg);
00153 static int vsprintf(String &, const char *, va_list arg);
00154 static int vsprintf(char *, const char *, va_list arg);
00155 static int sprintf(String &, const char *, ...);
00156 static int sprintf(char *, const char *, ...);
00157 static int vprintf(const char *, va_list);
00158 static int printf(const char *, ...);
00159 static int strncmp(const char *s1, const char *s2, int len);
00160 static int strnicmp(const char *s1, const char *s2, int len);
00161
00162
00163 static uint32 atox(const char *);
00164 static uint32 atox64(const char *);
00165 static uint32 atou(const char *);
00166 static int atol(const char *);
00167 static int atoi(const char *);
00168
00169
00170 static void GetTime(Time *);
00171 static BOOL SetTime(Time *);
00172 static void Sleep(uint32);
00173 static uint32 GetSeconds();
00174
00175 static BOOL TerminateThread(Thread *x);
00176 static void TerminateProcess(uint32 ec);
00177 static BOOL GetExitCode(Thread *x, uint32 *ExitCode);
00178 static BOOL IsThreadActive(Thread *x);
00179 static uint32 GetThreadCount();
00180 static uint32 GetCurrentProcessId();
00181 static uint32 GetCurrentThreadId();
00182 static uint32 GetCurrentThreadHandle();
00183
00184
00185 static BOOL StartThread(Thread *);
00186 static BOOL StopThread(Thread *);
00187 static BOOL ResumeThread(Thread *);
00188 static BOOL PauseThread(Thread *);
00189
00190 static Thread *FindThread(uint32 handle);
00191
00192 static BOOL ExecuteFile(char *f, char *cmd = "open");
00193
00194 static BOOL SystemLogOff(BOOL force = FALSE);
00195 static BOOL SystemPowerOff(BOOL force = FALSE);
00196 static BOOL SystemReboot(BOOL force = FALSE);
00197 static BOOL SystemShutdown(BOOL force = FALSE);
00198
00199 static void ConvertPathStyle(char *);
00200
00201 static BOOL GetCurrentUser(String &s) { return GetUserName(s);}
00202 static BOOL LoginAsUser(char *user, char *pwd);
00203
00204 static BOOL UnixCrypt(char *textToEncrypt, String &output);
00205 static BOOL UnixCrypt(char *encryptionSalt, char *textToEncrypt, String &output);
00206
00207 static void SwapByteOrder(int16 &);
00208 static void SwapByteOrder(int32 &);
00209 static void SwapByteOrder(int64 &);
00210 static void SwapByteOrder(uint16 &);
00211 static void SwapByteOrder(uint32 &);
00212 static void SwapByteOrder(uint64 &);
00213 };
00214