void /* print link list of projection parameters */ proj_pr_list(PROJ *P) { char const *s; (void)putchar('#'); for (s = P->descr; *s ; ++s) { (void)putchar(*s); if (*s == '\n') (void)putchar('#'); } (void)putchar('\n'); if (pr_list(P, 0)) { (void)fputs("#--- following specified but NOT used\n", stdout); (void)pr_list(P, 1); } }
void x_print_expansions(int nwords, char *const *words, int is_command) { int prefix_len; /* Check if all matches are in the same directory (in this * case, we want to omit the directory name) */ if (!is_command && (prefix_len = x_longest_prefix(nwords, words)) > 0) { int i; /* Special case for 1 match (prefix is whole word) */ if (nwords == 1) prefix_len = x_basename(words[0], NULL); /* Any (non-trailing) slashes in non-common word suffixes? */ for (i = 0; i < nwords; i++) if (x_basename(words[i] + prefix_len, NULL) > prefix_len) break; /* All in same directory? */ if (i == nwords) { XPtrV l; while (prefix_len > 0 && words[0][prefix_len - 1] != '/') prefix_len--; XPinit(l, nwords + 1); for (i = 0; i < nwords; i++) XPput(l, words[i] + prefix_len); XPput(l, NULL); /* Enumerate expansions */ x_putc('\r'); x_putc('\n'); pr_list((char **) XPptrv(l)); XPfree(l); /* not x_free_words() */ return; } } /* Enumerate expansions */ x_putc('\r'); x_putc('\n'); pr_list(words); }