ecere/net/HTTPFile; extras: Added https support; Promoted SSLSocket to ecere
[sdk] / compiler / bootstrap / ecere / bootstrap / String.c
index f39968a..1d2a221 100644 (file)
@@ -1,3 +1,4 @@
+/* Code generated from eC source file: String.ec */
 #if defined(__GNUC__)
 typedef long long int64;
 typedef unsigned long long uint64;
@@ -118,6 +119,8 @@ struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
 struct __ecereNameSpace__ecere__com__Class * templateClass;
 struct __ecereNameSpace__ecere__sys__OldList templatized;
 int numParams;
+unsigned int isInstanceClass;
+unsigned int byValueSystemClass;
 } __attribute__ ((gcc_struct));
 
 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
@@ -443,6 +446,8 @@ return 0x0;
 
 extern char *  strstr(const char * , const char * );
 
+extern void *  memcpy(void * , const void * , size_t size);
+
 extern int toupper(int);
 
 extern char *  strcat(char * , const char * );
@@ -455,20 +460,20 @@ unsigned int modified = 0x0;
 
 if(addedPath)
 {
-char fileName[797] = "", archiveName[797] = "", * file;
+char fileName[797] = "", archiveName[797] = "", * file = (((void *)0));
 int c = 0;
 unsigned int isURL = 0x0;
+unsigned int isArchive = __ecereNameSpace__ecere__sys__SplitArchivePath(string, archiveName, &file);
 char * urlFileName;
+char * protocolSymbol;
 
-if(__ecereNameSpace__ecere__sys__SplitArchivePath(string, archiveName, &file))
-strcpy(fileName, file);
-else
+strcpy(fileName, isArchive ? file : string);
+if(!isArchive)
 {
-strcpy(fileName, string);
-}
-if(strstr(string, "http://") == string)
+protocolSymbol = (fileName[0] && fileName[0] != '.' && fileName[0] != '/' && fileName[0] != '\\' && fileName[1] != ':') ? strstr(fileName, "://") : (((void *)0));
+if(protocolSymbol)
 {
-char * slash = strstr(fileName + 7, "/");
+char * slash = strstr(protocolSymbol + 3, "/");
 
 isURL = 0x1;
 if(slash)
@@ -476,11 +481,16 @@ urlFileName = slash;
 else
 urlFileName = fileName + strlen(fileName);
 }
-if(strstr(addedPath, "http://") == addedPath)
+}
+protocolSymbol = (addedPath[0] && addedPath[0] != '.' && addedPath[0] != '/' && addedPath[0] != '\\' && addedPath[1] != ':') ? strstr(addedPath, "://") : (((void *)0));
+if(protocolSymbol)
 {
-strcpy(fileName, "http://");
+int len = protocolSymbol - addedPath + 3;
+
+memcpy(fileName, addedPath, len);
+fileName[len] = (char)0;
 isURL = 0x1;
-c = 7;
+c = len;
 }
 else if(__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1)
 {
@@ -657,20 +667,20 @@ unsigned int modified = 0x0;
 
 if(addedPath)
 {
-char fileName[797] = "", archiveName[797] = "", * file;
+char fileName[797] = "", archiveName[797] = "", * file = (((void *)0));
 int c = 0;
 unsigned int isURL = 0x0;
+unsigned int isArchive = __ecereNameSpace__ecere__sys__SplitArchivePath(string, archiveName, &file);
 char * urlFileName;
+char * protocolSymbol;
 
-if(__ecereNameSpace__ecere__sys__SplitArchivePath(string, archiveName, &file))
-strcpy(fileName, file);
-else
+strcpy(fileName, isArchive ? file : string);
+if(!isArchive)
 {
-strcpy(fileName, string);
-}
-if(strstr(string, "http://") == string)
+protocolSymbol = (fileName[0] && fileName[0] != '.' && fileName[0] != '/' && fileName[0] != '\\' && fileName[1] != ':') ? strstr(fileName, "://") : (((void *)0));
+if(protocolSymbol)
 {
-char * slash = strstr(fileName + 7, "/");
+char * slash = strstr(protocolSymbol + 3, "/");
 
 isURL = 0x1;
 if(slash)
@@ -678,11 +688,16 @@ urlFileName = slash;
 else
 urlFileName = fileName + strlen(fileName);
 }
-if(strstr(addedPath, "http://") == addedPath)
+}
+protocolSymbol = (addedPath[0] && addedPath[0] != '.' && addedPath[0] != '/' && addedPath[0] != '\\' && addedPath[1] != ':') ? strstr(addedPath, "://") : (((void *)0));
+if(protocolSymbol)
 {
-strcpy(fileName, "http://");
+int len = protocolSymbol - addedPath + 3;
+
+memcpy(fileName, addedPath, len);
+fileName[len] = (char)0;
 isURL = 0x1;
-c = 7;
+c = len;
 }
 else if(runtimePlatform == 1)
 {
@@ -866,6 +881,8 @@ extern int strcasecmp(const char * , const char * );
 
 char * __ecereNameSpace__ecere__sys__MakePathRelative(char * path, char * to, char * destination)
 {
+int len;
+
 if(!path[0])
 memmove(destination, path, strlen(path) + 1);
 else
@@ -897,6 +914,9 @@ __ecereNameSpace__ecere__sys__SplitDirectory(pathRest, pathPart, pathRest);
 __ecereNameSpace__ecere__sys__PathCat(destination, pathPart);
 }
 }
+len = strlen(destination);
+if(len > 1 && (destination[len - 1] == '/' || destination[len - 1] == '\\'))
+destination[--len] = '\0';
 return destination;
 }
 
@@ -945,7 +965,7 @@ strcat(string, " MB");
 }
 else
 {
-sprintf(string, format, (float)size / (float)(float)1024);
+sprintf(string, format, (float)size / (float)1024);
 strcat(string, " KB");
 }
 }
@@ -1053,63 +1073,62 @@ return ptr1;
 return (((void *)0));
 }
 
-int __ecereNameSpace__ecere__sys__Tokenize(char * string, int maxTokens, char * tokens[], unsigned int escapeBackSlashes)
+static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BackSlashEscaping;
+
+extern char *  strchr(const char * , int);
+
+int __ecereNameSpace__ecere__sys__Tokenize(char * string, int maxTokens, char * tokens[], unsigned int esc)
 {
+#ifdef __WIN32__
+const char * escChars = " !\"%&'()+,;=[]^`{}~";
+const char * escCharsQuoted = "\"";
+#else
+const char * escChars = " !\"$&'()*:;<=>?[\\`{|";
+const char * escCharsQuoted = "\"()$";
+#endif
 int count = 0;
-unsigned int quoted = 0x0;
-unsigned char * start = (((void *)0));
-unsigned int escaped = 0x0;
-char * output = string;
+unsigned int quoted = 0x0, escaped = 0x0;
+char * start = (((void *)0)), * output = string;
+char ch;
 
-for(; *string && count < maxTokens; string++, output++)
+for(; (ch = *string) && count < maxTokens; string++, output++)
 {
+unsigned int wasEscaped = escaped;
+
 if(output != string)
-*output = *string;
+*output = ch;
 if(start)
 {
 if(escaped)
 {
 escaped = 0x0;
 output--;
-if(output != string)
-*output = *string;
-}
-else if(escapeBackSlashes && *string == '\\')
-escaped = 0x1;
-else if(*string == '\"')
-{
-if(quoted)
-{
-*output = '\0';
-quoted = 0x0;
+*output = ch;
 }
-else
+else if(ch == '\"')
 {
-memmove(start + 1, start, string - (char *)start);
-start++;
-}
+quoted ^= 0x1;
+output--;
 }
-else if(*string == ' ' && !quoted)
+else if(ch == ' ' && !quoted)
 {
 tokens[count++] = start;
 *output = '\0';
 start = (((void *)0));
 }
 }
-else if(*string != ' ')
+else if(ch != ' ')
 {
-if(*string == '\"')
+if(ch == '\"')
 {
 quoted = 0x1;
 start = output + 1;
 }
 else
-{
 start = output;
-if(*string == '\\' && escapeBackSlashes)
-escaped = 0x1;
-}
 }
+if(!wasEscaped && ch == '\\' && (esc == 0x1 || (esc == 0x2 && strchr(quoted ? escCharsQuoted : escChars, *(string + 1)))))
+escaped = 0x1;
 }
 if(start && count < maxTokens)
 {
@@ -1119,8 +1138,6 @@ tokens[count++] = start;
 return count;
 }
 
-extern char *  strchr(const char * , int);
-
 int __ecereNameSpace__ecere__sys__TokenizeWith(char * string, int maxTokens, char * tokens[], char * tokenizers, unsigned int escapeBackSlashes)
 {
 int count = 0;
@@ -1232,8 +1249,6 @@ string[c] = ch;
 string[c] = (char)0;
 }
 
-extern void *  memcpy(void * , const void * , size_t size);
-
 char * __ecereNameSpace__ecere__sys__CopyString(char * string)
 {
 if(string)
@@ -1335,7 +1350,7 @@ extern unsigned int isdigit(int);
 double __ecereNameSpace__ecere__sys__FloatFromString(char * string)
 {
 int c, dig;
-float dec = (float)0, res = (float)0;
+float dec = 0, res = 0;
 int neg = 1;
 char ch;
 
@@ -1351,7 +1366,7 @@ break;
 neg = -1;
 }
 else if((ch == '.') && !dec)
-dec = (float)10;
+dec = 10;
 else if(isdigit(ch))
 {
 dig = ch - '0';
@@ -1407,6 +1422,48 @@ struct __ecereNameSpace__ecere__com__GlobalFunction;
 
 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char *  name, char *  type, void *  func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
 
+extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (*  Constructor)(void * ), void (*  Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
+
+struct __ecereNameSpace__ecere__com__NameSpace
+{
+char *  name;
+struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
+struct __ecereNameSpace__ecere__com__NameSpace *  left;
+struct __ecereNameSpace__ecere__com__NameSpace *  right;
+int depth;
+struct __ecereNameSpace__ecere__com__NameSpace *  parent;
+struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
+struct __ecereNameSpace__ecere__sys__BinaryTree classes;
+struct __ecereNameSpace__ecere__sys__BinaryTree defines;
+struct __ecereNameSpace__ecere__sys__BinaryTree functions;
+} __attribute__ ((gcc_struct));
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
+
+struct __ecereNameSpace__ecere__com__Module
+{
+struct __ecereNameSpace__ecere__com__Instance * application;
+struct __ecereNameSpace__ecere__sys__OldList classes;
+struct __ecereNameSpace__ecere__sys__OldList defines;
+struct __ecereNameSpace__ecere__sys__OldList functions;
+struct __ecereNameSpace__ecere__sys__OldList modules;
+struct __ecereNameSpace__ecere__com__Instance * prev;
+struct __ecereNameSpace__ecere__com__Instance * next;
+char *  name;
+void *  library;
+void *  Unload;
+int importType;
+int origImportType;
+struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
+struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
+} __attribute__ ((gcc_struct));
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
+extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char *  string, int value);
+
 void __ecereRegisterModule_String(struct __ecereNameSpace__ecere__com__Instance * module)
 {
 struct __ecereNameSpace__ecere__com__Class * class;
@@ -1420,7 +1477,7 @@ __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::MAX_DIRECTORY"
 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::MAX_LOCATION", "797", module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::GetExtension", "char * ecere::sys::GetExtension(char * string, char * output)", __ecereNameSpace__ecere__sys__GetExtension, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::StripLastDirectory", "char * ecere::sys::StripLastDirectory(char * string, char * output)", __ecereNameSpace__ecere__sys__StripLastDirectory, module, 4);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::SplitDirectory", "char * ecere::sys::SplitDirectory(char * string, char * part, char * rest)", __ecereNameSpace__ecere__sys__SplitDirectory, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::SplitDirectory", "char * ecere::sys::SplitDirectory(const char * string, char * part, char * rest)", __ecereNameSpace__ecere__sys__SplitDirectory, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::GetLastDirectory", "char * ecere::sys::GetLastDirectory(char * string, char * output)", __ecereNameSpace__ecere__sys__GetLastDirectory, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::SplitArchivePath", "bool ecere::sys::SplitArchivePath(char * fileName, char * archiveName, char * * archiveFile)", __ecereNameSpace__ecere__sys__SplitArchivePath, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::PathCatSlash", "char * ecere::sys::PathCatSlash(char * string, char * addedPath)", __ecereNameSpace__ecere__sys__PathCatSlash, module, 4);
@@ -1432,7 +1489,11 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::PrintSize",
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::PrintBigSize", "void ecere::sys::PrintBigSize(char * string, double size, int prec)", __ecereNameSpace__ecere__sys__PrintBigSize, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::SearchString", "char * ecere::sys::SearchString(char * buffer, int start, char * subStr, bool matchCase, bool matchWord)", __ecereNameSpace__ecere__sys__SearchString, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::RSearchString", "char * ecere::sys::RSearchString(char * buffer, char * subStr, int maxLen, bool matchCase, bool matchWord)", __ecereNameSpace__ecere__sys__RSearchString, module, 4);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::Tokenize", "int ecere::sys::Tokenize(char * string, int maxTokens, char * tokens[], bool escapeBackSlashes)", __ecereNameSpace__ecere__sys__Tokenize, module, 4);
+class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::sys::BackSlashEscaping", "bool", 0, 0, 0, 0, module, 4, 1);
+if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 24)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 24)))->application && class)
+__ecereClass___ecereNameSpace__ecere__sys__BackSlashEscaping = class;
+__ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "forArgsPassing", 2);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::Tokenize", "int ecere::sys::Tokenize(char * string, int maxTokens, char * tokens[], ecere::sys::BackSlashEscaping esc)", __ecereNameSpace__ecere__sys__Tokenize, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::TokenizeWith", "int ecere::sys::TokenizeWith(char * string, int maxTokens, char * tokens[], char * tokenizers, bool escapeBackSlashes)", __ecereNameSpace__ecere__sys__TokenizeWith, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::TrimLSpaces", "char * ecere::sys::TrimLSpaces(char * string, char * output)", __ecereNameSpace__ecere__sys__TrimLSpaces, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::TrimRSpaces", "char * ecere::sys::TrimRSpaces(char * string, char * output)", __ecereNameSpace__ecere__sys__TrimRSpaces, module, 4);