41 OPER_HELP_SZLINE, -1, -1, -1, -1);
78 char *cmd = strtok(NULL,
" ");
85 char *expiry, *mask, *reason;
86 time_t expires, now = time(NULL);
88 mask = strtok(NULL,
" ");
89 if (mask && *mask ==
'+') {
91 mask = strtok(NULL,
" ");
100 if (expiry && isdigit(expiry[strlen(expiry) - 1]))
103 if (expires != 0 && expires < 60) {
106 }
else if (expires > 0) {
107 expires += time(NULL);
110 if (mask && (reason = strtok(NULL,
""))) {
113 if (strchr(mask,
'!') || strchr(mask,
'@')) {
118 if (
strspn(mask,
"*?") == strlen(mask)) {
135 strcpy(buf,
"does not expire");
137 int wall_expiry = expires - now;
140 if (wall_expiry >= 86400) {
141 wall_expiry /= 86400;
143 }
else if (wall_expiry >= 3600) {
146 }
else if (wall_expiry >= 60) {
151 snprintf(buf,
sizeof(buf),
"expires in %d %s%s",
153 (wall_expiry == 1) ?
"" :
"s");
157 "%s added an SZLINE for %s (%s)", u->
nick,
168 }
else if (!
stricmp(cmd,
"DEL")) {
173 mask = strtok(NULL,
" ");
185 if (isdigit(*mask) &&
strspn(mask,
"1234567890,-") == strlen(mask)) {
191 }
else if (res == 1) {
210 }
else if (!
stricmp(cmd,
"LIST")) {
212 int res, sent_header = 0;
219 mask = strtok(NULL,
" ");
221 if (!mask || (isdigit(*mask)
222 &&
strspn(mask,
"1234567890,-") == strlen(mask))) {
244 }
else if (!
stricmp(cmd,
"VIEW")) {
246 int res, sent_header = 0;
253 mask = strtok(NULL,
" ");
255 if (!mask || (isdigit(*mask)
256 &&
strspn(mask,
"1234567890,-") == strlen(mask))) {
278 }
else if (!
stricmp(cmd,
"CLEAR")) {
290 char timebuf[32], expirebuf[256];
301 tm = *localtime(&sx->
seton);
302 strftime_lang(timebuf,
sizeof(timebuf), u, STRFTIME_SHORT_DATE_FORMAT,
306 sx->
by, timebuf, expirebuf, sx->
reason);
317 int *sent_header = va_arg(args,
int *);
328 int *sent_header = va_arg(args,
int *);
E size_t strspn(const char *s, const char *accept)
static int do_szline(User *u)
E int match_wild_nocase(const char *pattern, const char *str)
static int szline_list_callback(SList *slist, int number, void *item, va_list args)
E int snprintf(char *buf, size_t size, const char *fmt,...)
E int slist_delete_range(SList *slist, char *range, slist_delcheckcb_t cb,...)
E int dotime(const char *s)
E int stricmp(const char *s1, const char *s2)
static int szline_list(int number, SXLine *sx, User *u, int *sent_header)
E int slist_enum(SList *slist, char *range, slist_enumcb_t cb,...)
E char * expire_left(NickAlias *na, char *buf, int len, time_t expires)
MDE void moduleAddAuthor(const char *author)
E void syntax_error(char *service, User *u, const char *command, int msgnum)
E void notice_lang(char *source, User *dest, int message,...)
MDE void moduleSetType(MODType type)
E void slist_clear(SList *slist, int free)
E int slist_delete(SList *slist, int index)
int AnopeInit(int argc, char **argv)
MDE void moduleAddVersion(const char *version)
E int add_szline(User *u, char *mask, const char *by, const time_t expires, const char *reason)
E int slist_indexof(SList *slist, void *item)
MDE void moduleSetOperHelp(void(*func)(User *u))
static void myOperServHelp(User *u)
MDE Command * createCommand(const char *name, int(*func)(User *u), int(*has_priv)(User *u), int help_all, int help_reg, int help_oper, int help_admin, int help_root)
static int szline_view(int number, SXLine *sx, User *u, int *sent_header)
E int is_services_oper(User *u)
E int strftime_lang(char *buf, int size, User *u, int format, struct tm *tm)
MDE int moduleAddCommand(CommandHash *cmdTable[], Command *c, int pos)
static int szline_view_callback(SList *slist, int number, void *item, va_list args)
E void anope_cmd_global(char *source, const char *fmt,...)