[Pinfo-devel] r91 - pinfo/branches/cxx/src
Nathanael Nerode
neroden-guest at costa.debian.org
Tue Aug 30 12:25:08 UTC 2005
Author: neroden-guest
Date: 2005-08-30 12:25:07 +0000 (Tue, 30 Aug 2005)
New Revision: 91
Modified:
pinfo/branches/cxx/src/manual.cxx
pinfo/branches/cxx/src/printinfo.cxx
Log:
Convert fields of manuallinks to std::string.
Modified: pinfo/branches/cxx/src/manual.cxx
===================================================================
--- pinfo/branches/cxx/src/manual.cxx 2005-08-30 12:06:33 UTC (rev 90)
+++ pinfo/branches/cxx/src/manual.cxx 2005-08-30 12:25:07 UTC (rev 91)
@@ -104,9 +104,9 @@
/* column of that line */
int col;
/* name of the reference */
- char *name;
+ string name;
/* section of the reference */
- char section[32];
+ string section;
int section_mark;
/* determine whether there is a hyphen above */
int carry;
@@ -139,11 +139,7 @@
}
/* ...and for the list of manual hypertext */
if (manuallinks.size() > 0)
- { /* links */
- for (i = 0; i < manuallinks.size(); i++)
- {
- xfree(manuallinks[i].name);
- }
+ {
manuallinks.clear();
selected = -1;
}
@@ -188,39 +184,43 @@
construct_manualname(string& buf, int which)
{
if (!manuallinks[which].carry) {
- string tmpname = manuallinks[which].name;
+ buf = manuallinks[which].name;
/* workaround for names starting with '(' */
- if (tmpname[0] == '(')
- tmpname.erase(0);
- buf = tmpname;
+ if (buf[0] == '(')
+ buf.erase(0);
} else if (manuallinks[which].section_mark < HTTPSECTION) {
/* normal manual reference */
- string tmpstr = manual[manuallinks[which].line - 1];
- strip_manual(tmpstr);
+ buf = manual[manuallinks[which].line - 1];
+ strip_manual(buf);
string::size_type idx;
/* Delete last two characters (e.g. .1) FIXME */
- tmpstr.resize(tmpstr.length() - 2);
+ buf.resize(buf.length() - 2);
/* Find tail with decent characters */
- idx = tmpstr.length() - 1;
- while ( ( (isalpha(tmpstr[idx]))
- || (tmpstr[idx] == '.')
- || (tmpstr[idx] == '_')
+ idx = buf.length() - 1;
+ while ( ( (isalpha(buf[idx]))
+ || (buf[idx] == '.')
+ || (buf[idx] == '_')
)
&& (idx > 0)
) {
idx--;
}
/* workaround for man pages with leading '(' see svgalib man pages */
- if (tmpstr[idx] == '(')
+ if (buf[idx] == '(')
idx++;
/* Delete characters before tail */
- tmpstr.erase(0, idx);
+ buf.erase(0, idx);
- tmpstr.append(manuallinks[which].name);
- buf = tmpstr;
+ buf += manuallinks[which].name;
} else {
/* URL reference */
+ /* Start with manuallinks[which].name, with its
+ * trailing hyphen removed
+ */
+ buf = manuallinks[which].name;
+ buf.resize(buf.length() - 1);
+
string tmpstr;
tmpstr = manual[manuallinks[which].line + 1];
strip_manual(tmpstr);
@@ -235,14 +235,7 @@
string::size_type urlend_idx = findurlend(tmpstr);
tmpstr.resize(urlend_idx);
- /* Prepend manuallinks[which].name, with its
- * trailing hyphen removed
- */
- string tmpname = manuallinks[which].name;
- tmpname.resize(tmpname.length() - 1);
- tmpname.append(tmpstr);
-
- buf = tmpname;
+ buf += tmpstr;
}
}
@@ -423,7 +416,7 @@
strcpy(manualhistory[manualhistorylength].name,
manualname_string.c_str());
strcpy(manualhistory[manualhistorylength].sect,
- manuallinks[return_value].section);
+ manuallinks[return_value].section.c_str());
}
/* loading manual page and its defaults... */
loadmanual(id);
@@ -543,7 +536,6 @@
int tmpcnt = strlen(tmp) + 1;
char *link = tmp;
char *urlstart, *urlend;
- long initialManualLinks = manuallinks.size();
int i, b;
/******************************************************************************
* handle url refrences *
@@ -556,11 +548,9 @@
manuallink my_link;
my_link.line = ManualLines;
my_link.col = urlstart - tmp;
- strcpy(my_link.section, "HTTPSECTION");
+ my_link.section = "HTTPSECTION";
my_link.section_mark = HTTPSECTION;
- my_link.name = (char*)xmalloc(urlend - urlstart + 10);
- strncpy(my_link.name, urlstart, urlend - urlstart);
- my_link.name[urlend - urlstart] = 0;
+ my_link.name.assign(urlstart, urlend - urlstart - 1);
if (ishyphen(my_link.name[urlend - urlstart - 1]))
my_link.carry = 1;
else
@@ -575,11 +565,9 @@
manuallink my_link;
my_link.line = ManualLines;
my_link.col = urlstart - tmp;
- strcpy(my_link.section, "FTPSECTION");
+ my_link.section = "FTPSECTION";
my_link.section_mark = FTPSECTION;
- my_link.name = (char*)xmalloc(urlend - urlstart + 10);
- strncpy(my_link.name, urlstart, urlend - urlstart);
- my_link.name[urlend - urlstart] = 0;
+ my_link.name.assign(urlstart, urlend - urlstart - 1);
if (ishyphen(my_link.name[urlend - urlstart - 1]))
my_link.carry = 1;
else
@@ -594,18 +582,16 @@
manuallink my_link;
my_link.line = ManualLines;
my_link.col = urlstart - tmp;
- strcpy(my_link.section, "MAILSECTION");
+ my_link.section = "MAILSECTION";
my_link.section_mark = MAILSECTION;
- my_link.name = (char*)xmalloc(urlend - urlstart + 10);
- strncpy(my_link.name, urlstart, urlend - urlstart);
- my_link.name[urlend - urlstart] = 0;
+ my_link.name.assign(urlstart, urlend - urlstart - 1);
if (ishyphen(my_link.name[urlend - urlstart - 1]))
my_link.carry = 1;
else
my_link.carry = 0;
/* there should be a dot in e-mail domain */
- if (strchr(my_link.name, '.') != NULL) {
+ if (my_link.name.find('.') != string::npos) {
manuallinks.push_back(my_link);
}
}
@@ -687,16 +673,15 @@
{
for (b = 1; link[b] != ')'; b++)
my_link.section[b - 1] = tolower(link[b]);
- my_link.section[b - 1] = 0;
+ my_link.section.resize(b - 1);
}
else
{
my_link.section[0] = link[1];
- my_link.section[1] = 0;
+ my_link.section.resize(1);
}
my_link.section_mark = 0;
- my_link.name = (char*)xmalloc((breakpos - i) + 10);
- strcpy(my_link.name, tmp + i);
+ my_link.name = (tmp + i);
tmp[breakpos] = tempchar;
/* check whether this is a carry'ed entry(i.e. in the
@@ -829,7 +814,7 @@
my_link.carry = 0;
my_link.section_mark = 0;
- strcpy(my_link.section, " ");
+ my_link.section = " ";
my_link.line = -1;
my_link.col = -1;
manuallinks.push_back(my_link);
@@ -1220,7 +1205,7 @@
if ((manuallinks[selected].line >= manualpos) &&
(manuallinks[selected].line < manualpos +(maxy - 1)))
{
- if (!strncmp(manuallinks[selected].section, "HTTPSECTION", 11))
+ if (manuallinks[selected].section == "HTTPSECTION")
{
string tmp_manualname; /* Filled by construct_manualname */
construct_manualname(tmp_manualname, selected);
@@ -1232,7 +1217,7 @@
system(tmp_cmd.c_str());
doupdate();
}
- else if (!strncmp(manuallinks[selected].section, "FTPSECTION", 10))
+ else if (manuallinks[selected].section == "FTPSECTION")
{
string tmp_manualname; /* Filled by construct_manualname */
construct_manualname(tmp_manualname, selected);
@@ -1244,7 +1229,7 @@
system(tmp_cmd.c_str());
doupdate();
}
- else if (!strncmp(manuallinks[selected].section, "MAILSECTION", 11))
+ else if (manuallinks[selected].section == "MAILSECTION")
{
string tmp_manualname; /* Filled by construct_manualname */
construct_manualname(tmp_manualname, selected);
@@ -1286,7 +1271,7 @@
{
if (manuallinks[i].col <= mouse.x - 1)
{
- if (manuallinks[i].col + strlen(manuallinks[i].name) >= mouse.x - 1)
+ if (manuallinks[i].col + manuallinks[i].name.length() >= mouse.x - 1)
{
selected = i;
done = 1;
@@ -1302,7 +1287,7 @@
{
if (manuallinks[i].col <= mouse.x - 1)
{
- if (manuallinks[i].col + strlen(manuallinks[i].name) >= mouse.x - 1)
+ if (manuallinks[i].col + manuallinks[i].name.length() >= mouse.x - 1)
{
selected = i;
done = 1;
@@ -1327,7 +1312,7 @@
{
if (manuallinks[i].col <= mouse.x - 1)
{
- if (manuallinks[i].col + strlen(manuallinks[i].name) >= mouse.x - 1)
+ if (manuallinks[i].col + manuallinks[i].name.length() >= mouse.x - 1)
{
selected = i;
done = 1;
@@ -1343,7 +1328,7 @@
{
if (manuallinks[i].col <= mouse.x - 1)
{
- if (manuallinks[i].col + strlen(manuallinks[i].name) >= mouse.x - 1)
+ if (manuallinks[i].col + manuallinks[i].name.length() >= mouse.x - 1)
{
selected = i;
done = 1;
@@ -1659,10 +1644,10 @@
}
if (manuallinks[i].col>manualcol)
mvaddstr(1 + manuallinks[i].line - manualpos,
- manuallinks[i].col - manualcol, manuallinks[i].name);
- else if (manuallinks[i].col+strlen(manuallinks[i].name)>manualcol)
+ manuallinks[i].col - manualcol, manuallinks[i].name.c_str());
+ else if (manuallinks[i].col+manuallinks[i].name.length()>manualcol)
mvaddstr(1 + manuallinks[i].line - manualpos, 0,
- manuallinks[i].name+(manualcol-manuallinks[i].col));
+ manuallinks[i].name.substr(manualcol-manuallinks[i].col).c_str());
attrset(normal);
}
}
Modified: pinfo/branches/cxx/src/printinfo.cxx
===================================================================
--- pinfo/branches/cxx/src/printinfo.cxx 2005-08-30 12:06:33 UTC (rev 90)
+++ pinfo/branches/cxx/src/printinfo.cxx 2005-08-30 12:25:07 UTC (rev 91)
@@ -49,6 +49,8 @@
/*
* Handle the highlights which belong to our (i'th) line.
*/
+ /* FIXME: This depends on the hyperobjects being sorted, and
+ * they aren't. */
int highlight = 0; /* counter to track which highlights have been handled */
while (hyperobjects[highlight].line <= i) {
string mynode;
More information about the Pinfo-devel
mailing list