diff options
Diffstat (limited to 'libbb/endofname.c')
-rw-r--r-- | libbb/endofname.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libbb/endofname.c b/libbb/endofname.c new file mode 100644 index 000000000..305f0932b --- /dev/null +++ b/libbb/endofname.c | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * Utility routines. | ||
3 | * | ||
4 | * Copyright (C) 2013 Denys Vlasenko | ||
5 | * | ||
6 | * Licensed under GPLv2, see file LICENSE in this source tree. | ||
7 | */ | ||
8 | |||
9 | //kbuild:lib-y += endofname.o | ||
10 | |||
11 | #include "libbb.h" | ||
12 | |||
13 | #define is_name(c) ((c) == '_' || isalpha((unsigned char)(c))) | ||
14 | #define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c))) | ||
15 | |||
16 | const char* FAST_FUNC | ||
17 | endofname(const char *name) | ||
18 | { | ||
19 | if (!is_name(*name)) | ||
20 | return name; | ||
21 | while (*++name) { | ||
22 | if (!is_in_name(*name)) | ||
23 | break; | ||
24 | } | ||
25 | return name; | ||
26 | } | ||