int ret = 0;
lc_opt_err_info_t err;
- char *end, *buf;
+ char *end, *buf, *eqsign;
if(n >= n_prefix && strncmp(opt_prefix, arg, n_prefix) == 0) {
arg = arg + n_prefix;
/* find the next delimiter (the -) and extract the string up to
* there. */
- end = strchr(arg, OPT_DELIM);
+ end = strchr(arg, OPT_DELIM);
+ eqsign = strchr(arg, '=');
+ if (eqsign && eqsign < end)
+ end = NULL;
while(end != NULL) {
/*
* Copy the part of the option into the buffer and add the
/* Find the next option part delimiter. */
arg = end + 1;
- end = strchr(arg, OPT_DELIM);
+ end = strchr(arg, OPT_DELIM);
+ eqsign = strchr(arg, '=');
+ if (eqsign && eqsign < end)
+ end = NULL;
obstack_free(&obst, buf);
}
strncpy(home_dir_ini_file, local_ini_file, sizeof(home_dir_ini_file));
home_dir_ini_file[sizeof(home_dir_ini_file) - 1] = '\0';
#else
- strcpy(path, getpwuid(getuid())->pw_dir);
- strncat(path, "/", sizeof(path));
- /* .<cmnt>rc */
- snprintf(home_dir_ini_file, sizeof(home_dir_ini_file), ".%src", ini_name);
- home_dir_ini_file[sizeof(home_dir_ini_file) - 1] = '\0';
+ {
+ struct passwd *entry = getpwuid(getuid());
+ if (entry != NULL) {
+ strcpy(path, entry->pw_dir);
+ strncat(path, "/", sizeof(path));
+ /* .<cmnt>rc */
+ snprintf(home_dir_ini_file, sizeof(home_dir_ini_file), ".%src", ini_name);
+ home_dir_ini_file[sizeof(home_dir_ini_file) - 1] = '\0';
+ } else {
+ /* FIXME: some error occured */
+ home_dir_ini_file[0] = '\0';
+ }
+ }
#endif
strncat(path, home_dir_ini_file, sizeof(path));