X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Froom_ops.c;h=05bced87c7874af7a020343b23294a5c72c3411e;hb=02d9dbca862ffa00b2041287596119a54867762c;hp=ea4fc1a0808f8ab3e2c9700c4a9a74c0e606c2c2;hpb=e612033104c17c8adcad19d7dc8efbafa8b33f2e;p=citadel.git diff --git a/citadel/room_ops.c b/citadel/room_ops.c index ea4fc1a08..05bced87c 100644 --- a/citadel/room_ops.c +++ b/citadel/room_ops.c @@ -39,6 +39,7 @@ #include "citserver.h" #include "control.h" #include "tools.h" +#include "citadel_dirs.h" struct floor *floorcache[MAXFLOORS]; @@ -502,7 +503,7 @@ int is_noneditable(struct ctdlroom *qrbuf) /* * Back-back-end for all room listing commands */ -void list_roomname(struct ctdlroom *qrbuf, int ra, int view) +void list_roomname(struct ctdlroom *qrbuf, int ra, int current_view, int default_view) { char truncated_roomname[ROOMNAMELEN]; @@ -519,13 +520,15 @@ void list_roomname(struct ctdlroom *qrbuf, int ra, int view) } /* ...and now the other parameters */ - cprintf("|%u|%d|%d|%d|%d|%d|\n", + cprintf("|%u|%d|%d|%d|%d|%d|%d|%ld|\n", qrbuf->QRflags, (int) qrbuf->QRfloor, (int) qrbuf->QRorder, (int) qrbuf->QRflags2, ra, - view + current_view, + default_view, + qrbuf->QRmtime ); } @@ -545,7 +548,7 @@ void cmd_lrms_backend(struct ctdlroom *qrbuf, void *data) if ((( ra & (UA_KNOWN | UA_ZAPPED))) && ((qrbuf->QRfloor == (FloorBeingSearched)) || ((FloorBeingSearched) < 0))) - list_roomname(qrbuf, ra, view); + list_roomname(qrbuf, ra, view, qrbuf->QRdefaultview); } void cmd_lrms(char *argbuf) @@ -583,7 +586,7 @@ void cmd_lkra_backend(struct ctdlroom *qrbuf, void *data) if ((( ra & (UA_KNOWN))) && ((qrbuf->QRfloor == (FloorBeingSearched)) || ((FloorBeingSearched) < 0))) - list_roomname(qrbuf, ra, view); + list_roomname(qrbuf, ra, view, qrbuf->QRdefaultview); } void cmd_lkra(char *argbuf) @@ -619,7 +622,7 @@ void cmd_lprm_backend(struct ctdlroom *qrbuf, void *data) && ((qrbuf->QRflags & QR_MAILBOX) == 0) && ((qrbuf->QRfloor == (FloorBeingSearched)) || ((FloorBeingSearched) < 0))) - list_roomname(qrbuf, ra, view); + list_roomname(qrbuf, ra, view, qrbuf->QRdefaultview); } void cmd_lprm(char *argbuf) @@ -652,7 +655,7 @@ void cmd_lkrn_backend(struct ctdlroom *qrbuf, void *data) && (ra & UA_HASNEWMSGS) && ((qrbuf->QRfloor == (FloorBeingSearched)) || ((FloorBeingSearched) < 0))) - list_roomname(qrbuf, ra, view); + list_roomname(qrbuf, ra, view, qrbuf->QRdefaultview); } void cmd_lkrn(char *argbuf) @@ -691,7 +694,7 @@ void cmd_lkro_backend(struct ctdlroom *qrbuf, void *data) && ((ra & UA_HASNEWMSGS) == 0) && ((qrbuf->QRfloor == (FloorBeingSearched)) || ((FloorBeingSearched) < 0))) - list_roomname(qrbuf, ra, view); + list_roomname(qrbuf, ra, view, qrbuf->QRdefaultview); } void cmd_lkro(char *argbuf) @@ -730,7 +733,7 @@ void cmd_lzrm_backend(struct ctdlroom *qrbuf, void *data) && (ra & UA_ZAPPED) && ((qrbuf->QRfloor == (FloorBeingSearched)) || ((FloorBeingSearched) < 0))) - list_roomname(qrbuf, ra, view); + list_roomname(qrbuf, ra, view, qrbuf->QRdefaultview); } void cmd_lzrm(char *argbuf) @@ -1226,7 +1229,7 @@ int CtdlRenameRoom(char *old_name, char *new_name, int new_floor) { ret = crr_room_not_found; } - else if ( (CC->user.axlevel < 6) + else if ( (CC->user.axlevel < 6) && (!CC->internal_pgm) && (CC->user.usernum != qrbuf.QRroomaide) && ( (((qrbuf.QRflags & QR_MAILBOX) == 0) || (atol(qrbuf.QRname) != CC->user.usernum))) ) { ret = crr_access_denied; @@ -1446,7 +1449,7 @@ void cmd_setr(char *args) } snprintf(buf, sizeof buf, "The room \"%s\" has been edited by %s.\n", CC->room.QRname, CC->curr_user); - aide_message(buf); + aide_message(buf, "Room modification Message"); cprintf("%d Ok\n", CIT_OK); } @@ -1508,20 +1511,11 @@ void cmd_seta(char *new_ra) snprintf(buf, sizeof buf, "There is now no room aide for \"%s\".\n", CC->room.QRname); - aide_message(buf); + aide_message(buf, "Aide Room Modification"); } cprintf("%d Ok\n", CIT_OK); } -/* - * Generate an associated file name for a room - */ -void assoc_file_name(char *buf, size_t n, - struct ctdlroom *qrbuf, const char *prefix) -{ - snprintf(buf, n, "./%s/%ld", prefix, qrbuf->QRnumber); -} - /* * retrieve info file for this room */ @@ -1531,7 +1525,7 @@ void cmd_rinf(void) char buf[SIZ]; FILE *info_fp; - assoc_file_name(filename, sizeof filename, &CC->room, "info"); + assoc_file_name(filename, sizeof filename, &CC->room, ctdl_info_dir); info_fp = fopen(filename, "r"); if (info_fp == NULL) { @@ -1594,25 +1588,26 @@ void delete_room(struct ctdlroom *qrbuf) { struct floor flbuf; char filename[100]; + /* TODO: filename magic? does this realy work? */ lprintf(CTDL_NOTICE, "Deleting room <%s>\n", qrbuf->QRname); /* Delete the info file */ - assoc_file_name(filename, sizeof filename, qrbuf, "info"); + assoc_file_name(filename, sizeof filename, qrbuf, ctdl_info_dir); unlink(filename); /* Delete the image file */ - assoc_file_name(filename, sizeof filename, qrbuf, "images"); + assoc_file_name(filename, sizeof filename, qrbuf, ctdl_image_dir); unlink(filename); /* Delete the room's network config file */ - assoc_file_name(filename, sizeof filename, qrbuf, "netconfigs"); + assoc_file_name(filename, sizeof filename, qrbuf, ctdl_netcfg_dir); unlink(filename); /* Delete the messages in the room * (Careful: this opens an S_ROOMS critical section!) */ - CtdlDeleteMessages(qrbuf->QRname, 0L, "", 0); + CtdlDeleteMessages(qrbuf->QRname, NULL, 0, ""); /* Flag the room record as not in use */ lgetroom(qrbuf, qrbuf->QRname); @@ -1655,7 +1650,7 @@ int CtdlDoIHavePermissionToDeleteThisRoom(struct ctdlroom *qr) { } /* Can't delete your Mail> room */ - if (!strcasecmp(&qr->QRname[12], MAILROOM)) return(0); + if (!strcasecmp(&qr->QRname[11], MAILROOM)) return(0); /* Otherwise it's ok */ return(1); @@ -1699,7 +1694,7 @@ void cmd_kill(char *argbuf) /* tell the world what we did */ snprintf(msg, sizeof msg, "The room \"%s\" has been deleted by %s.\n", deleted_room_name, CC->curr_user); - aide_message(msg); + aide_message(msg, "Room Purger Message"); cprintf("%d '%s' deleted.\n", CIT_OK, deleted_room_name); } else { cprintf("%d ok to delete.\n", CIT_OK); @@ -1856,7 +1851,7 @@ void cmd_cre8(char *args) if (CtdlAccessCheck(ac_logged_in)) return; - if (CC->user.axlevel < config.c_createax) { + if (CC->user.axlevel < config.c_createax || CC->internal_pgm) { cprintf("%d You need higher access to create rooms.\n", ERROR + HIGHER_ACCESS_REQUIRED); return; @@ -1913,7 +1908,7 @@ void cmd_cre8(char *args) ((newflags & QR_PASSWORDED) ? " Password: " : ""), ((newflags & QR_PASSWORDED) ? new_room_pass : "") ); - aide_message(notification_message); + aide_message(notification_message, "Room Creation Message"); free(notification_message); cprintf("%d '%s' has been created.\n", CIT_OK, new_room_name); @@ -1935,7 +1930,7 @@ void cmd_einf(char *ok) cprintf("%d Ok.\n", CIT_OK); return; } - assoc_file_name(infofilename, sizeof infofilename, &CC->room, "info"); + assoc_file_name(infofilename, sizeof infofilename, &CC->room, ctdl_info_dir); lprintf(CTDL_DEBUG, "opening\n"); fp = fopen(infofilename, "w"); lprintf(CTDL_DEBUG, "checking\n");