null+****@clear*****
null+****@clear*****
2011年 11月 27日 (日) 22:26:56 JST
Kouhei Sutou 2011-11-27 13:26:56 +0000 (Sun, 27 Nov 2011) New Revision: acbd87c7660daaa241ee180db28b0b1b7464e215 Log: [mingw] undef stat. Modified files: lib/proc.c lib/scm.c Modified: lib/proc.c (+51 -47) =================================================================== --- lib/proc.c 2011-11-27 11:57:11 +0000 (c52a49c) +++ lib/proc.c 2011-11-27 13:26:56 +0000 (3574d90) @@ -38,6 +38,57 @@ const char *grn_document_root = NULL; #define VAR GRN_PROC_GET_VAR_BY_OFFSET +/* bulk must be initialized grn_bulk or grn_msg */ +static int +grn_bulk_put_from_file(grn_ctx *ctx, grn_obj *bulk, const char *path) +{ + /* FIXME: implement more smartly with grn_bulk */ + int fd, ret = 0; + struct stat stat; + if ((fd = open(path, O_RDONLY|O_NOFOLLOW)) == -1) { + switch (errno) { + case EACCES : + ERR(GRN_OPERATION_NOT_PERMITTED, "request is not allowed: <%s>", path); + break; + case ENOENT : + ERR(GRN_NO_SUCH_FILE_OR_DIRECTORY, "no such file: <%s>", path); + break; +#ifndef WIN32 + case ELOOP : + ERR(GRN_NO_SUCH_FILE_OR_DIRECTORY, + "symbolic link is not allowed: <%s>", path); + break; +#endif /* WIN32 */ + default : + ERR(GRN_UNKNOWN_ERROR, "open() failed(errno: %d): <%s>", errno, path); + break; + } + return 0; + } + if (fstat(fd, &stat) != -1) { + char *buf, *bp; + off_t rest = stat.st_size; + if ((buf = GRN_MALLOC(rest))) { + ssize_t ss; + for (bp = buf; rest; rest -= ss, bp += ss) { + if ((ss = read(fd, bp, rest)) == -1) { goto exit; } + } + GRN_TEXT_PUT(ctx, bulk, buf, stat.st_size); + ret = 1; + } + GRN_FREE(buf); + } else { + ERR(GRN_INVALID_ARGUMENT, "cannot stat file: <%s>", path); + } +exit : + close(fd); + return ret; +} + +#ifdef stat +# undef stat +#endif /* stat */ + /**** query expander ****/ static grn_rc @@ -1161,53 +1212,6 @@ proc_table_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_dat return NULL; } -/* bulk must be initialized grn_bulk or grn_msg */ -static int -grn_bulk_put_from_file(grn_ctx *ctx, grn_obj *bulk, const char *path) -{ - /* FIXME: implement more smartly with grn_bulk */ - int fd, ret = 0; - struct stat stat; - if ((fd = open(path, O_RDONLY|O_NOFOLLOW)) == -1) { - switch (errno) { - case EACCES : - ERR(GRN_OPERATION_NOT_PERMITTED, "request is not allowed: <%s>", path); - break; - case ENOENT : - ERR(GRN_NO_SUCH_FILE_OR_DIRECTORY, "no such file: <%s>", path); - break; -#ifndef WIN32 - case ELOOP : - ERR(GRN_NO_SUCH_FILE_OR_DIRECTORY, - "symbolic link is not allowed: <%s>", path); - break; -#endif /* WIN32 */ - default : - ERR(GRN_UNKNOWN_ERROR, "open() failed(errno: %d): <%s>", errno, path); - break; - } - return 0; - } - if (fstat(fd, &stat) != -1) { - char *buf, *bp; - off_t rest = stat.st_size; - if ((buf = GRN_MALLOC(rest))) { - ssize_t ss; - for (bp = buf; rest; rest -= ss, bp += ss) { - if ((ss = read(fd, bp, rest)) == -1) { goto exit; } - } - GRN_TEXT_PUT(ctx, bulk, buf, stat.st_size); - ret = 1; - } - GRN_FREE(buf); - } else { - ERR(GRN_INVALID_ARGUMENT, "cannot stat file: <%s>", path); - } -exit : - close(fd); - return ret; -} - static grn_obj * proc_missing(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data) { Modified: lib/scm.c (+1 -1) =================================================================== --- lib/scm.c 2011-11-27 11:57:11 +0000 (717c653) +++ lib/scm.c 2011-11-27 13:26:56 +0000 (893671a) @@ -53,7 +53,7 @@ #ifdef stat # undef stat -#endif +#endif /* stat */ #define InitFile "init.scm"