📄 vfuncs.c
字号:
/* Copyright (c) 2000 Kevin Sullivan <nite@gis.net> * * Please refer to the COPYRIGHT file for more information. */#ifdef HAVE_CONFIG_H# include <config.h>#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/time.h>#include <ncurses.h>#include "defines.h"#include "colors.h"#include "cmds.h"#include "nap.h"#include "winio.h"#include "vfuncs.h"#include "lists.h"#ifdef MEMWATCH #include "memwatch.h"#endifextern chans_t *curchan, *chanl;extern ssearch_t *search;extern int ircmode;extern char *conns[];vars_t vars[] = { { "curchan", vcurchan }, { "topic", vtopic }, { "version", vversion }, { "key", vkey }, { "mode", vmode }, { "args", vargs }, { "isop", visop }, { "nick", vnick }, { "attr", vattr }, { "search", vsearch }, { "conn", vconn }, { "chr", vchr }, { "strstr", vstrstr }, { NULL, NULL }};V_FUNC(vcurchan){ if (!curchan) return(strdup("")); else return(strdup(curchan->nm));}V_FUNC(vtopic){ if (!curchan || !curchan->topic) return(strdup("")); else return(strdup(curchan->topic));}V_FUNC(vversion){ unsigned char *ret = NULL; msprintf((char **)&ret, "nap v%s", VERSION); return(ret);}V_FUNC(vkey){ if (!curchan || !curchan->key) return(strdup("")); else return(strdup(curchan->key));}V_FUNC(vmode){ if (ircmode) return(strdup("irc")); else return(strdup("nap"));}V_FUNC(visop){ chans_t *cur; user_t *usr; if (cnt < 2) return(strdup("")); cur = findchan(chanl, tok[0]); if (!cur) return(strdup("")); usr = finduser(cur, tok[1]); if (!usr) return(strdup("")); if (usr->flag & 1) return(strdup("1")); else return(strdup("0"));}V_FUNC(vargs){ int i; char b[256]; memset(b, 0, sizeof(b)); b[0] = '|'; for (i=0;i<cnt;i++) { strcat(b, tok[i]); strcat(b, "|"); } wp(wchan, "Args: %s\n", b); drw(wchan); if (tok && tok[0]) return(strdup(tok[0])); else return(strdup(""));}V_FUNC(vnick){ int i, n; chans_t *cur; user_t *usr; if (cnt < 2) return(strdup("")); cur = findchan(chanl, tok[0]); if (!cur) return(strdup("")); n = atoi(tok[1]); for (i=0,usr=cur->users;;usr=usr->next,i++) { if (!usr) return(strdup("")); if (i == n) break; } return(strdup(usr->nm));}V_FUNC(vattr){ if (cnt < 1) return(strdup("")); if (!strcasecmp(tok[0], "bold")) return(strdup(BOLD)); else if (!strcasecmp(tok[0], "white")) return(strdup(WHITE)); else if (!strcasecmp(tok[0], "red")) return(strdup(RED)); else if (!strcasecmp(tok[0], "green")) return(strdup(GREEN)); else if (!strcasecmp(tok[0], "blue")) return(strdup(BLUE)); else if (!strcasecmp(tok[0], "yellow")) return(strdup(YELLOW)); else if (!strcasecmp(tok[0], "magenta")) return(strdup(MAGENTA)); else if (!strcasecmp(tok[0], "blink")) return(strdup(BLINK)); else if (!strcasecmp(tok[0], "underline")) return(strdup(UNDERLINE)); else if (!strcasecmp(tok[0], "cyan")) return(strdup(CYAN)); else return(strdup(""));}V_FUNC(vsearch){ ssearch_t *cur; char *ret=NULL; int i; if (!search) return(strdup("")); if (cnt < 1) { /* calculate number of search results */ for (i=0, cur=search; cur; cur=cur->next, i++); msprintf(&ret, "%i", i); return(ret); } i=atoi(tok[0]); list_nth(cur, search, i-1); if (!cur) return(strdup("")); if (cnt < 2) return(strdup(cur->song)); if (!strcasecmp(tok[1], "size")) { msprintf(&ret, "%lu", (long)cur->sz); return(ret); } else if (!strcasecmp(tok[1], "user")) return(strdup(cur->nick)); else if (!strcasecmp(tok[1], "freq")) { msprintf(&ret, "%i", cur->freq); return(ret); } else if (!strcasecmp(tok[1], "length")) { msprintf(&ret, "%i", cur->time); return(ret); } else if (!strcasecmp(tok[1], "speed")) return(strdup(conns[cur->conn])); else if (!strcasecmp(tok[1], "bitrate")) { msprintf(&ret, "%i", cur->brate); return(ret); } else if (!strcasecmp(tok[1], "filename")) return(strdup(cur->rfn)); else if (!strcasecmp(tok[1], "ping")) { msprintf(&ret, "%i", cur->ping); return(ret); } else return(strdup(""));}V_FUNC(vconn){ if (cnt < 1 || atoi(tok[0]) > 10) return(strdup("")); else return(strdup(conns[atoi(tok[0])]));}V_FUNC(vchr){ char *r=NULL; if (cnt < 1) return(strdup("")); msprintf(&r, "%c", atoi(tok[0])); return(r);}V_FUNC(vstrstr){ char *r; if (cnt < 2) return(strdup("")); r = strstr(tok[0], tok[1]); if (!r) return(strdup("")); else return(strdup(r));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -