git-svn-id: svn://svn.code.sf.net/p/bitchx/code/tags/ircii-pana-1.1-final@1 13b04d17-f746-0410-82c6-800466cd88b0
295 lines
9.6 KiB
Diff
295 lines
9.6 KiB
Diff
--- .//dll/fserv/fserv.c.orig Tue Jan 18 21:00:07 2000
|
||
+++ .//dll/fserv/fserv.c Tue Jan 18 21:00:19 2000
|
||
@@ -1162,7 +1162,7 @@
|
||
add_module_proc(HOOK_PROC, "Fserv", NULL, "*", MSG_LIST, 1, NULL, search_proc);
|
||
add_module_proc(HOOK_PROC, "Fserv", NULL, "*", PUBLIC_OTHER_LIST, 1, NULL, search_proc);
|
||
|
||
- add_completion_type("fsload", 3, FILE_COMPLETION);
|
||
+ add_completion_type("fsload", 3, FILE_COMPLETION,NULL);
|
||
|
||
add_timer(0, empty_string, get_dllint_var("fserv_time"), 1, impress_me, NULL, NULL, -1, "fserv");
|
||
strcpy(FSstr, cparse(FS, NULL, NULL));
|
||
@@ -1177,4 +1177,4 @@
|
||
put_it("%s for help with this fserv, /fshelp", FSstr);
|
||
return 0;
|
||
}
|
||
-
|
||
\ No newline at end of file
|
||
+
|
||
--- .//dll/nap/nap.c.orig Wed Jan 19 14:17:52 2000
|
||
+++ .//dll/nap/nap.c Tue Jan 18 21:01:34 2000
|
||
@@ -2139,8 +2139,8 @@
|
||
add_module_proc(VAR_PROC, nap_name, "napster_format", NULL, STR_TYPE_VAR, 0, set_numeric_string, NULL);
|
||
add_module_proc(VAR_PROC, nap_name, "napster_dir", NULL, STR_TYPE_VAR, 0, NULL, NULL);
|
||
|
||
- add_completion_type("nload", 4, FILE_COMPLETION);
|
||
- add_completion_type("nreload", 4, FILE_COMPLETION);
|
||
+ add_completion_type("nload", 4, FILE_COMPLETION,NULL);
|
||
+ add_completion_type("nreload", 4, FILE_COMPLETION,NULL);
|
||
|
||
naphelp(NULL, NULL, NULL, NULL, NULL);
|
||
sprintf(buffer, "$0+Napster %s by panasync - $2 $3", nap_version);
|
||
--- .//include/module.h.orig Tue Jan 18 01:24:49 2000
|
||
+++ .//include/module.h Tue Jan 18 20:29:36 2000
|
||
@@ -633,7 +633,14 @@
|
||
CHECK_EXT_MAIL,
|
||
DEFAULT_OUTPUT_FUNCTION,
|
||
DEFAULT_STATUS_OUTPUT_FUNCTION,
|
||
- NUMBER_OF_GLOBAL_FUNCTIONS
|
||
+ NUMBER_OF_GLOBAL_FUNCTIONS,
|
||
+
|
||
+/* window.c again */
|
||
+ WINDOW_QUERY,
|
||
+
|
||
+/* input.c again */
|
||
+
|
||
+ OVERWRITE_TABKEY_COMP
|
||
};
|
||
|
||
extern Function_ptr global_table[];
|
||
--- .//include/modval.h.orig Tue Jan 18 16:50:22 2000
|
||
+++ .//include/modval.h Tue Jan 18 20:28:58 2000
|
||
@@ -360,7 +360,8 @@
|
||
#define getnextnick(x, y, z, a) ((NickTab *) (global[GETNEXTNICK]((int)x, (char *)y, (char *)z, (char *)a)))
|
||
#define getchannick(x, y) ((char *) (global[GETCHANNICK]((char *)x, (char *)y)))
|
||
#define lookup_nickcompletion(x, y) ((NickList *) (global[LOOKUP_NICKCOMPLETION]((ChannelList *)x, (char *)y)))
|
||
-#define add_completion_type(x, y, z) ((int) (global[ADD_COMPLETION_TYPE]((char *)x, (int)y, (enum completion)z)))
|
||
+#define add_completion_type(x, y, z, a) ((int) (global[ADD_COMPLETION_TYPE]((char *)x, (int)y, (enum completion)z, a)))
|
||
+#define overwrite_tabkey_comp(a,b) (global[OVERWRITE_TABKEY_COMP](a,b))
|
||
|
||
/* names.c */
|
||
#define is_channel(x) ((int) (global[IS_CHANNEL]((char *)x)))
|
||
--- .//include/input.h.orig Tue Jan 18 16:23:49 2000
|
||
+++ .//include/input.h Thu Jan 20 17:05:28 2000
|
||
@@ -157,11 +157,15 @@
|
||
DCC_COMPLETION,
|
||
LOAD_COMPLETION,
|
||
SERVER_COMPLETION,
|
||
- CDCC_COMPLETION
|
||
+ CDCC_COMPLETION,
|
||
+ CUSTOM_COMPLETION,
|
||
+ TABKEY_OVERWRITE
|
||
};
|
||
|
||
- char *get_completions (enum completion, char *, int *, char **);
|
||
- int add_completion_type (char *, int, enum completion);
|
||
+ char *get_completions (enum completion *, char *, int *, char **, char * (*)(int, char *, int *, char **));
|
||
+ int add_completion_type (char *, int, enum completion, char * (*)(int, char *, int *, char **));
|
||
+
|
||
+void overwrite_tabkey_comp(int (*)(int, char *, int *, char **), char * (*)(int, char *, int *, char **));
|
||
|
||
extern NickTab *tabkey_array;
|
||
extern NickTab *autoreply_array;
|
||
--- .//source/modules.c.orig Tue Jan 18 01:38:07 2000
|
||
+++ .//source/modules.c Tue Jan 18 20:53:49 2000
|
||
@@ -423,6 +423,7 @@
|
||
global_table[RECALCULATE_WINDOW_CURSOR] = (Function_ptr) recalculate_window_cursor;
|
||
global_table[MAKE_WINDOW_CURRENT] = (Function_ptr) make_window_current;
|
||
global_table[CLEAR_SCROLLBACK] = (Function_ptr) clear_scrollback;
|
||
+ global_table[WINDOW_QUERY] = (Function_ptr) window_query;
|
||
|
||
global_table[RESET_DISPLAY_TARGET] = (Function_ptr) reset_display_target;
|
||
global_table[SET_DISPLAY_TARGET] = (Function_ptr) set_display_target;
|
||
@@ -475,6 +476,7 @@
|
||
global_table[GETCHANNICK] = (Function_ptr) getchannick;
|
||
global_table[LOOKUP_NICKCOMPLETION] = (Function_ptr) lookup_nickcompletion;
|
||
global_table[ADD_COMPLETION_TYPE] = (Function_ptr) add_completion_type;
|
||
+ global_table[OVERWRITE_TABKEY_COMP] = (Function_ptr) overwrite_tabkey_comp;
|
||
|
||
/* names.c */
|
||
global_table[IS_CHANOP] = (Function_ptr) is_chanop;
|
||
--- .//source/input.c.orig Tue Jan 18 15:58:30 2000
|
||
+++ .//source/input.c Thu Jan 20 20:10:02 2000
|
||
@@ -62,6 +62,9 @@
|
||
NickTab *tabkey_array = NULL, *autoreply_array = NULL;
|
||
|
||
|
||
+int (*do_over_write_tabkey_complete)(int, char *, int *, char **) = NULL;
|
||
+char * (*over_write_tabkey_complete_func)(int, char *, int *, char **) = NULL;
|
||
+
|
||
|
||
const int WIDTH = 10;
|
||
|
||
@@ -2119,7 +2122,8 @@
|
||
struct _ext_name_type *next;
|
||
char *name;
|
||
int len;
|
||
- enum completion type;
|
||
+ enum completion type;
|
||
+ char * (*comp_func)(int, char *, int *, char **);
|
||
} Ext_Name_Type;
|
||
|
||
Ext_Name_Type *ext_completion = NULL;
|
||
@@ -2161,7 +2165,14 @@
|
||
return NULL;
|
||
}
|
||
|
||
-char *get_completions(enum completion type, char *possible, int *count, char **suggested)
|
||
+void overwrite_tabkey_comp(int (*check)(int, char *, int *, char **) , char * (*overwrite)(int, char *, int *, char **) )
|
||
+{
|
||
+ do_over_write_tabkey_complete = check;
|
||
+ over_write_tabkey_complete_func = overwrite;
|
||
+ return;
|
||
+}
|
||
+
|
||
+char *get_completions(enum completion *t, char *possible, int *count, char **suggested, char * (*cf)(int, char *, int *, char **))
|
||
{
|
||
char *booya = NULL;
|
||
char *path = NULL;
|
||
@@ -2169,6 +2180,7 @@
|
||
glob_t globbers;
|
||
int numglobs = 0, i;
|
||
int globtype = GLOB_MARK;
|
||
+enum completion type = *t;
|
||
|
||
#if defined(__EMX__) || defined(WINNT)
|
||
if (possible && *possible)
|
||
@@ -2191,6 +2203,18 @@
|
||
case TABKEY_COMPLETION:
|
||
{
|
||
NickTab *n = tabkey_array;
|
||
+ /*
|
||
+ * bad hack
|
||
+ * better idea would be to make this into a list
|
||
+ * and allow multiple modules to create over writes
|
||
+ * then, go to the first module that says it wants to
|
||
+ * do a tab_complete
|
||
+ */
|
||
+ if ( do_over_write_tabkey_complete != NULL && over_write_tabkey_complete_func != NULL && do_over_write_tabkey_complete((int) type, possible, count, suggested) ) {
|
||
+ *t = TABKEY_OVERWRITE;
|
||
+ return over_write_tabkey_complete_func((int) type, possible, count, suggested);
|
||
+ }
|
||
+ /* put_it("opted not do!"); */
|
||
*count = 0;
|
||
if (possible)
|
||
{
|
||
@@ -2377,6 +2401,18 @@
|
||
#endif
|
||
break;
|
||
}
|
||
+ case CUSTOM_COMPLETION:
|
||
+ {
|
||
+ char *c;
|
||
+ if ( cf == NULL ) {
|
||
+ return NULL;
|
||
+ /* put_it("CF IS NULL!"); */
|
||
+ }
|
||
+ c = cf((int)type, possible, count ,suggested);
|
||
+ /* put_it(c); */
|
||
+ return c;
|
||
+ break;
|
||
+ }
|
||
default:
|
||
return NULL;
|
||
}
|
||
@@ -2507,6 +2543,7 @@
|
||
int got_space = 0;
|
||
char *get = NULL;
|
||
Ext_Name_Type *extcomp = ext_completion;
|
||
+char * (*cf)(int, char *, int *, char **) = NULL;
|
||
|
||
/*
|
||
* is this the != second word, then just complete from the
|
||
@@ -2597,6 +2634,7 @@
|
||
case CDCC:
|
||
if (wcount == 2 || wcount == 3)
|
||
type = CDCC_COMPLETION;
|
||
+
|
||
break;
|
||
}
|
||
break;
|
||
@@ -2609,6 +2647,7 @@
|
||
if (!my_strnicmp(p, extcomp->name, extcomp->len))
|
||
{
|
||
type = extcomp->type;
|
||
+ cf = extcomp->comp_func;
|
||
break;
|
||
}
|
||
}
|
||
@@ -2628,7 +2667,7 @@
|
||
#endif
|
||
do_more_tab:
|
||
count = 0;
|
||
- if ((get = get_completions(type, possible, &count, &suggested)))
|
||
+ if ((get = get_completions(&type, possible, &count, &suggested, cf)))
|
||
{
|
||
char buffer[BIG_BUFFER_SIZE+1];
|
||
char *p = NULL;
|
||
@@ -2640,8 +2679,11 @@
|
||
p = extract(get_input(), 0, wcount - 2);
|
||
else if (suggested && *suggested)
|
||
p = m_3dup("/", suggested, "");
|
||
- if (type == TABKEY_COMPLETION)
|
||
+
|
||
+ if (type == TABKEY_COMPLETION)
|
||
snprintf(buffer, BIG_BUFFER_SIZE, "%s %s%s%s ", (p && *p == '/') ? p : "/m", get, (p && (*p != '/'))?space:empty_string, (p && (*p != '/'))?p:empty_string);
|
||
+ else if ( type == TABKEY_OVERWRITE )
|
||
+ snprintf(buffer, BIG_BUFFER_SIZE, "%s",get);
|
||
else
|
||
{
|
||
if (wcount == 1 && got_space)
|
||
@@ -2729,10 +2771,11 @@
|
||
case SERVER_COMPLETION:
|
||
case TABKEY_COMPLETION:
|
||
case CHAN_COMPLETION:
|
||
+ case CUSTOM_COMPLETION:
|
||
{
|
||
char *n, *use = get;
|
||
n = new_next_arg(use, &use);
|
||
- count = 0;
|
||
+ count = 0;
|
||
while (n && *n)
|
||
{
|
||
strmcat(buffer, n, BIG_BUFFER_SIZE);
|
||
@@ -2750,6 +2793,7 @@
|
||
put_it("%s", convert_output_format(fget_string_var(FORMAT_COMPLETE_FSET),"%s", buffer));
|
||
break;
|
||
}
|
||
+ case TABKEY_OVERWRITE:
|
||
case NO_COMPLETION:
|
||
break;
|
||
default:
|
||
@@ -2776,15 +2820,16 @@
|
||
return;
|
||
}
|
||
|
||
-int add_completion_type(char *name, int len, enum completion type)
|
||
+int add_completion_type(char *name, int len, enum completion type, char * (*cf)(int, char *, int *, char **))
|
||
{
|
||
-Ext_Name_Type *new;
|
||
+ Ext_Name_Type *new;
|
||
if (!find_in_list((List **)&ext_completion, name, 0))
|
||
{
|
||
new = (Ext_Name_Type *)new_malloc(sizeof(Ext_Name_Type));
|
||
new->name = m_strdup(name);
|
||
new->len = len;
|
||
new->type = type;
|
||
+ new->comp_func =cf;
|
||
add_to_list((List **)&ext_completion, (List *)new);
|
||
return 1;
|
||
}
|
||
--- .//source/functions.c.orig Tue Jan 18 16:44:28 2000
|
||
+++ .//source/functions.c Thu Jan 20 17:10:53 2000
|
||
@@ -7020,8 +7020,9 @@
|
||
#ifdef WANT_TABKEY
|
||
char *ret, *possible;
|
||
int count = 0; /* 6 */
|
||
+enum completion comp_type = 3;
|
||
possible = next_arg(input, &input);
|
||
- ret = get_completions(3, possible, &count, NULL);
|
||
+ ret = get_completions(&comp_type, possible, &count, NULL, NULL);
|
||
return m_sprintf("%d %s", count, ret ? ret : empty_string);
|
||
#else
|
||
RETURN_EMPTY;
|
||
@@ -7033,8 +7034,9 @@
|
||
#ifdef WANT_TABKEY
|
||
char *ret, *possible;
|
||
int count = 0;/* 4 */
|
||
+enum completion comp_type = 7;
|
||
possible = next_arg(input, &input);
|
||
- ret = get_completions(7, possible, &count, NULL);
|
||
+ ret = get_completions(&comp_type, possible, &count, NULL, NULL);
|
||
return m_sprintf("%d %s", count, ret ? ret : empty_string);
|
||
#else
|
||
RETURN_EMPTY;
|