]> code.citadel.org Git - citadel.git/commitdiff
* Rewrote [l][get|put]room() functions to use room names rather than
authorArt Cancro <ajc@citadel.org>
Fri, 2 Oct 1998 03:03:38 +0000 (03:03 +0000)
committerArt Cancro <ajc@citadel.org>
Fri, 2 Oct 1998 03:03:38 +0000 (03:03 +0000)
          room index numbers.  Temporarily prepended a "n" to these four
          function names until they are put to use.

citadel/ChangeLog
citadel/room_ops.c

index 775fcefabf42123ebec47e88eb64e638345a204c..c0000513d13b7d114a6f1d5697041c695d5e13fd 100644 (file)
@@ -1,3 +1,8 @@
+Thu Oct  1 23:02:20 EDT 1998 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
+       * Rewrote [l][get|put]room() functions to use room names rather than
+         room index numbers.  Temporarily prepended a "n" to these four
+         function names until they are put to use.
+
 Thu Oct  1 16:27:13 EDT 1998 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
        * Removed a few more references to usersupp.lastseen[]
 
index ab2d69bb0b18ee67a0f6b9211389f207771c937f..8a35e5fc0bae036d32b8f59dfa356d3d87856603 100644 (file)
@@ -94,7 +94,7 @@ int CtdlRoomAccess(struct quickroom *roombuf, struct usersupp *userbuf) {
        return(retval);
        }
 
-
+/*************** START OF OLD ROOM DATABASE FUNCTIONS ***********************/
 /*
  * getroom()  -  retrieve room data from disk
  */
@@ -168,6 +168,79 @@ void lputroom(struct quickroom *qrbuf, int room_num)
        }
 
 
+/*************** START OF NEW ROOM DATABASE FUNCTIONS ***********************/
+/*
+ * ngetroom()  -  retrieve room data from disk
+ */
+void ngetroom(struct quickroom *qrbuf, char *room_name)
+{
+       struct cdbdata *cdbqr;
+       char lowercase_name[20];
+       int a;
+
+       for (a=0; a<=strlen(room_name); ++a) {
+               lowercase_name[a] = tolower(room_name[a]);
+               }
+
+       bzero(qrbuf, sizeof(struct quickroom));
+       cdbqr = cdb_fetch(CDB_QUICKROOM,
+                       lowercase_name, strlen(lowercase_name));
+       if (cdbqr != NULL) {
+               memcpy(qrbuf, cdbqr->ptr,
+                       ( (cdbqr->len > sizeof(struct quickroom)) ?
+                       sizeof(struct quickroom) : cdbqr->len) );
+               cdb_free(cdbqr);
+               }
+
+       /** FIX **   VILE SLEAZY HACK ALERT!!  
+        * This is a temporary fix until we can track down where room names
+        * are getting corrupted on some systems.
+        */
+       for (a=0; a<20; ++a) if (qrbuf->QRname[a] < 32) qrbuf->QRname[a] = 0;
+       qrbuf->QRname[19] = 0;
+       }
+
+/*
+ * lngetroom()  -  same as ngetroom() but locks the record (if supported)
+ */
+void lngetroom(struct quickroom *qrbuf, char *room_name)
+{
+       begin_critical_section(S_QUICKROOM);
+       ngetroom(qrbuf, room_name);
+       }
+
+
+/*
+ * nputroom()  -  store room data on disk
+ */
+void nputroom(struct quickroom *qrbuf, char *room_name)
+{
+       char lowercase_name[20];
+       int a;
+
+       for (a=0; a<=strlen(room_name); ++a) {
+               lowercase_name[a] = tolower(room_name[a]);
+               }
+
+       time(&qrbuf->QRmtime);
+       cdb_store(CDB_QUICKROOM, lowercase_name, strlen(lowercase_name),
+               qrbuf, sizeof(struct quickroom));
+       }
+
+
+/*
+ * lnputroom()  -  same as nputroom() but unlocks the record (if supported)
+ */
+void lnputroom(struct quickroom *qrbuf, char *room_name)
+{
+
+       nputroom(qrbuf, room_name);
+       end_critical_section(S_QUICKROOM);
+
+       }
+
+/****************************************************************************/
+
 /*
  * getfloor()  -  retrieve floor data from disk
  */