Initial import of the ircii-pana-1.1-final source tree.
git-svn-id: svn://svn.code.sf.net/p/bitchx/code/tags/ircii-pana-1.1-final@1 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
261
dll/nap/napother.c
Normal file
261
dll/nap/napother.c
Normal file
@@ -0,0 +1,261 @@
|
||||
#include "irc.h"
|
||||
#include "struct.h"
|
||||
#include "ircaux.h"
|
||||
#include "misc.h"
|
||||
#include "output.h"
|
||||
#include "module.h"
|
||||
#include "list.h"
|
||||
#include "vars.h"
|
||||
#include "modval.h"
|
||||
#include "napster.h"
|
||||
|
||||
static IgnoreStruct *ignores = NULL;
|
||||
|
||||
int check_nignore(char *nick)
|
||||
{
|
||||
if (ignores && find_in_list((List **)&ignores, nick, 0))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ignore_user(IrcCommandDll *intp, char *command, char *args, char *subargs, char *help)
|
||||
{
|
||||
IgnoreStruct *new;
|
||||
char *nick;
|
||||
if (command && !my_stricmp(command, "nignore"))
|
||||
{
|
||||
if (!args || !*args)
|
||||
{
|
||||
char buffer[NAP_BUFFER_SIZE+1];
|
||||
int cols = get_dllint_var("napster_names_columns") ?
|
||||
get_dllint_var("napster_names_columns") :
|
||||
get_int_var(NAMES_COLUMNS_VAR);
|
||||
int count = 0;
|
||||
if (!cols)
|
||||
cols = 1;
|
||||
*buffer = 0;
|
||||
nap_say("%s", cparse("Ignore List:", NULL));
|
||||
for (new = ignores; new; new = new->next)
|
||||
{
|
||||
strcat(buffer, cparse(get_dllstring_var("napster_names_nickcolor"), "%s %d %d", new->nick, 0, 0));
|
||||
strcat(buffer, space);
|
||||
if (count++ >= (cols - 1))
|
||||
{
|
||||
nap_put("%s", buffer);
|
||||
*buffer = 0;
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
if (*buffer)
|
||||
nap_put("%s", buffer);
|
||||
return;
|
||||
}
|
||||
while ((nick = next_arg(args, &args)))
|
||||
{
|
||||
if (*nick == '-')
|
||||
{
|
||||
nick++;
|
||||
if (!*nick)
|
||||
continue;
|
||||
if ((new = (IgnoreStruct *)remove_from_list((List **)&ignores, nick)))
|
||||
{
|
||||
new_free(&new->nick);
|
||||
new_free(&new);
|
||||
nap_say("Removed %s from ignore list", nick);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
new = new_malloc(sizeof(IgnoreStruct));
|
||||
new->nick = m_strdup(nick);
|
||||
new->start = time(NULL);
|
||||
new->next = ignores;
|
||||
ignores = new;
|
||||
nap_say("Added %s to ignore list", new->nick);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void nap_echo(IrcCommandDll *intp, char *command, char *args, char *subargs, char *help)
|
||||
{
|
||||
int (*func)(char *, ...);
|
||||
if (!args || !*args)
|
||||
return;
|
||||
|
||||
func = nap_say;
|
||||
while (args && (*args == '-'))
|
||||
{
|
||||
args++;
|
||||
if (!*args)
|
||||
break;
|
||||
if (tolower(*args) == 'x')
|
||||
{
|
||||
func = nap_put;
|
||||
next_arg(args, &args);
|
||||
}
|
||||
else
|
||||
{
|
||||
args--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (args)
|
||||
(func)("%s", args);
|
||||
}
|
||||
|
||||
extern GetFile *napster_sendqueue;
|
||||
|
||||
int count_download(char *nick)
|
||||
{
|
||||
int count = 0;
|
||||
GetFile *gf;
|
||||
for (gf = napster_sendqueue; gf; gf = gf->next)
|
||||
if (!my_stricmp(gf->nick, nick))
|
||||
count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
void compute_soundex (char *d, int dsize, const char *s)
|
||||
{
|
||||
int n = 0;
|
||||
|
||||
/* if it's not big enough to hold one soundex word, quit without
|
||||
doing anything */
|
||||
if (dsize < 4)
|
||||
{
|
||||
if (dsize > 0)
|
||||
*d = 0;
|
||||
return;
|
||||
}
|
||||
dsize--; /* save room for the terminatin nul (\0) */
|
||||
|
||||
while (*s && !isalpha(*s))
|
||||
s++;
|
||||
if (!*s)
|
||||
{
|
||||
*d = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
*d++ = toupper (*s);
|
||||
dsize--;
|
||||
s++;
|
||||
|
||||
while (*s && dsize > 0)
|
||||
{
|
||||
switch (tolower (*s))
|
||||
{
|
||||
case 'b':
|
||||
case 'p':
|
||||
case 'f':
|
||||
case 'v':
|
||||
if (n < 3)
|
||||
{
|
||||
*d++ = '1';
|
||||
dsize--;
|
||||
n++;
|
||||
}
|
||||
break;
|
||||
case 'c':
|
||||
case 's':
|
||||
case 'k':
|
||||
case 'g':
|
||||
case 'j':
|
||||
case 'q':
|
||||
case 'x':
|
||||
case 'z':
|
||||
if (n < 3)
|
||||
{
|
||||
*d++ = '2';
|
||||
dsize--;
|
||||
n++;
|
||||
}
|
||||
break;
|
||||
case 'd':
|
||||
case 't':
|
||||
if (n < 3)
|
||||
{
|
||||
*d++ = '3';
|
||||
dsize--;
|
||||
n++;
|
||||
}
|
||||
break;
|
||||
case 'l':
|
||||
if (n < 3)
|
||||
{
|
||||
*d++ = '4';
|
||||
dsize--;
|
||||
n++;
|
||||
}
|
||||
break;
|
||||
case 'm':
|
||||
case 'n':
|
||||
if (n < 3)
|
||||
{
|
||||
*d++ = '5';
|
||||
dsize--;
|
||||
n++;
|
||||
}
|
||||
break;
|
||||
case 'r':
|
||||
if (n < 3)
|
||||
{
|
||||
*d++ = '6';
|
||||
dsize--;
|
||||
n++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (!isalpha (*s))
|
||||
{
|
||||
/* pad short words with 0's */
|
||||
while (n < 3 && dsize > 0)
|
||||
{
|
||||
*d++ = '0';
|
||||
dsize--;
|
||||
n++;
|
||||
}
|
||||
n = 0; /* reset */
|
||||
/* skip forward until we find the next word */
|
||||
s++;
|
||||
while (*s && !isalpha (*s))
|
||||
s++;
|
||||
if (!*s)
|
||||
{
|
||||
*d = 0;
|
||||
return;
|
||||
}
|
||||
if (dsize > 0)
|
||||
{
|
||||
*d++ = ',';
|
||||
dsize--;
|
||||
if (dsize > 0)
|
||||
{
|
||||
*d++ = toupper (*s);
|
||||
dsize--;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* else it's a vowel and we ignore it */
|
||||
break;
|
||||
}
|
||||
/* skip over duplicate letters */
|
||||
while (*(s+1) == *s)
|
||||
s++;
|
||||
|
||||
/* next letter */
|
||||
s++;
|
||||
}
|
||||
/* pad short words with 0's */
|
||||
while (n < 3 && dsize > 0)
|
||||
{
|
||||
*d++ = '0';
|
||||
dsize--;
|
||||
n++;
|
||||
}
|
||||
*d = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user