mirror of
https://github.com/QB64Official/qb64.git
synced 2024-09-20 09:04:44 +00:00
6e01fc8dce
Added new _STRCMP and _STRICMP commands for quick string comparisons. Cleaned up QB64 to finish removing the QUI (quick user insert) code and folders. Altered UCASE and LCASE routines to be faster in some situations for us.
53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
//Get Current Working Directory
|
|
qbs *func__cwd(){
|
|
qbs *final, *tqbs;
|
|
int length;
|
|
char *buf, *ret;
|
|
|
|
#if defined QB64_WINDOWS
|
|
length = GetCurrentDirectoryA(0, NULL);
|
|
buf = (char *)malloc(length);
|
|
if (!buf) {
|
|
error(7); //"Out of memory"
|
|
return tqbs;
|
|
}
|
|
if (GetCurrentDirectoryA(length, buf) != --length) { //Sanity check
|
|
free(buf); //It's good practice
|
|
tqbs = qbs_new(0, 1);
|
|
error(51); //"Internal error"
|
|
return tqbs;
|
|
}
|
|
#elif defined QB64_LINUX
|
|
length = 512;
|
|
while(1) {
|
|
buf = (char *)malloc(length);
|
|
if (!buf) {
|
|
tqbs = qbs_new(0, 1);
|
|
error(7);
|
|
return tqbs;
|
|
}
|
|
ret = getcwd(buf, length);
|
|
if (ret) break;
|
|
if (errno != ERANGE) {
|
|
tqbs = qbs_new(0, 1);
|
|
error(51);
|
|
return tqbs;
|
|
}
|
|
free(buf);
|
|
length += 512;
|
|
}
|
|
length = strlen(ret);
|
|
ret = (char *)realloc(ret, length); //Chops off the null byte
|
|
if (!ret) {
|
|
tqbs = qbs_new(0, 1);
|
|
error(7);
|
|
return tqbs;
|
|
}
|
|
buf = ret;
|
|
#endif
|
|
final = qbs_new(length, 1);
|
|
memcpy(final->chr, buf, length);
|
|
free(buf);
|
|
return final;
|
|
}
|
|
|