aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-03-19 23:25:00 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-03-19 23:25:00 +0000
commit104d544fd740c9d583893a476935f0e7fd44345c (patch)
treef588f5ed7e067678ace08d13f8c9574f7d56c338 /libbb
parentdd5702d696b9ab5a5b3939d660658b7f0e6694ed (diff)
downloadbusybox-w32-104d544fd740c9d583893a476935f0e7fd44345c.tar.gz
busybox-w32-104d544fd740c9d583893a476935f0e7fd44345c.tar.bz2
busybox-w32-104d544fd740c9d583893a476935f0e7fd44345c.zip
die_if_bad_username: shrink: 88 -> 77 bytes
Diffstat (limited to 'libbb')
-rw-r--r--libbb/die_if_bad_username.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/libbb/die_if_bad_username.c b/libbb/die_if_bad_username.c
index 251b1f06c..337ac6012 100644
--- a/libbb/die_if_bad_username.c
+++ b/libbb/die_if_bad_username.c
@@ -18,17 +18,19 @@
18 18
19void die_if_bad_username(const char *name) 19void die_if_bad_username(const char *name)
20{ 20{
21 int i = 0; 21 goto skip; /* 1st char being dash isn't valid */
22
23 do { 22 do {
24 if (!isalnum(*name) 23 if (*name == '-')
25 && !(*name == '_') 24 continue;
26 && !(*name == '.') 25 skip:
27 && !(*name == '@') 26 if (isalnum(*name)
28 && !(*name == '-' && i) 27 || *name == '_'
29 && !(*name == '$' && !*(name + 1)) 28 || *name == '.'
30 ) 29 || *name == '@'
31 bb_error_msg_and_die("illegal character '%c'", *name); 30 || (*name == '$' && !*(name + 1))
32 i++; 31 ) {
32 continue;
33 }
34 bb_error_msg_and_die("illegal character '%c'", *name);
33 } while (*++name); 35 } while (*++name);
34} 36}