зеркало из https://github.com/github/ruby.git
* win32/win32.c (rb_w32_opendir, rb_w32_readdir): eliminate magic
numbers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
7f41ff0ff6
Коммит
d15b7d0509
|
@ -1,3 +1,8 @@
|
|||
Tue May 29 10:54:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* win32/win32.c (rb_w32_opendir, rb_w32_readdir): eliminate magic
|
||||
numbers.
|
||||
|
||||
Mon May 28 10:27:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* cont.c: fixed a function name.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#define RUBY_VERSION "1.9.0"
|
||||
#define RUBY_RELEASE_DATE "2007-05-28"
|
||||
#define RUBY_RELEASE_DATE "2007-05-29"
|
||||
#define RUBY_VERSION_CODE 190
|
||||
#define RUBY_RELEASE_CODE 20070528
|
||||
#define RUBY_RELEASE_CODE 20070529
|
||||
#define RUBY_PATCHLEVEL 0
|
||||
|
||||
#define RUBY_VERSION_MAJOR 1
|
||||
|
@ -9,7 +9,7 @@
|
|||
#define RUBY_VERSION_TEENY 0
|
||||
#define RUBY_RELEASE_YEAR 2007
|
||||
#define RUBY_RELEASE_MONTH 5
|
||||
#define RUBY_RELEASE_DAY 28
|
||||
#define RUBY_RELEASE_DAY 29
|
||||
|
||||
#ifdef RUBY_EXTERN
|
||||
RUBY_EXTERN const char ruby_version[];
|
||||
|
|
|
@ -1383,8 +1383,12 @@ rb_w32_cmdvector(const char *cmd, char ***vec)
|
|||
// return the pointer to the current file name.
|
||||
//
|
||||
|
||||
#define GetBit(bits, i) ((bits)[(i) / 8] & (1 << (i) % 8))
|
||||
#define SetBit(bits, i) ((bits)[(i) / 8] |= (1 << (i) % 8))
|
||||
#define GetBit(bits, i) ((bits)[(i) / CHAR_BIT] & (1 << (i) % CHAR_BIT))
|
||||
#define SetBit(bits, i) ((bits)[(i) / CHAR_BIT] |= (1 << (i) % CHAR_BIT))
|
||||
|
||||
#define BitOfIsDir(n) ((n) * 2)
|
||||
#define BitOfIsRep(n) ((n) * 2 + 1)
|
||||
#define DIRENT_PER_CHAR (CHAR_BIT / 2)
|
||||
|
||||
DIR *
|
||||
rb_w32_opendir(const char *filename)
|
||||
|
@ -1458,9 +1462,9 @@ rb_w32_opendir(const char *filename)
|
|||
strlcpy(p->start, fd.cFileName, idx);
|
||||
p->bits[0] = 0;
|
||||
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
SetBit(p->bits, 0);
|
||||
SetBit(p->bits, BitOfIsDir(0));
|
||||
if (fd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
|
||||
SetBit(p->bits, 1);
|
||||
SetBit(p->bits, BitOfIsRep(0));
|
||||
p->nfiles++;
|
||||
|
||||
//
|
||||
|
@ -1482,17 +1486,17 @@ rb_w32_opendir(const char *filename)
|
|||
p->start = tmp;
|
||||
strlcpy(&p->start[idx], fd.cFileName, len);
|
||||
|
||||
if (p->nfiles % 4 == 0) {
|
||||
tmp = realloc(p->bits, p->nfiles / 4 + 1);
|
||||
if (p->nfiles % DIRENT_PER_CHAR == 0) {
|
||||
tmp = realloc(p->bits, p->nfiles / DIRENT_PER_CHAR + 1);
|
||||
if (!tmp)
|
||||
goto error;
|
||||
p->bits = tmp;
|
||||
p->bits[p->nfiles / 4] = 0;
|
||||
p->bits[p->nfiles / DIRENT_PER_CHAR] = 0;
|
||||
}
|
||||
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
SetBit(p->bits, p->nfiles * 2);
|
||||
SetBit(p->bits, BitOfIsDir(p->nfiles));
|
||||
if (fd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
|
||||
SetBit(p->bits, p->nfiles * 2 + 1);
|
||||
SetBit(p->bits, BitOfIsRep(p->nfiles));
|
||||
|
||||
p->nfiles++;
|
||||
idx += len;
|
||||
|
@ -1547,8 +1551,8 @@ rb_w32_readdir(DIR *dirp)
|
|||
//
|
||||
// Attributes
|
||||
//
|
||||
dirp->dirstr.d_isdir = GetBit(dirp->bits, dirp->loc * 2);
|
||||
dirp->dirstr.d_isrep = GetBit(dirp->bits, dirp->loc * 2 + 1);
|
||||
dirp->dirstr.d_isdir = GetBit(dirp->bits, BitOfIsDir(dirp->loc));
|
||||
dirp->dirstr.d_isrep = GetBit(dirp->bits, BitOfIsRep(dirp->loc));
|
||||
|
||||
//
|
||||
// Now set up for the next call to readdir
|
||||
|
|
Загрузка…
Ссылка в новой задаче