Changeset 39f84ce4 in mainline for uspace/lib/c/generic/stdio/scanf.c
- Timestamp:
- 2018-06-13T17:11:44Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f4aa1c8
- Parents:
- 5a6c28d1
- git-author:
- Jiri Svoboda <jiri@…> (2018-06-12 18:11:08)
- git-committer:
- Jiri Svoboda <jiri@…> (2018-06-13 17:11:44)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/stdio/scanf.c
r5a6c28d1 r39f84ce4 886 886 /** Determine if character is in scanset. 887 887 * 888 * Note that we support ranges, although that is a GNU extension. 889 * 888 890 * @param c Character 889 891 * @param scanset Pointer to scanset … … 894 896 const char *p = scanset; 895 897 bool inverted = false; 898 char startc; 899 char endc; 896 900 897 901 /* Inverted scanset */ … … 901 905 } 902 906 903 /* ']' character in scanset */ 907 /* 908 * Either ']' or '-' at beginning or after '^' loses special meaning. 909 * However, '-' after ']' (or vice versa) does not. 910 */ 904 911 if (*p == ']') { 912 /* ']' character in scanset */ 905 913 if (c == ']') 906 914 return !inverted; 907 915 ++p; 916 } else if (*p == '-') { 917 /* '-' character in scanset */ 918 if (c == '-') 919 return !inverted; 920 ++p; 908 921 } 909 922 910 923 /* Remaining characters */ 911 924 while (*p != '\0' && *p != ']') { 925 /* '-' is a range unless it's the last character in scanset */ 926 if (*p == '-' && p[1] != ']' && p[1] != '\0') { 927 startc = p[-1]; 928 endc = p[1]; 929 930 if (c >= startc && c <= endc) 931 return !inverted; 932 933 p += 2; 934 continue; 935 } 936 912 937 if (*p == c) 913 938 return !inverted;
Note:
See TracChangeset
for help on using the changeset viewer.