diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-03-19 23:25:00 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-03-19 23:25:00 +0000 |
commit | 104d544fd740c9d583893a476935f0e7fd44345c (patch) | |
tree | f588f5ed7e067678ace08d13f8c9574f7d56c338 /libbb | |
parent | dd5702d696b9ab5a5b3939d660658b7f0e6694ed (diff) | |
download | busybox-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.c | 24 |
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 | ||
19 | void die_if_bad_username(const char *name) | 19 | void 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 | } |