• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Révision9464 (tree)
l'heure2021-10-14 23:51:19
Auteurzmatsuo

Message de Log

printf系関数にアトリビュートを追加

- 引数誤りをチェックできるよう attribute を追加
- コメントの誤りを修正
- _Printf_format_string_ を追加

- Visual Studioでビルドするときのみ有効

Change Summary

Modification

--- trunk/teraterm/common/asprintf.cpp (revision 9463)
+++ trunk/teraterm/common/asprintf.cpp (revision 9464)
@@ -34,11 +34,16 @@
3434
3535 #include "asprintf.h"
3636
37+// Visual Studio ではない時、無効化(消す)
38+#if !defined(_MSC_VER)
39+#define _Printf_format_string_
40+#endif
41+
3742 /**
3843 * 領域を確保して、文字列をフォーマットして、ポインタ返す
3944 * 不要になったら free() すること
4045 * @retval 出力文字数(終端の'\0'を含む)
41- * エラー時は -1
46+ * エラー時 -1
4247 */
4348 int vasprintf(char **strp, const char *fmt, va_list ap)
4449 {
@@ -72,8 +77,7 @@
7277 * 領域を確保して、文字列をフォーマットして、ポインタ返す
7378 * 不要になったら free() すること
7479 * @retval 出力文字数(終端のL'\0'を含む)
75- * フォーマット文字列がおかしいときはL"EILSEQ"
76- * その他エラー時は -1
80+ * エラー時 -1
7781 */
7882 int vaswprintf(wchar_t **strp, const wchar_t *fmt, va_list ap)
7983 {
@@ -107,10 +111,9 @@
107111 * 領域を確保して、文字列をフォーマットして、ポインタ返す
108112 * 不要になったら free() すること
109113 * @retval 出力文字数(終端の'\0'を含む)
110- * フォーマット文字列がおかしいときは"EILSEQ"
111- * その他エラー時は -1
114+ * エラー時 -1
112115 */
113-int asprintf(char **strp, const char *fmt, ...)
116+int asprintf(char **strp, _Printf_format_string_ const char *fmt, ...)
114117 {
115118 int r;
116119 va_list ap;
@@ -124,10 +127,9 @@
124127 * 領域を確保して、文字列をフォーマットして、ポインタ返す
125128 * 不要になったら free() すること
126129 * @retval 出力文字数(終端の'\0'を含む)
127- * フォーマット文字列がおかしいときはL"EILSEQ"
128- * その他エラー時は -1
130+ * エラー時 -1
129131 */
130-int aswprintf(wchar_t **strp, const wchar_t *fmt, ...)
132+int aswprintf(wchar_t **strp, _Printf_format_string_ const wchar_t *fmt, ...)
131133 {
132134 int r;
133135 va_list ap;
--- trunk/teraterm/common/asprintf.h (revision 9463)
+++ trunk/teraterm/common/asprintf.h (revision 9464)
@@ -34,8 +34,21 @@
3434 extern "C" {
3535 #endif
3636
37+#if defined(_MSC_VER) && !defined(_Printf_format_string_)
38+// 定義されていないときは何もしないように定義しておく
39+#define _Printf_format_string_
40+#endif
41+
42+#if defined(_MSC_VER)
43+int asprintf(char **strp, _Printf_format_string_ const char *fmt, ...);
44+int aswprintf(wchar_t **strp, _Printf_format_string_ const wchar_t *fmt, ...);
45+#elif defined(__GNUC__)
46+int asprintf(char **strp, const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
47+int aswprintf(wchar_t **strp, const wchar_t *fmt, ...); // __attribute__ ((format (wprintf, 2, 3)));
48+#else
3749 int asprintf(char **strp, const char *fmt, ...);
3850 int aswprintf(wchar_t **strp, const wchar_t *fmt, ...);
51+#endif
3952 int vasprintf(char **strp, const char *fmt, va_list ap);
4053 int vaswprintf(wchar_t **strp, const wchar_t *fmt, va_list ap);
4154
--- trunk/teraterm/common/ttlib.h (revision 9463)
+++ trunk/teraterm/common/ttlib.h (revision 9464)
@@ -41,6 +41,11 @@
4141 #define DllExport __declspec(dllexport)
4242 #endif
4343
44+#if defined(_MSC_VER) && !defined(_Printf_format_string_)
45+// 定義されていないときは何もしないように定義しておく
46+#define _Printf_format_string_
47+#endif
48+
4449 BOOL GetFileNamePos(const char *PathName, int *DirLen, int *FNPos);
4550 BOOL GetFileNamePosU8(const char *PathName, int *DirLen, int *FNPos);
4651 BOOL GetFileNamePosW(const wchar_t *PathName, size_t *DirLen, size_t *FNPos);
@@ -97,8 +102,16 @@
97102 int get_lang_font(const char *key, HWND dlg, PLOGFONT logfont, HFONT *font, const char *iniFile);
98103 DllExport BOOL doSelectFolder(HWND hWnd, char *path, int pathlen, const char *def, const char *msg);
99104 BOOL doSelectFolderW(HWND hWnd, const wchar_t *def, const wchar_t *msg, wchar_t **folder);
105+#if defined(_MSC_VER)
106+DllExport void OutputDebugPrintf(_Printf_format_string_ const char *fmt, ...);
107+void OutputDebugPrintfW(_Printf_format_string_ const wchar_t *fmt, ...);
108+#elif defined(__GNUC__)
109+DllExport void OutputDebugPrintf(_Printf_format_string_ const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
110+void OutputDebugPrintfW(const wchar_t *fmt, ...); // __attribute__ ((format (wprintf, 1, 2)));
111+#else
100112 DllExport void OutputDebugPrintf(const char *fmt, ...);
101113 void OutputDebugPrintfW(const wchar_t *fmt, ...);
114+#endif
102115 void OutputDebugHexDump(const void *data, size_t len);
103116 DllExport DWORD get_OPENFILENAME_SIZEA();
104117 DllExport DWORD get_OPENFILENAME_SIZEW();
Afficher sur ancien navigateur de dépôt.