Пример #1
0
string Row(MYSQL_RES *result,MYSQL_ROW row ,string name)
 {
     int num_fields,i;
     string s;
     num_fields = mysql_num_fields(result);
     for(i = 0; i < num_fields; i++){
         if(LCASE(name) ==  LCASE(mysql_fetch_fields(result)[i].name)){
             if (row[i]==NULL) return s;
             else return row[i];
         }
     }
     return s;
 }
Пример #2
0
bool ConnetMySql()
 {
     string Host,Login,Password,db,St,filename,ty;
     unsigned int Port=0;
     filename = db_conf;//"/etc/palarabic.conf";

     if(ExistsFile(filename)){
         vector<string> arr,arr2;
         St = ReadAllFile(filename);
         arr = Split(St,"\n");
         if ((int)arr[0].find("File Config DataBase (Bouhssini)")== -1) goto aa;
         for (Uint i=2;i<arr.size();i++)
         {
             arr2 = Split(arr[i],"=");
                  if ((int)LCASE(arr2[0]).find("host")!=-1) Host = Trim(arr2[1]);
             else if ((int)LCASE(arr2[0]).find("port")!=-1) Port = atoi(Trim(arr2[1]).c_str());
             else if ((int)LCASE(arr2[0]).find("login")!=-1) Login = Trim(arr2[1]).c_str();
             else if ((int)LCASE(arr2[0]).find("password")!=-1) Password = Trim(arr2[1]).c_str();
             else if ((int)LCASE(arr2[0]).find("db")!=-1) db = Trim(arr2[1]).c_str();
             else if ((int)LCASE(arr2[0]).find("type")!=-1) ty = Trim(arr2[1]).c_str();
         }
         if (LCASE(ty)!="mysql") goto Err;
     }else{
         Host     = "localhost";
         Port     = 3306;
         Login    = "******";
         Password = "******";
         db       = "maahad_hakiba";
         ty       = "MySQL" ;

         WriteFile(filename,"##  File Config DataBase (Bouhssini) ##\n");
         WriteFile(filename,"#######################################\n");
         WriteFile(filename,"\n");
         WriteFile(filename,"Host       = "+Host+"\n");
         WriteFile(filename,"Port       = "+convertInt(Port)+"\n");
         WriteFile(filename,"Login      = "******"\n");
         WriteFile(filename,"Password   = "******"\n");
         WriteFile(filename,"DB         = "+db+"\n");
         WriteFile(filename,"Type       = "+ty+"\n");
     }
     aa:
     conn = mysql_init(NULL);
     if (conn == NULL) goto Err;
     if (mysql_real_connect(conn, Host.c_str(), Login.c_str(), Password.c_str(), db.c_str(), Port, NULL, 0)==NULL) goto Err;
     mysql_query(conn, "SET CHARACTER SET utf8");
     mysql_query(conn, "SET NAMES utf8");
         return true;
     Err:
         conn = NULL;
         return false;
 }
Пример #3
0
TInt TSqlLexer::CompareKeyword(TInt aKeyword,const RSqlLiteral& aIdentifier)
//
// Check if the identifer in aIdentifier is a keyword
// uses a case-insensitive match, not folding
//
	{
	__ASSERT(TUint(aKeyword)<TUint(KSqlKeywordCount));
//
	const TText* ptr=aIdentifier.Ptr();
	const TText* end=aIdentifier.End();
	const TText8* pk=&KSqlKeywords[aKeyword][0];
	for (;;)
		{
		TUint ck=*pk++;
		if (ptr==end)
			return ck;
		if (!ck)
			return -1;
		TInt d=ck-LCASE(TUint(*ptr++));
		if (d)
			return d;
		}
	}
Пример #4
0
int JSONdecodeSub(ScriptValue &s, unsigned char * &b) {
	while (*b == ' ' || *b == '\t' || *b == '\n' || *b == '\r') b++;
	CreateNullValue(s);
	if (b[0] == '"') {
		return JSONParseString(s, b);
	}
	else if (b[0] == '[') {
		if (!CreateListValue(s, 4)) return 0;
		b++;
		while (*b == ' ' || *b == '\t' || *b == '\n' || *b == '\r') b++;
		if (*b == ']') {
			b++;
			return 1;
		}
		while (1) {
			ScriptValue sv;
			int res = JSONdecodeSub(sv, b);
			int res2;
			if (sv.type != SCRIPT_NULL) {
				res2 = s.listVal->PushBack(sv);
			}
			if (!res || !res2) return 0;
			while (*b == ' ' || *b == '\t' || *b == '\n' || *b == '\r') b++;
			if (*b == ']') {
				b++;
				return 1;
			}
			// ???
			if (*b != ',') return 0;
			b++;
		}
	}
	else if (b[0] == '{') {
		if (!CreateDictValue(s, 4)) return 0;
		b++;
		while (*b == ' ' || *b == '\t' || *b == '\n' || *b == '\r') b++;
		if (*b == '}') {
			b++;
			return 1;
		}
		while (1) {
			ScriptValue sv, sv2;
			if (!JSONParseString(sv, b)) {
				sv.Release();
				return 0;
			}
			while (*b == ' ' || *b == '\t' || *b == '\n' || *b == '\r') b++;
			if (*b != ':') {
				sv.Release();
				return 0;
			}
			b++;
			int res = JSONdecodeSub(sv2, b);
			int res2 = s.dictVal->Add(sv, sv2);
			if (!res || !res2) return 0;
			while (*b == ' ' || *b == '\t' || *b == '\n' || *b == '\r') b++;
			if (*b == '}') {
				b++;
				return 1;
			}
			// ???
			if (*b != ',') return 0;
			b++;
		}
	}
	else if ((b[0] >= '0' && b[0] <= '9') || b[0] == '-' || b[0] == '.') {
		unsigned char *t1, *t2;
		__int64 i = strtoi64((char*)b, (char**)&t1, 0);
		double d = strtod((char*)b, (char**)&t2);
		if (t1 >= t2) {
			if (t1) {
				b = t1;
				CreateIntValue(s, i);
				return 1;
			}
		}
		else {
			b = t2;
			CreateDoubleValue(s, d);
			return 1;
		}
	}
	else {
		if (LCASE(b[0]) == 'n' && LCASE(b[1]) == 'u' && LCASE(b[2]) == 'l' && LCASE(b[3]) == 'l') {
			b+=4;
			return 1;
		}
		if (LCASE(b[0]) == 'f' && LCASE(b[1]) == 'a' && LCASE(b[2]) == 'l' && LCASE(b[3]) == 's' && LCASE(b[4]) == 'e') {
			b+=5;
			return 1;
		}
		if (LCASE(b[0]) == 't' && LCASE(b[1]) == 'r' && LCASE(b[2]) == 'u' && LCASE(b[3]) == 'e') {
			CreateIntValue(s, 1);
			b+=4;
			return 1;
		}
	}
	return 0;
}
Пример #5
0
void FormatTime(ScriptValue &s, ScriptValue *args) {
	unsigned char *c = args[0].stringVal->value;
	if (!AllocateStringValue(s, (int)(3 * strlen(c) + 14))) return;
	static bool settz = 0;
	if (args[0].stringVal->value[0] == 'S') {
		args[0].stringVal->value[0] = args[0].stringVal->value[0];
	}
	// Nasty layout, but boils down to:  If a tz is specified, try to set it.
	// If either couldn't set it or not specified and was set previously, unset it.
	while (1) {
		if (args[2].stringVal->len >= 1 && args[2].stringVal->len <= 20) {
			if (args[2].stringVal->len < 4 || (args[2].stringVal->len == 4 && !IsNumber(args[2].stringVal->value[3]))) {
				for (int i=0; i<sizeof(tzlist)/sizeof(tzlist[0]); i++) {
					if (!stricmp(tzlist[i][0], (char*)args[2].stringVal->value)) {
						char temp[60] = "TZ=";
						sprintf(temp+3, tzlist[i][1]);
						if (!_putenv(temp)) {
							_tzset();
							settz = 1;
							break;
						}
					}
				}
			}
			else {
				wchar_t temp[60] = L"TZ=";
				if (UTF8toUTF16(temp+3, args[2].stringVal->value, args[2].stringVal->len) > 0) {
					if (!_wputenv(temp)) {
						_tzset();
						settz = 1;
						break;
					}
				}
			}
		}
		if (settz) {
			if (!_putenv("TZ=")) {
				_tzset();
				settz = 0;
			}
		}
		break;
	}
	static LCID locale = 0;
	if (!locale) {
		locale = GetThreadLocale();
	}
	__int64 x = args[1].intVal;
	if (!x) x = time64i();
	tm *date = _localtime64(&x);
	SYSTEMTIME st;

	st.wYear = date->tm_year+1900;
	st.wMonth = date->tm_mon+1;
	st.wDayOfWeek = date->tm_wday;
	st.wDay = date->tm_mday;
	st.wHour = date->tm_hour;
	st.wMinute = date->tm_min;
	st.wSecond = date->tm_sec;
	st.wMilliseconds = 0;
	char *out = (char*) s.stringVal->value;
	char * start = (char*) c;
	//static const char *wday[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
	//static const char *wday2[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
	//static const char *months[12] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
	//static const char *months2[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
	while (*start) {
		if (LCASE(start[0]) == 'h') {
			int h = date->tm_hour;
			if (*start == 'h') {
				if (h >12) h -= 12;
				else if (!h) h = 12;
			}
			GenericDisplay(start, out, h);
		}
		else if (LCASE(start[0]) == 'n')
			GenericDisplay(start, out, date->tm_min);
		else if (LCASE(start[0]) == 's')
			GenericDisplay(start, out, date->tm_sec);
		else if (LCASE(start[0]) == 't') {
			char letter = 'A';
			if (date->tm_hour >= 12) letter = 'P';
			if (start[0] == 't')
				out++[0]  = LCASE(letter);
			else
				out++[0]  = letter;
			start ++;
			if (start[0] == 't') {
				out++[0]  = 'm';
				start ++;
			}
			else if (start[0] == 'T') {
				out++[0]  = 'M';
				start ++;
			}
		}
		else if (LCASE(start[0]) == 'd') {
			if (LCASE(start[1]) == 'd' && LCASE(start[2]) == 'd') {
				start += 2;
				int incr = 1;
				wchar_t day[100];
				int len;
				if (LCASE(start[1]) == 'd') {
					len = GetDateFormat(locale, 0, &st, L"dddd", day, sizeof(day)/sizeof(wchar_t));
					//day = wday2[date->tm_wday];
					incr = 2;
				}
				else {
					len = GetDateFormat(locale, 0, &st, L"ddd", day, sizeof(day)/sizeof(wchar_t));
				}
				if (len < 0) len = 0;
				else if (len > 99) len = 99;
				day[len] = 0;
				int e = GetLastError();
				wchar_t *p = day;
				int i;
				for (i=0; i<len && i <99; i++) {
					p[i] = towupper(p[i]);
					if (start[0] != 'D') break;
				}
				UTF16toUTF8(out, day);
				out += strlen(out);
				start += incr;
			}
			else
				GenericDisplay(start, out, date->tm_mday);
		}
		else if (LCASE(start[0]) == 'm') {
			if (LCASE(start[1]) == 'm' && LCASE(start[2]) == 'm') {
				start += 2;
				int incr = 1;
				wchar_t day[100];
				int len;
				if (LCASE(start[1]) == 'm') {
					len = GetDateFormat(locale, 0, &st, L"MMMM", day, sizeof(day)/sizeof(wchar_t));
					//day = wday2[date->tm_wday];
					incr = 2;
				}
				else {
					len = GetDateFormat(locale, 0, &st, L"MMM", day, sizeof(day)/sizeof(wchar_t));
				}
				if (len < 0) len = 0;
				else if (len > 99) len = 99;
				day[len] = 0;
				int e = GetLastError();
				wchar_t *p = day;
				int i;
				for (i=0; i<len && i <99; i++) {
					p[i] = towupper(p[i]);
					if (start[0] != 'M') break;
				}
				UTF16toUTF8(out, day);
				out += strlen(out);
				start += incr;
			}
			else
				GenericDisplay(start, out, 1+date->tm_mon);
		}
		else if (LCASE(start[0]) == 'y') {
			int year = date->tm_year%100;
			if (LCASE(start[1]) == 'y') {
				start++;
				if (LCASE(start[1]) == 'y') {
					start ++;
					year = 1900 + date->tm_year;
					if (LCASE(start[1]) == 'y') start++;
				}
			}
			sprintf(out, "%02i", year);
			out+=strlen(out);
			start++;
		}
		else {
			out ++[0] = start++[0];
		}
		if ((out-(char*)s.stringVal->value) + 20 > s.stringVal->len) {
			size_t d = out - (char*)s.stringVal->value;
			ResizeStringValue(s, s.stringVal->len+50);
			out = (char*)s.stringVal->value + d;
		}
	}
	ResizeStringValue(s, (int)(out-(char*)s.stringVal->value));
}