summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2000-02-12 10:41:37 +0000
committerJim Meyering <jim@meyering.net>2000-02-12 10:41:37 +0000
commit31ef40d60bf59f246cb0e80cc7c3437e2a056196 (patch)
tree8b56822572c173ec1e89c927e0191ac36bfa56da /lib
parent66a4b0e7a3e3b92b0d9543ee681a37a8ba7309d7 (diff)
downloadcoreutils-31ef40d60bf59f246cb0e80cc7c3437e2a056196.tar.xz
<libintl.h>: Include.
(_ and N_): Define. (parse_user_spec): Mark translatable strings.
Diffstat (limited to 'lib')
-rw-r--r--lib/userspec.c32
1 files changed, 25 insertions, 7 deletions
diff --git a/lib/userspec.c b/lib/userspec.c
index 135a36c5d..e058b5439 100644
--- a/lib/userspec.c
+++ b/lib/userspec.c
@@ -57,6 +57,14 @@ char *alloca ();
# include <unistd.h>
#endif
+#if ENABLE_NLS
+# include <libintl.h>
+# define _(Text) gettext (Text)
+#else
+# define _(Text) Text
+#endif
+#define N_(Text) Text
+
#ifndef _POSIX_VERSION
struct passwd *getpwnam ();
struct group *getgrnam ();
@@ -125,7 +133,14 @@ const char *
parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
char **username_arg, char **groupname_arg)
{
- static const char *tired = "virtual memory exhausted";
+ static const char *E_no_memory = N_("virtual memory exhausted");
+ static const char *E_invalid_user = N_("invalid user");
+ static const char *E_invalid_group = N_("invalid group");
+ static const char *E_bad_spec =
+ N_("cannot get the login group of a numeric UID");
+ static const char *E_cannot_omit_both =
+ N_("cannot omit both user and group");
+
const char *error_msg;
char *spec; /* A copy we can write on. */
struct passwd *pwd;
@@ -141,6 +156,9 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
/* Find the separator if there is one. */
separator = strchr (spec, ':');
+
+ /* FIXME: accepting `.' as the separator is contrary to POSIX.
+ someday we should drop support for this. */
if (separator == NULL)
separator = strchr (spec, '.');
@@ -157,7 +175,7 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
: separator + 1);
if (u == NULL && g == NULL)
- return "can not omit both user and group";
+ return _(E_cannot_omit_both);
#ifdef __DJGPP__
/* Pretend that we are the user U whose group is G. This makes
@@ -175,13 +193,13 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
{
if (!is_number (u))
- error_msg = "invalid user";
+ error_msg = _(E_invalid_user);
else
{
int use_login_group;
use_login_group = (separator != NULL && g == NULL);
if (use_login_group)
- error_msg = "cannot get the login group of a numeric UID";
+ error_msg = _(E_bad_spec);
else
{
/* FIXME: don't use atoi! */
@@ -224,7 +242,7 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
if (grp == NULL)
{
if (!is_number (g))
- error_msg = "invalid group";
+ error_msg = _(E_invalid_group);
else
{
/* FIXME: don't use atoi! */
@@ -245,7 +263,7 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
{
*username_arg = strdup (u);
if (*username_arg == NULL)
- error_msg = tired;
+ error_msg = _(E_no_memory);
}
if (groupname != NULL && error_msg == NULL)
@@ -258,7 +276,7 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
free (*username_arg);
*username_arg = NULL;
}
- error_msg = tired;
+ error_msg = _(E_no_memory);
}
}
}