]>
jfr.im git - irc/quakenet/newserv.git/blob - request/user.c
4 #include "../irc/irc_config.h"
5 #include "../lib/irc_string.h"
6 #include "../lib/strlfunc.h"
7 #include "../nick/nick.h"
11 r_user_t
*r_userlist
= NULL
;
14 r_user_t
*ru_find(char *name
);
16 int ru_create(char *name
, unsigned int level
) {
17 r_user_t
*user
, *trav
;
19 if (ru_setlevel(name
, level
) != 0)
22 user
= (r_user_t
*)malloc(sizeof(r_user_t
));
28 strlcpy(user
->name
, name
, sizeof(user
->name
));
31 if (r_userlist
== NULL
)
47 void ru_destroy(char *name
) {
49 r_user_t
*user
= r_userlist
;
51 if (user
&& ircd_strcmp(user
->name
, name
) == 0) {
64 while (user
&& user
->next
) {
65 if (ircd_strcmp(user
->next
->name
, name
) == 0) {
67 user
->next
= user
->next
->next
;
78 int ru_parseline(char *line
) {
79 char name
[ACCOUNTLEN
];
83 if (sscanf(line
, "%s %u", name
, &level
) < 2)
87 result
= ru_create(name
, level
);
98 rudata
= fopen(RQ_USERFILE
, "r");
105 while (!feof(rudata
)) {
106 if (fgets(line
, sizeof(line
), rudata
) == NULL
)
109 if (line
[strlen(line
) - 1] == '\n')
110 line
[strlen(line
) - 1] = '\0';
112 if (line
[strlen(line
) - 1] == '\r')
113 line
[strlen(line
) - 1] = '\0';
115 if (line
[0] != '\0') {
116 if (ru_parseline(line
))
126 int ru_persist(void) {
129 r_user_t
*user
= r_userlist
;
134 rudata
= fopen(RQ_USERFILE
, "w");
140 fprintf(rudata
, "%s %u\n", user
->name
, user
->level
);
150 r_user_t
*ru_find(char *name
) {
151 r_user_t
*user
= r_userlist
;
154 if (ircd_strcmp(user
->name
, name
) == 0)
163 unsigned int ru_getlevel(nick
*np
) {
166 else if (!IsAccount(np
))
169 return ru_getlevel_str(np
->authname
);
172 unsigned int ru_getlevel_str(char *name
) {
173 r_user_t
*user
= ru_find(name
);
181 int ru_setlevel(char *name
, unsigned int level
) {
182 r_user_t
*user
= ru_find(name
);