[Mew-dist 13662] stat() について
SAKAI Kiyotaka
ksakai at example.com
2000年 7月 17日 (月) 19:00:55 JST
もし、stat()/fstat() があまりに時間がかかってしまうのであれば、以下の
パッチのように stat()/fstat() を実行しないオプションを提供するのも 1つ
の手かと思います。
というのは、stat()/fstat() を実行しているのは、数字からのみなるディレ
クトリがあった場合にそれを skip する目的で実行していますが、もしユーザー
が「数字からのみなる folder は使用しない」と決めて運用しているのであれ
ば、そもそもそのチェックは必要ないからです。
--
酒井 清隆 (E-mail: ksakai at example.com)
-------------- next part --------------
Index: mewls.c
===================================================================
RCS file: /home/ksakai/cvsroot/mew-1.95b47/bin/mewls.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 mewls.c
--- mewls.c 2000/07/17 00:32:42 1.1.1.1
+++ mewls.c 2000/07/17 09:39:31
@@ -49,6 +49,7 @@
char hbuf[BSIZ];
int First = 0, Last = 0;
+int use_stat = 1;
char *
expandfolder(char *fld) {
@@ -241,11 +242,13 @@
sprintf(fnbuf, "%d", *(list + i));
fp = fopen(fnbuf, "r");
if (fp == NULL) continue;
- fstat(fileno(fp), &st);
- if (!(st.st_mode & S_IFREG)) {
- fclose(fp);
- continue;
- }
+ if (use_stat) {
+ fstat(fileno(fp), &st);
+ if (!(st.st_mode & S_IFREG)) {
+ fclose(fp);
+ continue;
+ }
+ }
dumpheader(fp, fnbuf);
fclose(fp);
}
@@ -291,6 +294,7 @@
char *help_message[] = {
" -s --src Message source.",
+ " -n --nostat Don's use fstat().",
" -h --help Display this help message.",
" -v --version Display the version.",
NULL
@@ -313,6 +317,7 @@
struct option longopts [] = {
{"src", 1, 0, 's'},
+ {"nostat", 0, 0, 'n'},
{"help", 0, 0, 'h'},
{"version", 0, 0, 'v'},
{0, 0, 0, 0}
@@ -330,12 +335,15 @@
/*char *progname = argv[0];*/
int index = 0;
- while ((optc = getopt_long(argc, argv, "shv", longopts, (int *)0)) != EOF)
+ while ((optc = getopt_long(argc, argv, "snhv", longopts, (int *)0)) != EOF)
{
switch (optc) {
case 's':
if (index < MAX_FOLDER)
dir[index++] = optarg;
+ break;
+ case 'n':
+ use_stat = 0;
break;
case 'h':
help(progname);
Mew-dist メーリングリストの案内