- path_list = getenv("PATH");
- if (path_list != NULL) {
- size_t path_len = strlen(path_list);
- char *new_list = NULL;
- count = 1;
-
- for (i = 0; i <= path_len; i++) {
- char *this_i = &path_list[i];
- if (*this_i == ':') {
- /* ^::[^:] == \.: */
- if (!i && (*(this_i + 1) == ':')) {
- *this_i = '.';
- continue;
- }
- *this_i = 0;
- count++;
- /* ^:[^:] == \.0 and [^:]::[^:] == 0\.0 and [^:]:$ == 0\.0 */
- if (!i || (*(this_i + 1) == ':') || (i == path_len-1)) {
- new_list = xrealloc(new_list, path_len += 1);
- if (i) {
- memmove(&new_list[i+2], &path_list[i+1], path_len-i);
- new_list[i+1] = '.';
- memmove(new_list, path_list, i);
- } else {
- memmove(&new_list[i+1], &path_list[i], path_len-i);
- new_list[i] = '.';
- }
- path_list = new_list;
- }
- }
- }
- } else {
- path_list = "/bin\0/sbin\0/usr/bin\0/usr/sbin\0/usr/local/bin";
- count = 5;