• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

コミットメタ情報

リビジョン96230bddddb9bf445c54364261aa8dcd09257664 (tree)
日時2011-03-03 22:38:58
作者tfuruka1 <tfuruka1>
コミッターtfuruka1

ログメッセージ

getoptに対応等

変更サマリ

差分

--- a/src/crlf/main.c
+++ b/src/crlf/main.c
@@ -1,6 +1,5 @@
11 /* -*- mode: c++; coding: sjis-dos; -*-
2- * $Id: main.c,v 1.2 2007/10/04 14:49:36 tfuruka1 Exp $
3- * $Name: $
2+ * $Id: main.c,v 1.3 2011/03/03 13:38:58 tfuruka1 Exp $
43 *
54 * 標準入力から読み込んだ値の行末をCRLFに変換し、標準出力に出力します。
65 *
@@ -9,13 +8,8 @@
98 * 一切行なっていません。Cygwinのsed等で処理すると、行末がlfに変換され
109 * るので、フィルターとして使用する事を想定しています。
1110 *
12- * $Log: main.c,v $
13- * Revision 1.2 2007/10/04 14:49:36 tfuruka1
14- * Copyrightの年が間違えてました。
15- *
16- * Revision 1.1 2006/11/15 12:08:04 tfuruka1
17- * 新規追加
18- *
11+ * 2007/10/04 Copyrightの年が間違えてました。
12+ * 2006/11/15 新規追加
1913 */
2014 #include <windows.h>
2115 #include <stdio.h>
@@ -23,6 +17,8 @@
2317 #include <sys/types.h>
2418 #include <sys/stat.h>
2519
20+#include "getopt.h"
21+
2622 #define VERSION "Crlf Version 1.0"
2723 #define COPYRIGHT "Copyright (c) 2006 T.Furukawa\n\n"\
2824 "標準入力又はファイルから読み込んだテキストの改行コードを CR+LF\n"\
@@ -34,7 +30,7 @@
3430 #define HELP \
3531 " -d, --direct 結果を入力ファイルに書き戻します。\n"\
3632 " このオプションを指定した場合、入力ファイルは必須です。\n"\
37- " -?, --help このヘルプメッセージを表示します。\n"\
33+ " -h, --help このヘルプメッセージを表示します。\n"\
3834 " --usage 簡潔な使用方法を表示します。\n"\
3935 " --version ヴァージョン情報を表示します。\n"\
4036 "\nReport bugs to <tfuruka1@nifty.com>."
@@ -79,32 +75,38 @@ makeBackupFile(LPTSTR lpFileName)
7975 int
8076 main(int argc, char *argv[])
8177 {
82- int i;
8378 int c;
79+ int option_index;
8480 BOOL bDirect = FALSE;
85-
86- for (i = 1; i < argc; i++) {
87- if ('-' != *argv[i]) {
81+ static struct option options[] = {
82+ {"direct", no_argument, NULL, 'd'},
83+ {"help", no_argument, NULL, 'h'},
84+ {"usage", no_argument, NULL, 'u'},
85+ {"version", no_argument, NULL, 'v'},
86+ {NULL, 0, NULL, 0}
87+ };
88+
89+ while (-1 != (c = getopt_long (argc, argv, "dh",
90+ options, &option_index))) {
91+ switch (c) {
92+ case 'd':
93+ bDirect = TRUE;
8894 break;
89- }
90- if (0 == strcmp("--version", argv[i])
91- || 0 == strcmp("--v", argv[i])) {
92- showVersion();
93- return 1;
94- } else if (0 == strcmp("--usage", argv[i])) {
95+ case 'h':
96+ showHelp();
97+ return 0;
98+ case 'u':
9599 showUsage();
100+ return 0;
101+ case 'v':
102+ showVersion();
103+ return 0;
104+ case '?':
105+ fprintf(stderr, "詳しくは `crlf --help' を実行して下さい.\n");
96106 return 1;
97- } else if (0 == strcmp("--help", argv[i])
98- || 0 == strcmp("-?", argv[i])) {
99- showHelp();
107+ default:
108+ fprintf(stderr, "想定外のgetoptからの戻り: %c\n", c);
100109 return 1;
101- } else if (0 == strcmp("-d", argv[i])
102- || 0 == strcmp("--direct", argv[i])) {
103- bDirect = TRUE;
104- } else {
105- fprintf(stderr, "不正なオプションです: %s\n", argv[i]);
106- showUsage();
107- return 2;
108110 }
109111 }
110112
@@ -115,64 +117,72 @@ main(int argc, char *argv[])
115117 FILE *fp;
116118 size_t size;
117119 size_t cnt;
120+ int ret;
118121
119- if (!argv[i]) {
122+ if (!argv[optind]) {
120123 fprintf(stderr, "-d, --directオプションを指定した場合は"
121124 "入力ファイルは必須です。\n");
122125 return 2;
123126 }
127+ for (; argv[optind]; optind++) {
128+ if (0 != _stat(argv[optind], &stat)) {
129+ perror(argv[optind]);
130+ ret++;
131+ continue;
132+ }
124133
125- if (0 != _stat(argv[i], &stat)) {
126- perror(argv[i]);
127- return 3;
128- }
129-
130- if (!(lpBuf = (LPTSTR) malloc(stat.st_size + 1))) {
131- fprintf(stderr, "メモリ不足です。\n");
132- return 3;
133- }
134+ if (!(lpBuf = (LPTSTR) malloc(stat.st_size + 1))) {
135+ fprintf(stderr, "メモリ不足です。\n");
136+ ret++;
137+ continue;
138+ }
134139
135- if (!(fp = fopen(argv[i], "rb"))) {
136- perror(argv[i]);
137- free(lpBuf);
138- return 3;
139- }
140- size = fread(lpBuf, 1, stat.st_size, fp);
141- if (size != (size_t) stat.st_size) {
142- fprintf(stderr, "入力ファイルを最後迄読み込めません。\n"
143- "\tファイルサイズ: %u\n"
144- "\t読み込みサイズ: %u\n", stat.st_size, size);
145- free(lpBuf);
140+ if (!(fp = fopen(argv[optind], "rb"))) {
141+ perror(argv[optind]);
142+ free(lpBuf);
143+ ret++;
144+ continue;
145+ }
146+ size = fread(lpBuf, 1, stat.st_size, fp);
147+ if (size != (size_t) stat.st_size) {
148+ fprintf(stderr, "入力ファイルを最後迄読み込めません。\n"
149+ "\tファイルサイズ: %u\n"
150+ "\t読み込みサイズ: %u\n", stat.st_size, size);
151+ free(lpBuf);
152+ fclose(fp);
153+ ret++;
154+ continue;
155+ }
146156 fclose(fp);
147- return 3;
148- }
149- fclose(fp);
150-
151- makeBackupFile(argv[i]);
152157
153- if (!(fp = fopen(argv[i], "wt"))) {
154- perror(argv[i]);
155- free(lpBuf);
156- return 3;
157- }
158+ makeBackupFile(argv[optind]);
158159
159- for (cnt = 0; cnt < size; cnt++) {
160- if ('\r' == *(lpBuf + cnt)) {
160+ if (!(fp = fopen(argv[optind], "wt"))) {
161+ perror(argv[optind]);
162+ free(lpBuf);
163+ ret++;
161164 continue;
162165 }
163- putc(*(lpBuf + cnt), fp);
166+
167+ for (cnt = 0; cnt < size; cnt++) {
168+ if ('\r' == *(lpBuf + cnt)) {
169+ continue;
170+ }
171+ putc(*(lpBuf + cnt), fp);
172+ }
173+ fclose(fp);
174+ free(lpBuf);
164175 }
165- fclose(fp);
166- free(lpBuf);
176+ return ret;
167177 } else {
168178 //━━━━━━━━━━━━━━━━━━━━━━━━━標準出力へ
169- if (argv[i]) {
179+ if (argv[optind]) {
170180 FILE *fp;
171181
172182 fclose(stdin);
173- fp = freopen(argv[i], "rt", stdin);
183+ fp = freopen(argv[optind], "rt", stdin);
174184 if (!fp) {
175- perror(argv[i]);
185+ perror(argv[optind]);
176186 return 3;
177187 }
178188 }
@@ -183,6 +193,6 @@ main(int argc, char *argv[])
183193 }
184194 putc(c, stdout);
185195 }
196+ return 0;
186197 }
187- return 0;
188198 }
--- a/src/crlf/makefile
+++ b/src/crlf/makefile
@@ -1,24 +1,25 @@
1-# $Id: makefile,v 1.1 2006/11/15 12:08:04 tfuruka1 Exp $
2-# $Name: $
1+# $Id: makefile,v 1.2 2011/03/03 13:38:58 tfuruka1 Exp $
32 #
43 # 改行コードの変換
54 #
6-# $Log: makefile,v $
7-# Revision 1.1 2006/11/15 12:08:04 tfuruka1
8-# 新規追加
9-#
5+# 2006/11/15 新規追加
106 #
117 EXE=crlf.exe
128 OBJS=main.obj
139
14-CFLAGS=/W3 /Zi
15-LDFLAGS=/link /debug
10+CFLAGS=/W3 /Zi /I../libs/getopt /D_CRT_SECURE_NO_WARNINGS
11+LDFLAGS=/debug /libpath:../libs/getopt
12+
13+../../bin/$(EXE) : ../../bin $(EXE)
14+ -cp $(EXE) $@
15+../../bin :
16+ sh -c "mkdir $@"
1617
17-../../bin/$(EXE) : $(EXE)
18- -cp $(EXE) ../../bin/.
18+$(EXE) : $(OBJS) getopt
19+ $(CC) $(CFLAGS) $(OBJS) /link $(LDFLAGS) getopt.lib -out:$@
1920
20-$(EXE) : $(OBJS)
21- $(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
21+getopt :
22+ sh -c "(cd ../libs/getopt; nmake)";
2223
2324 clean :
2425 -rm -f *.obj *~ *.pdb *.ilk
--- a/src/libs/getopt/makefile
+++ b/src/libs/getopt/makefile
@@ -1,6 +1,7 @@
11 # -*- mode:makefile; coding:shift_jis-unix -*-
2-# $Id: makefile,v 1.1 2011/03/01 11:00:07 tfuruka1 Exp $
2+# $Id: makefile,v 1.2 2011/03/03 13:38:58 tfuruka1 Exp $
33
4+SHELL=/bin/sh
45 O=obj
56 DLL=getopt.dll
67 OBJS=getopt.$(O) getopt_long.$(O)
@@ -9,9 +10,12 @@ CFLAGS=/Zi /DGETOPT_API=__declspec(dllexport) /W3\
910
1011 LDFLAGS=/DLL /debug
1112
12-../../../bin/$(DLL) : $(DLL) test.exe
13+../../../bin/$(DLL) : ../../../bin $(DLL) test.exe
1314 cp $(DLL) $@
1415
16+../../../bin :
17+ sh -c "mkdir $@"
18+
1519 $(DLL) : $(OBJS)
1620 $(CC) $(CFLAGS) $(OBJS) /link $(LDFLAGS) /def:getopt.def /OUT:$@
1721
--- a/src/makefile
+++ b/src/makefile
@@ -1,26 +1,18 @@
1-# $Id: makefile,v 1.6 2011/03/01 11:00:07 tfuruka1 Exp $
1+# $Id: makefile,v 1.7 2011/03/03 13:38:58 tfuruka1 Exp $
22 # $Name: $
33 #
44 # makeの親玉
55 #
66 # $Log: makefile,v $
7-# Revision 1.6 2011/03/01 11:00:07 tfuruka1
8-# teeコマンドを新規追加
7+# Revision 1.7 2011/03/03 13:38:58 tfuruka1
8+# getoptに対応等
99 #
10-# Revision 1.5 2007/10/04 14:43:15 tfuruka1
11-# MegaFileを追加
12-#
13-# Revision 1.4 2006/12/06 15:40:52 tfuruka1
14-# 単純なコーディングミスを修正しました。
15-#
16-# Revision 1.3 2006/12/06 15:37:14 tfuruka1
17-# ydmモジュール回線低品質エミュレータを新規追加
18-#
19-# Revision 1.2 2006/12/06 14:05:40 tfuruka1
20-# lha32を新規追加
21-#
22-# Revision 1.1 2006/11/15 12:08:03 tfuruka1
23-# 新規追加
10+# 2011/03/01 teeコマンドを新規追加
11+# 2007/10/04 MegaFileを追加
12+# 2006/12/06 単純なコーディングミスを修正しました。
13+# 2006/12/06 ydmモジュール回線低品質エミュレータを新規追加
14+# 2006/12/06 lha32を新規追加
15+# 2006/11/15 新規追加
2416 #
2517
2618 all :
@@ -33,7 +25,7 @@ all :
3325 sh -c "(cd MegaFile; nmake)"
3426 sh -c "(cd wlsfonts; nmake)"
3527 sh -c "(cd YdmPoorLineEmu; nmake)"
36- sh -c "(cd tee nmake)"
28+ sh -c "(cd tee; nmake)"
3729
3830 clean :
3931 sh -c "(cd libs/getopt; nmake clean)"
@@ -45,5 +37,5 @@ clean :
4537 sh -c "(cd MegaFile; nmake clean)"
4638 sh -c "(cd wlsfonts; nmake clean)"
4739 sh -c "(cd YdmPoorLineEmu; nmake clean)"
48- sh -c "(cd tee nmake clean)"
49- -rm -fr ../bin/*
40+ sh -c "(cd tee; nmake clean)"
41+ -rm -fr ../bin