--- pinfo-0.6.9/src/manual.c.mansection 2006-03-16 15:14:30.000000000 +0100 +++ pinfo-0.6.9/src/manual.c 2007-02-23 14:52:30.000000000 +0100 @@ -167,16 +167,29 @@ } i = len; /* find the beginning of the last token */ - for (i = len - 1;(i > 0) &&(!isspace(name1[i])); i--); - - /* if we've found space, then we move to the first nonspace character */ - if (i > 0) - i++; + for (i = len - 1;(i >= 0) &&(!isspace(name1[i])); i--) + ; + i++; /* filename->name */ - strcpy(manualhistory[0].name, &name1[i]); + snprintf(manualhistory[0].name, 256, "%s", &name1[i]); + /* section unknown */ - strcpy(manualhistory[0].sect, ""); + manualhistory[0].sect[0] = 0; + + /* try to find section */ + if (i > 1) { + for (i--; (i >= 0) && isspace(name1[i]); i--) + ; + if (i >= 0) { + name1[i + 1] = 0; + for (; (i >= 0) && !isspace(name1[i]); i--) + ; + i++; + snprintf(manualhistory[0].sect, 32, "%s", &name1[i]); + } + } + /* selected unknown */ manualhistory[0].selected = -1; /* pos=0 */