commit: 9f69b242880475285c28b1d85bf0c8088073e0db
parent f2a432050b30d96115b461a355862b970988d810
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Fri, 20 Sep 2024 03:55:26 +0200
cmd/rm: unify error message formatting
Diffstat:
2 files changed, 24 insertions(+), 20 deletions(-)
diff --git a/cmd/rm.c b/cmd/rm.c
@@ -44,7 +44,7 @@ do_unlinkat(int fd, char *name, char *acc_path)
 			return 0;
 		}
 
-		fprintf(stderr, "rm: Failed getting status for '%s': %s\n", acc_path, strerror(errno));
+		fprintf(stderr, "rm: error: Failed getting status for '%s': %s\n", acc_path, strerror(errno));
 		errno = 0;
 		return 1;
 	}
@@ -55,7 +55,7 @@ do_unlinkat(int fd, char *name, char *acc_path)
 	{
 		if(!recurse)
 		{
-			fprintf(stderr, "rm: Is a directory, pass -r or -d to remove: %s\n", acc_path);
+			fprintf(stderr, "rm: error: Is a directory, pass -r or -d to remove: %s\n", acc_path);
 			return 1;
 		}
 
@@ -66,7 +66,8 @@ do_unlinkat(int fd, char *name, char *acc_path)
 		int dir = openat(fd, name, O_RDONLY | O_DIRECTORY | O_CLOEXEC);
 		if(dir == -1)
 		{
-			fprintf(stderr, "rm: Couldn't open '%s' as directory: %s\n", acc_path, strerror(errno));
+			fprintf(
+			    stderr, "rm: error: Couldn't open '%s' as directory: %s\n", acc_path, strerror(errno));
 			errno = 0;
 			return 1;
 		}
@@ -75,8 +76,10 @@ do_unlinkat(int fd, char *name, char *acc_path)
 		DIR *dirp = fdopendir(dir);
 		if(dirp == NULL)
 		{
-			fprintf(
-			    stderr, "rm: Couldn't get DIR entry for opened '%s': %s\n", acc_path, strerror(errno));
+			fprintf(stderr,
+			        "rm: error: Couldn't get DIR entry for opened '%s': %s\n",
+			        acc_path,
+			        strerror(errno));
 			errno = 0;
 			return 1;
 		}
@@ -89,7 +92,8 @@ do_unlinkat(int fd, char *name, char *acc_path)
 			{
 				if(errno == 0) break;
 
-				fprintf(stderr, "rm: Failed reading directory '%s': %s\n", acc_path, strerror(errno));
+				fprintf(
+				    stderr, "rm: error: Failed reading directory '%s': %s\n", acc_path, strerror(errno));
 				closedir(dirp); // error ignored
 				errno = 0;
 				return 1;
@@ -103,7 +107,7 @@ do_unlinkat(int fd, char *name, char *acc_path)
 			if(snprintf(new_path, PATH_MAX, "%s/%s", acc_path, dp->d_name) < 0)
 			{
 				fprintf(stderr,
-				        "rm: Couldn't concatenate '%s' into parent '%s', skipping to next entry: %s",
+				        "rm: error: Couldn't concatenate '%s' into parent '%s', skipping to next entry: %s",
 				        name,
 				        acc_path,
 				        strerror(errno));
@@ -122,7 +126,7 @@ do_unlinkat(int fd, char *name, char *acc_path)
 		if(closedir(dirp) != 0)
 		{
 			fprintf(stderr,
-			        "rm: Deallocating directory entry for '%s' failed: %s\n",
+			        "rm: error: Deallocating directory entry for '%s' failed: %s\n",
 			        acc_path,
 			        strerror(errno));
 			errno = 0;
@@ -152,7 +156,7 @@ do_unlinkat(int fd, char *name, char *acc_path)
 	assert(errno == 0);
 	if(unlinkat(fd, name, is_dir ? AT_REMOVEDIR : 0) != 0)
 	{
-		fprintf(stderr, "rm: Couldn't remove '%s': %s\n", acc_path, strerror(errno));
+		fprintf(stderr, "rm: error: Couldn't remove '%s': %s\n", acc_path, strerror(errno));
 		errno = 0;
 		return 1;
 	}
@@ -197,11 +201,11 @@ main(int argc, char *argv[])
 			verbose = true;
 			break;
 		case ':':
-			fprintf(stderr, "rm: Error: Missing operand for option: '-%c'\n", optopt);
+			fprintf(stderr, "rm: error: Missing operand for option: '-%c'\n", optopt);
 			usage();
 			return 1;
 		case '?':
-			fprintf(stderr, "rm: Error: Unrecognised option: '-%c'\n", optopt);
+			fprintf(stderr, "rm: error: Unrecognised option: '-%c'\n", optopt);
 			usage();
 			return 1;
 		default:
@@ -216,7 +220,7 @@ main(int argc, char *argv[])
 	setlocale(LC_ALL, "");
 	if(errno != 0)
 	{
-		fprintf(stderr, "%s: Warning: Failed to initialize locales: %s\n", argv0, strerror(errno));
+		fprintf(stderr, "%s: warning: Failed to initialize locales: %s\n", argv0, strerror(errno));
 		errno = 0;
 	}
 
@@ -224,7 +228,7 @@ main(int argc, char *argv[])
 
 	if(argc == 0 && !force)
 	{
-		fprintf(stderr, "rm: missing operand\n");
+		fprintf(stderr, "rm: error: missing operand\n");
 		usage();
 		return 1;
 	}
diff --git a/test-cmd/rm.t b/test-cmd/rm.t
@@ -15,7 +15,7 @@ POSIX rm(1p) step 1a, no -f option
   $ touch exists
   $ test -f exists
   $ rm enoent exists
-  rm: Failed getting status for 'enoent': No such file or directory
+  rm: error: Failed getting status for 'enoent': No such file or directory
   [1]
   $ test ! -e exists
 
@@ -33,7 +33,7 @@ POSIX rm(1p) step 2a:
   $ touch no_rR.f
   $ test -f no_rR.f
   $ rm no_rR.d no_rR.f
-  rm: Is a directory, pass -r or -d to remove: no_rR.d
+  rm: error: Is a directory, pass -r or -d to remove: no_rR.d
   [1]
   $ test -d no_rR.d
   $ test ! -e no_rR.f
@@ -122,13 +122,13 @@ Verbose
 POSIX, -f shouldn't return an error when non-existant files are passed
   $ rm -f /var/empty/e/no/ent
   $ rm /var/empty/e/no/ent
-  rm: Failed getting status for '/var/empty/e/no/ent': No such file or directory
+  rm: error: Failed getting status for '/var/empty/e/no/ent': No such file or directory
   [1]
 
 POSIX, -f shouldn't return an error when no operands are passed
   $ rm -f
   $ rm
-  rm: missing operand
+  rm: error: missing operand
   Usage: rm [-firRv] [files ...]
   [1]
 
@@ -139,7 +139,7 @@ POSIX 2024/D4.1, -d
   $ mkdir non_empty_dir
   $ touch non_empty_dir/.keep
   $ rm -d non_empty_dir
-  rm: Couldn't remove 'non_empty_dir': Directory not empty
+  rm: error: Couldn't remove 'non_empty_dir': Directory not empty
   [1]
   $ test -e non_empty_dir
   $ rm -fr non_empty_dir
@@ -156,7 +156,7 @@ Correct path when multiple files are given
   $ touch path_v_foo path_v_bar
   $ rm -v path_v_foo path_v_enoent path_v_bar
   rm: Removed: path_v_foo
-  rm: Failed getting status for 'path_v_enoent': No such file or directory
+  rm: error: Failed getting status for 'path_v_enoent': No such file or directory
   rm: Removed: path_v_bar
   [1]
   $ test ! -e path_v_foo
@@ -167,7 +167,7 @@ Correct path when multiple files are given
   rm: Removed: dir_v_foo/ba[zr] (re)
   rm: Removed: dir_v_foo/ba[zr] (re)
   rm: Removed: dir_v_foo
-  rm: Failed getting status for 'dir_v_foo/baz': No such file or directory
+  rm: error: Failed getting status for 'dir_v_foo/baz': No such file or directory
   rm: Removed: dir_v_bar/foo
   rm: Removed: dir_v_bar
   rm: Removed: dir_v_dir/foo.d