HEADER := $(S) $(HEADER)
# ¥½¡¼¥¹¥Õ¥¡¥¤¥ë
-SRC = main.c cache.c parser.c layout.c window.c retriever.c tadlib.c confirm.c poptray.c postres.c http.c submit.c sjisstring.c parselib.c submitutil.c bchan_vobj.c tadurl.c bchan_panels.c bchan_menus.c
+SRC = main.c cache.c parser.c layout.c window.c retriever.c tadlib.c confirm.c poptray.c postres.c http.c submit.c sjisstring.c parselib.c submitutil.c bchan_vobj.c tadurl.c bchan_panels.c bchan_menus.c residhash.c
# ¥Ç¡¼¥¿¥Ü¥Ã¥¯¥¹¥½¡¼¥¹¥Õ¥¡¥¤¥ë
DBSRC =
/*
* cache.c
*
- * Copyright (c) 2009 project bchan
+ * Copyright (c) 2009-2010 project bchan
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
#include <bsys/queue.h>
#include "cache.h"
+#include "residhash.h"
typedef struct datcache_data_t_ datcache_data_t;
W thread_len;
UB *latestheader;
W latestheader_len;
+ residhash_t residhash;
};
struct datcache_datareadcontext_t_ {
return 0;
}
+EXPORT W datcache_addresiddata(datcache_t *cache, TC *idstr, W idstr_len, UW attr, COLOR color)
+{
+ return residhash_adddata(&cache->residhash, idstr, idstr_len, attr, color);
+}
+
+EXPORT W datcache_searchresiddata(datcache_t *cache, TC *idstr, W idstr_len, UW *attr, COLOR *color)
+{
+ return residhash_searchdata(&cache->residhash, idstr, idstr_len, attr, color);
+}
+
+EXPORT VOID datcache_removeresiddata(datcache_t *cache, TC *idstr, W idstr_len)
+{
+ residhash_removedata(&cache->residhash, idstr, idstr_len);
+}
+
LOCAL W datcache_getrec_fromfile(W fd, W rectype, W subtype, UB **data, W *size)
{
W err, size0;
cache->latestheader = header;
cache->latestheader_len = header_len;
+ err = residhash_initialize(&cache->residhash);
+ if (err < 0) {
+ free(retrinfo);
+ free(rawdat);
+ del_sem(semid);
+ cls_fil(fd);
+ free(cache);
+ return NULL;
+ }
+
return cache;
}
datcache_data_t *cache_data;
Bool ok;
+ residhash_finalize(&cache->residhash);
+
if (cache->latestheader != NULL) {
free(cache->latestheader);
}
/*
* cache.h
*
- * Copyright (c) 2009 project bchan
+ * Copyright (c) 2009-2010 project bchan
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
#define DATCACHE_RECORDSUBTYPE_RETRIEVE 0x0001
#define DATCACHE_RECORDSUBTYPE_HEADER 0x0002
+#define DATCACHE_RESIDDATA_FLAG_NG 0x00000001
+#define DATCACHE_RESIDDATA_FLAG_COLOR 0x00000002
+
typedef struct datcache_t_ datcache_t;
typedef struct datcache_datareadcontext_t_ datcache_datareadcontext_t;
IMPORT VOID datcache_getthread(datcache_t *cache, UB **thread, W *len);
IMPORT W datcache_datasize(datcache_t *cache);
IMPORT W datcache_writefile(datcache_t *cache);
+IMPORT W datcache_addresiddata(datcache_t *cache, TC *idstr, W idstr_len, UW attr, COLOR color);
+#define DATCACHE_SEARCHRESIDDATA_NOTFOUND 0 /* RESIDHASH_SEARCHDATA_NOTFOUND */
+#define DATCACHE_SEARCHRESIDDATA_FOUND 1 /* RESIDHASH_SEARCHDATA_FOUND */
+IMPORT W datcache_searchresiddata(datcache_t *cache, TC *idstr, W idstr_len, UW *attr, COLOR *color);
+IMPORT VOID datcache_removeresiddata(datcache_t *cache, TC *idstr, W idstr_len);
IMPORT datcache_datareadcontext_t* datcache_startdataread(datcache_t *cache, W start);
IMPORT VOID datcache_enddataread(datcache_t *cache, datcache_datareadcontext_t *context);