summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/lynx/WWW/Library/Implementation/HTFinger.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/lynx/WWW/Library/Implementation/HTFinger.c')
-rw-r--r--gnu/usr.bin/lynx/WWW/Library/Implementation/HTFinger.c231
1 files changed, 114 insertions, 117 deletions
diff --git a/gnu/usr.bin/lynx/WWW/Library/Implementation/HTFinger.c b/gnu/usr.bin/lynx/WWW/Library/Implementation/HTFinger.c
index 08d0932d112..7afb64b9eda 100644
--- a/gnu/usr.bin/lynx/WWW/Library/Implementation/HTFinger.c
+++ b/gnu/usr.bin/lynx/WWW/Library/Implementation/HTFinger.c
@@ -1,29 +1,29 @@
/* FINGER ACCESS HTFinger.c
-** =============
-** Authors:
-** ARB Andrew Brooks
-**
-** History:
-** 21 Apr 94 First version (ARB, from HTNews.c by TBL)
-** 12 Mar 96 Made the URL and command buffering secure from
-** stack modifications, beautified the HTLoadFinger()
-** and response() functions, and added support for the
-** following URL formats for sending a "", "/w",
-** "username[@host]", or "/w username[@host]" command
-** to the server:
-** finger://host
-** finger://host/
-** finger://host/%2fw
-** finger://host/%2fw%20username[@host]
-** finger://host/w/username[@host]
-** finger://host/username[@host]
-** finger://host/username[@host]/w
-** finger://username@host
-** finger://username@host/
-** finger://username@host/w
-** 15 Mar 96 Added support for port 79 gtype 0 gopher URLs
-** relayed from HTLoadGopher. - FM
-*/
+ * =============
+ * Authors:
+ * ARB Andrew Brooks
+ *
+ * History:
+ * 21 Apr 94 First version (ARB, from HTNews.c by TBL)
+ * 12 Mar 96 Made the URL and command buffering secure from
+ * stack modifications, beautified the HTLoadFinger()
+ * and response() functions, and added support for the
+ * following URL formats for sending a "", "/w",
+ * "username[@host]", or "/w username[@host]" command
+ * to the server:
+ * finger://host
+ * finger://host/
+ * finger://host/%2fw
+ * finger://host/%2fw%20username[@host]
+ * finger://host/w/username[@host]
+ * finger://host/username[@host]
+ * finger://host/username[@host]/w
+ * finger://username@host
+ * finger://username@host/
+ * finger://username@host/w
+ * 15 Mar 96 Added support for port 79 gtype 0 gopher URLs
+ * relayed from HTLoadGopher. - FM
+ */
#include <HTUtils.h>
@@ -50,101 +50,97 @@
#define FREE_TARGET (*targetClass._free)(target)
#define NEXT_CHAR HTGetCharacter()
-
/* Module-wide variables
*/
-PRIVATE int finger_fd; /* Socket for FingerHost */
+static int finger_fd; /* Socket for FingerHost */
struct _HTStructured {
- CONST HTStructuredClass * isa; /* For gopher streams */
- /* ... */
+ const HTStructuredClass *isa; /* For gopher streams */
+ /* ... */
};
-PRIVATE HTStructured * target; /* The output sink */
-PRIVATE HTStructuredClass targetClass; /* Copy of fn addresses */
+static HTStructured *target; /* The output sink */
+static HTStructuredClass targetClass; /* Copy of fn addresses */
/* Initialisation for this module
-** ------------------------------
-*/
-PRIVATE BOOL initialized = NO;
-PRIVATE BOOL initialize NOARGS
+ * ------------------------------
+ */
+static BOOL initialized = NO;
+static BOOL initialize(void)
{
- finger_fd = -1; /* Disconnected */
- return YES;
+ finger_fd = -1; /* Disconnected */
+ return YES;
}
-
-
/* Start anchor element
-** --------------------
-*/
-PRIVATE void start_anchor ARGS1(CONST char *, href)
+ * --------------------
+ */
+static void start_anchor(const char *href)
{
- BOOL present[HTML_A_ATTRIBUTES];
- CONST char* value[HTML_A_ATTRIBUTES];
+ BOOL present[HTML_A_ATTRIBUTES];
+ const char *value[HTML_A_ATTRIBUTES];
{
int i;
- for(i=0; i<HTML_A_ATTRIBUTES; i++)
- present[i] = (BOOL) (i==HTML_A_HREF);
+
+ for (i = 0; i < HTML_A_ATTRIBUTES; i++)
+ present[i] = (BOOL) (i == HTML_A_HREF);
}
- ((CONST char **)value)[HTML_A_HREF] = href;
- (*targetClass.start_element)(target, HTML_A, present,
- (CONST char **)value, -1, 0);
+ ((const char **) value)[HTML_A_HREF] = href;
+ (*targetClass.start_element) (target, HTML_A, present,
+ (const char **) value, -1, 0);
}
/* Send Finger Command line to remote host & Check Response
-** --------------------------------------------------------
-**
-** On entry,
-** command points to the command to be sent, including CRLF, or is null
-** pointer if no command to be sent.
-** On exit,
-** Negative status indicates transmission error, socket closed.
-** Positive status is a Finger status.
-*/
-
-
-PRIVATE int response ARGS5(
- char *, command,
- char *, sitename,
- HTParentAnchor *, anAnchor,
- HTFormat, format_out,
- HTStream*, sink)
+ * --------------------------------------------------------
+ *
+ * On entry,
+ * command points to the command to be sent, including CRLF, or is null
+ * pointer if no command to be sent.
+ * On exit,
+ * Negative status indicates transmission error, socket closed.
+ * Positive status is a Finger status.
+ */
+
+static int response(char *command,
+ char *sitename,
+ HTParentAnchor *anAnchor,
+ HTFormat format_out,
+ HTStream *sink)
{
int status;
int length = strlen(command);
int ch, i;
- char line[BIG], *l, *cmd=NULL;
- char *p = line, *href=NULL;
+ char line[BIG], *l, *cmd = NULL;
+ char *p = line, *href = NULL;
if (length == 0)
- return(-1);
+ return (-1);
/* Set up buffering.
- */
+ */
HTInitInput(finger_fd);
/* Send the command.
- */
+ */
CTRACE((tfp, "HTFinger command to be sent: %s", command));
- status = NETWRITE(finger_fd, (char *)command, length);
+ status = NETWRITE(finger_fd, (char *) command, length);
if (status < 0) {
CTRACE((tfp, "HTFinger: Unable to send command. Disconnecting.\n"));
NETCLOSE(finger_fd);
finger_fd = -1;
return status;
- } /* if bad status */
-
+ }
+ /* if bad status */
/* Make a hypertext object with an anchor list.
- */
+ */
target = HTML_new(anAnchor, format_out, sink);
targetClass = *target->isa; /* Copy routine entry points */
/* Create the results report.
- */
- CTRACE((tfp,"HTFinger: Reading finger information\n"));
+ */
+ CTRACE((tfp, "HTFinger: Reading finger information\n"));
START(HTML_HTML);
PUTC('\n');
START(HTML_HEAD);
@@ -182,17 +178,18 @@ PRIVATE int response ARGS5(
PUTC('\n');
START(HTML_PRE);
- while ((ch=NEXT_CHAR) != EOF) {
+ while ((ch = NEXT_CHAR) != EOF) {
if (interrupted_in_htgetcharacter) {
- CTRACE((tfp, "HTFinger: Interrupted in HTGetCharacter, apparently.\n"));
- _HTProgress (CONNECTION_INTERRUPTED);
+ CTRACE((tfp,
+ "HTFinger: Interrupted in HTGetCharacter, apparently.\n"));
+ _HTProgress(CONNECTION_INTERRUPTED);
goto end_html;
}
if (ch != LF) {
- *p = (char) ch; /* Put character in line */
- if (p < &line[BIG-1]) {
+ *p = (char) ch; /* Put character in line */
+ if (p < &line[BIG - 1]) {
p++;
}
} else {
@@ -235,7 +232,7 @@ PRIVATE int response ARGS5(
NETCLOSE(finger_fd);
finger_fd = -1;
-end_html:
+ end_html:
END(HTML_PRE);
PUTC('\n');
END(HTML_BODY);
@@ -243,48 +240,46 @@ end_html:
END(HTML_HTML);
PUTC('\n');
FREE_TARGET;
- return(0);
+ return (0);
}
-
/* Load by name HTLoadFinger
-** ============
-*/
-PUBLIC int HTLoadFinger ARGS4(
- CONST char *, arg,
- HTParentAnchor *, anAnchor,
- HTFormat, format_out,
- HTStream*, stream)
+ * ============
+ */
+int HTLoadFinger(const char *arg,
+ HTParentAnchor *anAnchor,
+ HTFormat format_out,
+ HTStream *stream)
{
char *username, *sitename, *colon; /* Fields extracted from URL */
- char *slash, *at_sign; /* Fields extracted from URL */
+ char *slash, *at_sign; /* Fields extracted from URL */
char *command, *str, *param; /* Buffers */
- int port; /* Port number from URL */
- int status; /* tcp return */
+ int port; /* Port number from URL */
+ int status; /* tcp return */
int result = HT_LOADED;
BOOL IsGopherURL = FALSE;
- CONST char * p1 = arg;
+ const char *p1 = arg;
CTRACE((tfp, "HTFinger: Looking for %s\n", (arg ? arg : "NULL")));
if (!(arg && *arg)) {
HTAlert(COULD_NOT_LOAD_DATA);
- return HT_NOT_LOADED; /* Ignore if no name */
+ return HT_NOT_LOADED; /* Ignore if no name */
}
if (!initialized)
initialized = initialize();
if (!initialized) {
- HTAlert (gettext("Could not set up finger connection."));
+ HTAlert(gettext("Could not set up finger connection."));
return HT_NOT_LOADED; /* FAIL */
}
/* Set up the host and command fields.
- */
+ */
if (!strncasecomp(arg, "finger://", 9)) {
- p1 = arg + 9; /* Skip "finger://" prefix */
+ p1 = arg + 9; /* Skip "finger://" prefix */
} else if (!strncasecomp(arg, "gopher://", 9)) {
- p1 = arg + 9; /* Skip "gopher://" prefix */
+ p1 = arg + 9; /* Skip "gopher://" prefix */
IsGopherURL = TRUE;
}
@@ -323,7 +318,7 @@ PUBLIC int HTLoadFinger ARGS4(
if (*sitename == '\0') {
HTAlert(gettext("Could not load data (no sitename in finger URL)"));
- result = HT_NOT_LOADED; /* Ignore if no name */
+ result = HT_NOT_LOADED; /* Ignore if no name */
} else if ((colon = strchr(sitename, ':')) != NULL) {
*colon++ = '\0';
port = atoi(colon);
@@ -335,12 +330,12 @@ PUBLIC int HTLoadFinger ARGS4(
if (result == HT_LOADED) {
/* Load the string for making a connection/
- */
+ */
str = 0;
HTSprintf0(&str, "lose://%s/", sitename);
/* Load the command for the finger server.
- */
+ */
command = 0;
if (at_sign && slash) {
if (*slash == 'w' || *slash == 'W') {
@@ -351,20 +346,20 @@ PUBLIC int HTLoadFinger ARGS4(
} else if (at_sign) {
HTSprintf0(&command, "%s%c%c", username, CR, LF);
} else if (*username == '/') {
- if ((slash = strchr((username+1), '/')) != NULL) {
+ if ((slash = strchr((username + 1), '/')) != NULL) {
*slash = ' ';
}
HTSprintf0(&command, "%s%c%c", username, CR, LF);
} else if ((*username == 'w' || *username == 'W') &&
- *(username+1) == '/') {
- if (*username+2 != '\0') {
- *(username+1) = ' ';
+ *(username + 1) == '/') {
+ if (*username + 2 != '\0') {
+ *(username + 1) = ' ';
} else {
- *(username+1) = '\0';
+ *(username + 1) = '\0';
}
HTSprintf0(&command, "/%s%c%c", username, CR, LF);
} else if ((*username == 'w' || *username == 'W') &&
- *(username+1) == '\0') {
+ *(username + 1) == '\0') {
HTSprintf0(&command, "/%s%c%c", username, CR, LF);
} else if ((slash = strchr(username, '/')) != NULL) {
*slash++ = '\0';
@@ -378,16 +373,17 @@ PUBLIC int HTLoadFinger ARGS4(
}
/* Now, let's get a stream setup up from the FingerHost:
- ** CONNECTING to finger host
- */
+ * CONNECTING to finger host
+ */
CTRACE((tfp, "HTFinger: doing HTDoConnect on '%s'\n", str));
status = HTDoConnect(str, "finger", FINGER_PORT, &finger_fd);
CTRACE((tfp, "HTFinger: Done DoConnect; status %d\n", status));
if (status == HT_INTERRUPTED) {
/* Interrupt cleanly */
- CTRACE((tfp, "HTFinger: Interrupted on connect; recovering cleanly.\n"));
- HTProgress (CONNECTION_INTERRUPTED);
+ CTRACE((tfp,
+ "HTFinger: Interrupted on connect; recovering cleanly.\n"));
+ HTProgress(CONNECTION_INTERRUPTED);
result = HT_NOT_LOADED;
} else if (status < 0) {
NETCLOSE(finger_fd);
@@ -399,7 +395,7 @@ PUBLIC int HTLoadFinger ARGS4(
CTRACE((tfp, "HTFinger: Connected to finger host '%s'.\n", str));
/* Send the command, and process response if successful.
- */
+ */
if (response(command, sitename, anAnchor, format_out, stream) != 0) {
HTAlert(gettext("No response from finger server."));
result = HT_NOT_LOADED;
@@ -414,9 +410,10 @@ PUBLIC int HTLoadFinger ARGS4(
#ifdef GLOBALDEF_IS_MACRO
#define _HTFINGER_C_1_INIT { "finger", HTLoadFinger, NULL }
-GLOBALDEF (HTProtocol, HTFinger, _HTFINGER_C_1_INIT);
+GLOBALDEF(HTProtocol, HTFinger, _HTFINGER_C_1_INIT);
#else
-GLOBALDEF PUBLIC HTProtocol HTFinger = { "finger", HTLoadFinger, NULL };
+GLOBALDEF HTProtocol HTFinger =
+{"finger", HTLoadFinger, NULL};
#endif /* GLOBALDEF_IS_MACRO */
#endif /* not DISABLE_FINGER */