DEADSOFTWARE

portability: avoid errors on some compilers
[flatwaifu.git] / src / memory.c
index f1187462d2a047ffe760ae283ee3d33bc634ad36..9019586e75d866a11d339368f3f2f515e2a4bb52 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "glob.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "error.h"
-#include "files.h"
 #include "memory.h"
+#include "common/wadres.h"
 
-static byte m_active;
-static void *resp[MAX_WAD];
-static short resl[MAX_WAD];
-
-void M_startup (void) {
-  if(m_active) return;
-  logo("M_startup: setup memory\n");
-  memset(resp,0,sizeof(resp));
-  memset(resl,0,sizeof(resl));
-  //  logo("  free DPMI-memory: %uK\n",dpmi_memavl()>>10);
-  m_active=TRUE;
-}
-
-void M_shutdown (void) {
-  if(!m_active) return;
-  m_active=FALSE;
-}
-
-static void allocres (int h) {
-  int *p,s;
-
-  if(h>d_start && h<d_end) s=1; else s=0;
-  if(!(p=malloc(wad[h].l+4+s*8)))
-    ERR_fatal("M_lock: out of memory");
-  *p=h;
-  ++p;
-  resp[h]=p;
-  if(s) {
-    p[0]=p[1]=p[2]=p[3]=0;
-    F_loadres(h,p,0,2);
-    F_loadres(h,p+1,2,2);
-    F_loadres(h,p+2,4,2);
-    F_loadres(h,p+3,6,2);
-    F_loadres(h,p+4,8,wad[h].l-8);
-  }else F_loadres(h,p,0,wad[h].l);
-}
-
-void *M_lock (int h) {
-  if(h==-1 || h==0xFFFF) return NULL;
-  if(h>=MAX_WAD) ERR_fatal("M_lock: invalid resource id");
-  if(!resl[h]) if(!resp[h]) allocres(h);
-  ++resl[h];
-  return resp[h];
+void *M_lock (int id) {
+  return WADRES_lock(id);
 }
 
 void M_unlock (void *p) {
-  int h;
-
-  if(!p) return;
-  h=((int*)p)[-1];
-  if(h>=MAX_WAD) ERR_fatal("M_unlock: invalid resource id");
-  if(!resl[h]) return;
-  --resl[h];
+  WADRES_unlock(p);
 }
 
-int M_locked (int h) {
-  return (h != -1) && (h != 0xFFFF) && (resl[h] != 0);
+int M_locked (int id) {
+  return WADRES_locked(id);
 }
 
-int M_was_locked (int h) {
-  return (h != -1) && (h != 0xFFFF) && (resp[h] != NULL);
+int M_was_locked (int id) {
+  return WADRES_was_locked(id);
 }