git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 00/41] Add and use error_errno() and warning_errno()

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
May 3, 2016, 12:03 UTC
Message-ID
<1462277054-5943-1-git-send-email-pclouds@gmail.com>
In-Reply-To
<1462101297-8610-1-git-send-email-pclouds@gmail.com>
Changes are in
  [01/41] usage.c: move format processing out of die_errno()
  [02/41] usage.c: add warning_errno() and error_errno()
  [12/41] builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
  [17/41] compat/win32/syslog.c: use warning_errno()
  [27/41] grep.c: use error_errno()

12/41 is basically a revert with s/strerror(errno)/strerror(err)/. Interdiff from v1

-- 8< --
diff --git a/builtin/update-index.c b/builtin/update-index.c
index 0c539ed..b8b8522 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -251,11 +251,11 @@ static int remove_one_path(const char *path)
  *    succeeds.
  *  - permission error. That's never ok.
  */
-static int process_lstat_error(const char *path)
+static int process_lstat_error(const char *path, int err)
 {
-	if (errno == ENOENT || errno == ENOTDIR)
+	if (err == ENOENT || err == ENOTDIR)
 		return remove_one_path(path);
-	return error_errno("lstat(\"%s\")", path);
+	return error("lstat(\"%s\"): %s", path, strerror(err));
 }
 
 static int add_one_path(const struct cache_entry *old, const char *path, int len, struct stat *st)
@@ -382,7 +382,7 @@ static int process_path(const char *path)
 	 * what to do about the pathname!
 	 */
 	if (lstat(path, &st) < 0)
-		return process_lstat_error(path);
+		return process_lstat_error(path, errno);
 
 	if (S_ISDIR(st.st_mode))
 		return process_directory(path, len, &st);
diff --git a/compat/win32/syslog.c b/compat/win32/syslog.c
index 1c2ae18..6c7c9b6 100644
--- a/compat/win32/syslog.c
+++ b/compat/win32/syslog.c
@@ -28,7 +28,7 @@ void syslog(int priority, const char *fmt, ...)
 	va_end(ap);
 
 	if (str_len < 0) {
-		warning_errno("vsnprintf failed:");
+		warning_errno("vsnprintf failed");
 		return;
 	}
 
diff --git a/grep.c b/grep.c
index 87c1890..4f3779a 100644
--- a/grep.c
+++ b/grep.c
@@ -1732,7 +1732,7 @@ static int grep_source_load_file(struct grep_source *gs)
 	if (lstat(filename, &st) < 0) {
 	err_ret:
 		if (errno != ENOENT)
-			error_errno(_("'%s'"), filename);
+			error_errno("'%s'", filename);
 		return -1;
 	}
 	if (!S_ISREG(st.st_mode))
diff --git a/usage.c b/usage.c
index af1b7d1..1dad03f 100644
--- a/usage.c
+++ b/usage.c
@@ -109,9 +109,8 @@ void NORETURN die(const char *err, ...)
 	va_end(params);
 }
 
-static const char *fmt_with_err(const char *fmt)
+static const char *fmt_with_err(char *buf, int n, const char *fmt)
 {
-	static char fmt_with_err[1024];
 	char str_error[256], *err;
 	int i, j;
 
@@ -129,12 +128,13 @@ static const char *fmt_with_err(const char *fmt)
 		}
 	}
 	str_error[j] = 0;
-	snprintf(fmt_with_err, sizeof(fmt_with_err), "%s: %s", fmt, str_error);
-	return fmt_with_err;
+	snprintf(buf, n, "%s: %s", fmt, str_error);
+	return buf;
 }
 
 void NORETURN die_errno(const char *fmt, ...)
 {
+	char buf[1024];
 	va_list params;
 
 	if (die_is_recursing()) {
@@ -144,16 +144,17 @@ void NORETURN die_errno(const char *fmt, ...)
 	}
 
 	va_start(params, fmt);
-	die_routine(fmt_with_err(fmt), params);
+	die_routine(fmt_with_err(buf, sizeof(buf), fmt), params);
 	va_end(params);
 }
 
 int error_errno(const char *fmt, ...)
 {
+	char buf[1024];
 	va_list params;
 
 	va_start(params, fmt);
-	error_routine(fmt_with_err(fmt), params);
+	error_routine(fmt_with_err(buf, sizeof(buf), fmt), params);
 	va_end(params);
 	return -1;
 }
@@ -171,10 +172,11 @@ int error(const char *err, ...)
 
 void warning_errno(const char *warn, ...)
 {
+	char buf[1024];
 	va_list params;
 
 	va_start(params, warn);
-	warn_routine(fmt_with_err(warn), params);
+	warn_routine(fmt_with_err(buf, sizeof(buf), warn), params);
 	va_end(params);
 }
 
-- 8< --
--
Duy
Previous: Duy NguyenNext: Nguyễn Thái Ngọc Duy
Message 54 of 145 in “Add and use error_errno() and warning_errno()”
  1. 00/41 Add and use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  2. 01/41 usage.c: move format processing out of die_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  3. Eric SunshineMay 1, 2016
  4. Junio C HamanoMay 2, 2016
  5. Jeff KingMay 3, 2016
  6. Duy NguyenMay 3, 2016
  7. Jeff KingMay 3, 2016
  8. 02/41 usage.c: add warning_errno() and error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  9. 03/41 bisect.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  10. 04/41 builtin/am.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  11. 05/41 builtin/branch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  12. 06/41 builtin/fetch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  13. 07/41 builtin/help.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  14. 08/41 builtin/mailsplit.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  15. Eric SunshineMay 1, 2016
  16. 09/41 builtin/merge-file.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  17. 10/41 builtin/pack-objects.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  18. 11/41 builtin/rm.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  19. 12/41 builtin/update-index.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  20. Eric SunshineMay 1, 2016
  21. Duy NguyenMay 2, 2016
  22. 13/41 builtin/upload-archive.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  23. 14/41 builtin/worktree.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  24. 15/41 check-racy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  25. 16/41 combine-diff.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  26. 17/41 compat/win32/syslog.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  27. Eric SunshineMay 1, 2016
  28. 18/41 config.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  29. 19/41 connected.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  30. 20/41 copy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  31. 21/41 credential-cache--daemon.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  32. 22/41 diff-no-index.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  33. 23/41 editor.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  34. 24/41 entry.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  35. 25/41 fast-import.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  36. 26/41 gpg-interface.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  37. 27/41 grep.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  38. Eric SunshineMay 1, 2016
  39. 28/41 http.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  40. 29/41 ident.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  41. 30/41 mailmap.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  42. 31/41 reachable.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  43. 32/41 rerere.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  44. 33/41 run-command.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  45. 34/41 sequencer.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  46. 35/41 server-info.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  47. 36/41 sha1_file.c: use {error,die,warning}_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  48. 37/41 transport-helper.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  49. 38/41 unpack-trees.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  50. 39/41 upload-pack.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  51. 40/41 vcs-svn: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  52. 41/41 wrapper.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  53. Duy NguyenMay 1, 2016
  54. 00/41 Add and use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  55. 01/41 usage.c: move format processing out of die_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  56. 02/41 usage.c: add warning_errno() and error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  57. 03/41 bisect.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  58. 04/41 builtin/am.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  59. 05/41 builtin/branch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  60. 06/41 builtin/fetch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  61. Junio C HamanoMay 3, 2016
  62. 07/41 builtin/help.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  63. 08/41 builtin/mailsplit.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  64. Junio C HamanoMay 3, 2016
  65. 09/41 builtin/merge-file.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  66. 10/41 builtin/pack-objects.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  67. Junio C HamanoMay 3, 2016
  68. 11/41 builtin/rm.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  69. Junio C HamanoMay 3, 2016
  70. 12/41 builtin/update-index.c: prefer "err" to "errno" in process_lstat_errorNguyễn Thái Ngọc Duy, May 3, 2016
  71. Eric SunshineMay 3, 2016
  72. 13/41 builtin/upload-archive.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  73. 14/41 builtin/worktree.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  74. Junio C HamanoMay 3, 2016
  75. 15/41 check-racy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  76. 16/41 combine-diff.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  77. 17/41 compat/win32/syslog.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  78. 18/41 config.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  79. 19/41 connected.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  80. 20/41 copy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  81. 21/41 credential-cache--daemon.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  82. 22/41 diff-no-index.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  83. 23/41 editor.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  84. 24/41 entry.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  85. 25/41 fast-import.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  86. 26/41 gpg-interface.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  87. 27/41 grep.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  88. 28/41 http.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  89. 29/41 ident.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  90. 30/41 mailmap.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  91. 31/41 reachable.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  92. 32/41 rerere.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  93. 33/41 run-command.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  94. 34/41 sequencer.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  95. 35/41 server-info.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  96. 36/41 sha1_file.c: use {error,die,warning}_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  97. 37/41 transport-helper.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  98. 38/41 unpack-trees.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  99. 39/41 upload-pack.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  100. 40/41 vcs-svn: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  101. 41/41 wrapper.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  102. Eric SunshineMay 3, 2016
  103. Junio C HamanoMay 3, 2016
  104. 00/41 Add and use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  105. 01/41 usage.c: move format processing out of die_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  106. 02/41 usage.c: add warning_errno() and error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  107. 03/41 bisect.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  108. 04/41 builtin/am.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  109. 05/41 builtin/branch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  110. 06/41 builtin/fetch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  111. 07/41 builtin/help.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  112. 08/41 builtin/mailsplit.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  113. 09/41 builtin/merge-file.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  114. 10/41 builtin/pack-objects.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  115. 11/41 builtin/rm.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  116. 12/41 builtin/update-index.c: prefer "err" to "errno" in process_lstat_errorNguyễn Thái Ngọc Duy, May 8, 2016
  117. 13/41 builtin/upload-archive.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  118. 14/41 builtin/worktree.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  119. 15/41 check-racy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  120. 16/41 combine-diff.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  121. 17/41 compat/win32/syslog.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  122. 18/41 config.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  123. 19/41 connected.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  124. 20/41 copy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  125. 21/41 credential-cache--daemon.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  126. 22/41 diff-no-index.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  127. 23/41 editor.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  128. 24/41 entry.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  129. 25/41 fast-import.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  130. 26/41 gpg-interface.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  131. 27/41 grep.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  132. 28/41 http.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  133. 29/41 ident.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  134. 30/41 mailmap.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  135. 31/41 reachable.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  136. 32/41 rerere.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  137. 33/41 run-command.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  138. 34/41 sequencer.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  139. 35/41 server-info.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  140. 36/41 sha1_file.c: use {error,die,warning}_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  141. 37/41 transport-helper.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  142. 38/41 unpack-trees.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  143. 39/41 upload-pack.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  144. 40/41 vcs-svn: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  145. 41/41 wrapper.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.