]>
jfr.im git - irc/quakenet/newserv.git/blob - request/user.c
3 #include "../irc/irc_config.h"
4 #include "../lib/irc_string.h"
5 #include "../nick/nick.h"
9 r_user_t
*r_userlist
= NULL
;
12 r_user_t
*ru_find(char *name
);
14 int ru_create(char *name
, unsigned int level
) {
15 r_user_t
*user
, *trav
;
17 if (ru_setlevel(name
, level
) != 0)
20 user
= (r_user_t
*)malloc(sizeof(r_user_t
));
26 strlcpy(user
->name
, name
, sizeof(user
->name
));
29 if (r_userlist
== NULL
)
45 void ru_destroy(char *name
) {
47 r_user_t
*user
= r_userlist
;
49 if (user
&& ircd_strcmp(user
->name
, name
) == 0) {
62 while (user
&& user
->next
) {
63 if (ircd_strcmp(user
->next
->name
, name
) == 0) {
65 user
->next
= user
->next
->next
;
76 int ru_parseline(char *line
) {
77 char name
[ACCOUNTLEN
];
81 if (sscanf(line
, "%s %lu", name
, &level
) < 2)
85 result
= ru_create(name
, level
);
96 rudata
= fopen(RQ_USERFILE
, "r");
103 while (!feof(rudata
)) {
104 if (fgets(line
, sizeof(line
), rudata
) == NULL
)
107 if (line
[strlen(line
) - 1] == '\n')
108 line
[strlen(line
) - 1] = '\0';
110 if (line
[strlen(line
) - 1] == '\r')
111 line
[strlen(line
) - 1] = '\0';
113 if (line
[0] != '\0') {
114 if (ru_parseline(line
))
124 int ru_persist(void) {
127 r_user_t
*user
= r_userlist
;
132 rudata
= fopen(RQ_USERFILE
, "w");
138 fprintf(rudata
, "%s %lu\n", user
->name
, user
->level
);
148 r_user_t
*ru_find(char *name
) {
149 r_user_t
*user
= r_userlist
;
152 if (ircd_strcmp(user
->name
, name
) == 0)
161 unsigned int ru_getlevel(nick
*np
) {
164 else if (!IsAccount(np
))
167 return ru_getlevel_str(np
->authname
);
170 unsigned int ru_getlevel_str(char *name
) {
171 r_user_t
*user
= ru_find(name
);
179 int ru_setlevel(char *name
, unsigned int level
) {
180 r_user_t
*user
= ru_find(name
);