** When \fIset\fP, info about unsubscribed newsgroups will be saved into
** ``newsrc'' file and into cache.
*/
+ { "shorten_hierarchy", DT_BOOL, R_NONE, OPTSHORTENHIERARCHY, 0 },
+ /*
+ ** .pp
+ ** When \fIset\fP, the "hierarchy" of the sidebar entries will be shortened,
+ ** e.g. de.alt.sysadmin.recovery becomes d.a.s.recovery.
+ */
{ "show_new_news", DT_BOOL, R_NONE, OPTSHOWNEWNEWS, 1 },
/*
** .pp
OPTNEWSSEND, /* (pseudo) used to change behavior when posting */
OPTNEWSCACHE, /* (pseudo) used to indicate if news cache exist */
#endif
+ OPTSHORTENHIERARCHY, /* set when to shorten "hierarchies" in the sidebar */
OPTMAX
};
}
}
+static char * shortened_hierarchy(char * box) {
+ int dots = 0;
+ char * last_dot;
+ int i,j;
+ char * new_box;
+ for (i=0;i<strlen(box);++i)
+ if (box[i] == '.') ++dots;
+ last_dot = strrchr(box,'.');
+ if (last_dot) {
+ ++last_dot;
+ new_box = safe_malloc(strlen(last_dot)+2*dots+1);
+ new_box[0] = box[0];
+ for (i=1,j=1;i<strlen(box);++i) {
+ if (box[i] == '.') {
+ new_box[j++] = '.';
+ new_box[j] = 0;
+ if (&box[i+1] != last_dot) {
+ new_box[j++] = box[i+1];
+ new_box[j] = 0;
+ } else {
+ strcat(&new_box[j],last_dot);
+ break;
+ }
+ }
+ }
+ return new_box;
+ }
+ return safe_strdup(box);
+}
+
char *make_sidebar_entry(char *box, int size, int new)
{
static char *entry = 0;
}
}
#endif
+ if (option(OPTSHORTENHIERARCHY)) {
+ box = shortened_hierarchy(box);
+ }
i = strlen(box);
strncpy( entry, box, i < SidebarWidth ? i :SidebarWidth );
"% d(%d)", size, new);
else
sprintf( entry + SidebarWidth - 3 - quick_log10(size), "% d", size);
+ if (option(OPTSHORTENHIERARCHY)) {
+ free(box);
+ }
return entry;
}