* strings.h (strechr): New function.
* uinfo.cc (pwdgrp::next_str): Search only for input char in string. Return EOS on failure. Don't check for NULL since it shouldn't be possible. (pwdgrp::add_line): Revert to replacing '\n' in input line with '\0'. (pwdgrp::next_num): Pass explicit separator character to next_str. * grp.cc (pwdgrp::parse_group): Ditto. * passwd.cc (pwdgrp::parse_passwd): Ditto. Revamp test for garbage input. * pwdgrp.h (pwdgrp::next_str): Don't use default parameter.
This commit is contained in:
@ -38,6 +38,27 @@ strchr (const char *s, int c)
|
||||
return res;
|
||||
}
|
||||
|
||||
#undef strechr
|
||||
#define strechr cygwin_strechr
|
||||
static inline __stdcall char *
|
||||
strechr (const char *s, int c)
|
||||
{
|
||||
register char * res;
|
||||
__asm__ __volatile__ ("\
|
||||
movb %%al,%%ah\n\
|
||||
1: movb (%1),%%al\n\
|
||||
cmpb %%ah,%%al\n\
|
||||
je 2f\n\
|
||||
incl %1\n\
|
||||
testb %%al,%%al\n\
|
||||
jne 1b\n\
|
||||
decl %1\n\
|
||||
2: movl %1,%0\n\
|
||||
":"=a" (res), "=r" (s)
|
||||
:"0" (c), "1" (s));
|
||||
return res;
|
||||
}
|
||||
|
||||
extern const char isalpha_array[];
|
||||
|
||||
#undef strcasematch
|
||||
|
Reference in New Issue
Block a user