Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | unicode support for file_getcwd, file_access and fossil_stat as well |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | eclipse-project |
| Files: | files | file ages | folders |
| SHA1: |
d95039cc5aa76a06f8102e7b92b87bf3 |
| User & Date: | jan.nijtmans 2012-08-23 08:53:38.375 |
Context
|
2012-08-24
| ||
| 08:16 | Merge in the mingw build enhancements check-in: abbc00fc5b user: jan.nijtmans tags: eclipse-project | |
|
2012-08-23
| ||
| 08:53 | unicode support for file_getcwd, file_access and fossil_stat as well check-in: d95039cc5a user: jan.nijtmans tags: eclipse-project | |
| 07:25 | merge SQL injection prevention patches into the eclipse-project branch check-in: 0fdb1f4f8f user: jan.nijtmans tags: eclipse-project | |
Changes
Changes to src/file.c.
| ︙ | ︙ | |||
25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include "config.h" #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <string.h> #include <errno.h> #include "file.h" /* ** On Windows, include the Platform SDK header file. */ #ifdef _WIN32 # include <windows.h> #endif | > > > > | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include "config.h" #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <string.h> #include <errno.h> #include "file.h" #if defined(_WIN32) #include <direct.h> #endif /* ** On Windows, include the Platform SDK header file. */ #ifdef _WIN32 # include <windows.h> #endif |
| ︙ | ︙ | |||
66 67 68 69 70 71 72 |
if( isWd && g.allowSymlinks ){
return lstat(zFilename, buf);
}else{
return stat(zFilename, buf);
}
#else
int rc = 0;
| | | | 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
if( isWd && g.allowSymlinks ){
return lstat(zFilename, buf);
}else{
return stat(zFilename, buf);
}
#else
int rc = 0;
wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
rc = _wstati64(zMbcs, buf);
fossil_mbcs_free(zMbcs);
return rc;
#endif
}
/*
** Fill in the fileStat variable for the file named zFilename.
|
| ︙ | ︙ | |||
296 297 298 299 300 301 302 |
}
/*
** Wrapper around the access() system call.
*/
int file_access(const char *zFilename, int flags){
| > | | > > > | 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 |
}
/*
** Wrapper around the access() system call.
*/
int file_access(const char *zFilename, int flags){
#ifdef _WIN32
wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
int rc = _waccess(zMbcs, flags);
fossil_mbcs_free(zMbcs);
#else
int rc = access(zFilename, flags);
#endif
return rc;
}
/*
** Find an unused filename similar to zBase with zSuffix appended.
**
** Make the name relative to the working directory if relFlag is true.
|
| ︙ | ︙ | |||
563 564 565 566 567 568 569 |
fossil_free(z);
}
}
/*
** Get the current working directory.
**
| | | | | | 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 |
fossil_free(z);
}
}
/*
** Get the current working directory.
**
** On windows, the name is converted from unicode to UTF8 and all '\\'
** characters are converted to '/'. No conversions are needed on
** unix.
*/
void file_getcwd(char *zBuf, int nBuf){
#ifdef _WIN32
char *zPwdUtf8;
int nPwd;
int i;
wchar_t zPwd[2000];
if( _wgetcwd(zPwd, sizeof(zPwd)-1)==0 ){
fossil_fatal("cannot find the current working directory.");
}
zPwdUtf8 = fossil_unicode_to_utf8(zPwd);
nPwd = strlen(zPwdUtf8);
if( nPwd > nBuf-1 ){
fossil_fatal("pwd too big: max %d\n", nBuf-1);
}
for(i=0; zPwdUtf8[i]; i++) if( zPwdUtf8[i]=='\\' ) zPwdUtf8[i] = '/';
memcpy(zBuf, zPwdUtf8, nPwd+1);
fossil_mbcs_free(zPwdUtf8);
|
| ︙ | ︙ |