47
etc.c
47
etc.c
@@ -1,4 +1,4 @@
|
||||
/* $Id: etc.c,v 1.9 2001/12/02 16:26:08 ukai Exp $ */
|
||||
/* $Id: etc.c,v 1.10 2001/12/09 13:59:04 ukai Exp $ */
|
||||
#include "fm.h"
|
||||
#include <pwd.h>
|
||||
#include "myctype.h"
|
||||
@@ -171,24 +171,21 @@ currentLineSkip(Buffer *buf, Line *line, int offset, int last)
|
||||
|
||||
#define MAX_CMD_LEN 128
|
||||
|
||||
static int
|
||||
get_cmd(Hash_si * hash,
|
||||
char **s,
|
||||
char *args,
|
||||
char termchar, int defaultcmd, int allow_space, int *status)
|
||||
int
|
||||
gethtmlcmd(char **s)
|
||||
{
|
||||
extern Hash_si tagtable;
|
||||
char cmdstr[MAX_CMD_LEN];
|
||||
char *p = cmdstr;
|
||||
char *save = *s;
|
||||
int cmd;
|
||||
if (status)
|
||||
*status = 0;
|
||||
|
||||
(*s)++;
|
||||
/* first character */
|
||||
if (IS_ALNUM(**s) || **s == '_' || **s == '/')
|
||||
*(p++) = tolower(*((*s)++));
|
||||
else
|
||||
return defaultcmd;
|
||||
return HTML_UNKNOWN;
|
||||
if (p[-1] == '/')
|
||||
SKIP_BLANKS(*s);
|
||||
while ((IS_ALNUM(**s) || **s == '_') && p - cmdstr < MAX_CMD_LEN) {
|
||||
@@ -197,41 +194,19 @@ get_cmd(Hash_si * hash,
|
||||
if (p - cmdstr == MAX_CMD_LEN) {
|
||||
/* buffer overflow: perhaps caused by bad HTML source */
|
||||
*s = save + 1;
|
||||
if (status)
|
||||
*status = -1;
|
||||
return defaultcmd;
|
||||
return HTML_UNKNOWN;
|
||||
}
|
||||
*p = '\0';
|
||||
|
||||
/* hash search */
|
||||
cmd = getHash_si(hash, cmdstr, defaultcmd);
|
||||
if (args != NULL) {
|
||||
p = args;
|
||||
while (**s == ' ' || **s == '\t')
|
||||
(*s)++;
|
||||
while (**s && **s != '\n' && **s != '\r' && **s != termchar) {
|
||||
*(p++) = *((*s)++);
|
||||
}
|
||||
*p = '\0';
|
||||
}
|
||||
else if (allow_space) {
|
||||
while (**s && **s != termchar)
|
||||
(*s)++;
|
||||
}
|
||||
if (**s == termchar)
|
||||
cmd = getHash_si(&tagtable, cmdstr, HTML_UNKNOWN);
|
||||
while (**s && **s != '>')
|
||||
(*s)++;
|
||||
if (**s == '>')
|
||||
(*s)++;
|
||||
else if (status)
|
||||
*status = -1;
|
||||
return cmd;
|
||||
}
|
||||
|
||||
int
|
||||
gethtmlcmd(char **s, int *status)
|
||||
{
|
||||
extern Hash_si tagtable;
|
||||
return get_cmd(&tagtable, s, NULL, '>', HTML_UNKNOWN, TRUE, status);
|
||||
}
|
||||
|
||||
static char *
|
||||
searchAnchorArg(char **arg)
|
||||
{
|
||||
|
Reference in New Issue
Block a user