| 90 | | strfcpy (buffer, pw->pw_gecos, sizeof (buffer)); |
| 91 | | if ((p = strchr (buffer, ','))) |
| 92 | | *p = 0; |
| 93 | | a->personal = safe_strdup (buffer); |
| | 89 | regmatch_t pat_match[1]; |
| | 90 | |
| | 91 | /* Use regular expression to parse Gecos field. This result of the |
| | 92 | * parsing will be used as the personal ID string when the alias is |
| | 93 | * expaned. |
| | 94 | */ |
| | 95 | if (regexec (GecosMask.rx, pw->pw_gecos, 1, pat_match, 0) == 0) |
| | 96 | { |
| | 97 | /* Malloc enough for the matching pattern + terminating NULL */ |
| | 98 | a->personal = safe_malloc ((pat_match[0].rm_eo - |
| | 99 | pat_match[0].rm_so) + 1); |
| | 100 | |
| | 101 | strfcpy (a->personal, pw->pw_gecos + pat_match[0].rm_so, |
| | 102 | pat_match[0].rm_eo - pat_match[0].rm_so + 1); |
| | 103 | } |
| | 104 | |