\r
#include "main.h"\r
#include "util.h"\r
+#include "gui.h"\r
+\r
+// macros\r
+\r
+#define StringSize 4096\r
\r
// variables\r
\r
//line buffering doesn't work too well in MSVC and/or windows \r
if (LogFile != NULL) setvbuf(LogFile,NULL,_IOLBF,0); // line buffering\r
#endif\r
+ if(LogFile!=NULL){\r
+ my_log("POLYGLOT *** LOGFILE OPENED ***\n");\r
+ }\r
+\r
}\r
\r
// my_log_close()\r
\r
CONSTRUCT_ARG_STRING(format,string);\r
\r
- fprintf(stderr,"%s",string);\r
my_log("POLYGLOT %s",string);\r
+ // This should be gui_send but this does not work.\r
+ // Why?\r
+\r
+ printf("tellusererror POLYGLOT: %s",string);\r
\r
if (Error) { // recursive error\r
my_log("POLYGLOT *** RECURSIVE ERROR ***\n");\r
exit(EXIT_FAILURE);\r
// abort();\r
} else {\r
- Error = TRUE;\r
- quit();\r
+ Error = TRUE;\r
+ quit();\r
}\r
}\r
\r
return TRUE;\r
}\r
\r
+// my_file_join()\r
+\r
+void my_path_join(char *join_path, const char *path, const char *file){\r
+ char separator;\r
+#ifdef _WIN32\r
+ separator='\\';\r
+#else\r
+ separator='/';\r
+#endif\r
+ snprintf(join_path,StringSize,"%s%c%s",path,separator,file);\r
+ join_path[StringSize-1]='\0';\r
+}\r
+\r
+// my_mkdir()\r
+\r
+int my_mkdir(const char *path){\r
+ int ret;\r
+#ifdef _WIN32\r
+ ret=_mkdir(path);\r
+#else\r
+ ret=mkdir(path,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);\r
+#endif\r
+ return ret;\r
+}\r
+\r
+\r
// my_string_empty()\r
\r
bool my_string_empty(const char string[]) {\r
return FALSE;\r
}\r
\r
+// my_strtolower()\r
+\r
+void my_string_tolower(char *dst, const char *src){\r
+ int c;\r
+ ASSERT(src!=NULL);\r
+ ASSERT(dst!=NULL);\r
+ while((c=*(src++))){\r
+ *dst=tolower(c);\r
+ dst++;\r
+ }\r
+ *(dst++)='\0';\r
+}\r
+\r
+// my_string_case_contains()\r
+\r
+const char* my_string_case_contains(const char string_1[], const char string_2[]){\r
+ \r
+ char tmp1[StringSize];\r
+ char tmp2[StringSize];\r
+ char *where;\r
+\r
+\r
+ ASSERT(string_1!=NULL);\r
+ ASSERT(string_2!=NULL);\r
+\r
+ my_string_tolower(tmp1,string_1);\r
+ my_string_tolower(tmp2,string_2);\r
+\r
+ where=strstr(tmp1,tmp2);\r
+ if(where){\r
+ return string_1+(where-tmp1);\r
+ }\r
+ return NULL;\r
+\r
+ \r
+}\r
+\r
+\r
// my_strdup()\r
\r
char * my_strdup(const char string[]) {\r
*variable = my_strdup(string);\r
}\r
\r
+// now_real()\r
+\r
double now_real() {\r
#ifndef _WIN32\r
struct timeval tv[1];\r
}\r
\r
\r
+void my_dequote(char *out, const char *in, const char *special){\r
+ const char *p; \r
+ char *q;\r
+ char c;\r
+ p=in;\r
+ q=out;\r
+ while((c=*(p++))){\r
+ if(c=='\\' && strchr(special,*p)){\r
+ *(q++)=*(p++);\r
+ }else{\r
+ *(q++)=c;\r
+ }\r
+ }\r
+ *q='\0';\r
+}\r
+\r
+void my_quote(char *out, const char *in, const char *special){\r
+ const char *p;\r
+ char *q;\r
+ char c;\r
+ p=in;\r
+ q=out;\r
+ while(q-out< StringSize-2 && (c=*(p++))){\r
+ if(c=='\\'){\r
+ if(*p!=0 && strchr(special,*p)){\r
+ *(q++)='\\';\r
+ }\r
+ }else if(strchr(special,c)){\r
+ *(q++)='\\';\r
+ }\r
+ *(q++)=c;\r
+ }\r
+ *q='\0';\r
+}\r
\r
+\r
+void my_sleep(int msec){\r
+#ifndef _WIN32\r
+ struct timespec tm;\r
+ tm.tv_sec=msec/1000;\r
+ tm.tv_nsec=1000000*(msec%1000);\r
+ nanosleep(&tm,NULL);\r
+#else\r
+ Sleep(msec);\r
+#endif\r
+}\r