Back to index

courier  0.68.2
tlscachetest.c
Go to the documentation of this file.
00001 /*
00002 ** Copyright 2002-2006 Double Precision, Inc.
00003 ** See COPYING for distribution information.
00004 */
00005 
00006 #define TLSCACHEMINSIZE (sizeof(struct hdr) + 5 * (sizeof(struct obj)+8))
00007 #include "tlscache.c"
00008 
00009 
00010 static int printcache(void *rec, size_t recsize, int *doupdate,
00011                     void *arg)
00012 {
00013        if (fwrite((const char *)rec, recsize, 1, stdout) == 1)
00014               printf("\n");
00015        return 0;
00016 }
00017 
00018 static int replacecache(void *rec, size_t recsize, int *doupdate,
00019                     void *arg)
00020 {
00021        const char *p=(const char *)arg;
00022        const char *q;
00023 
00024        if ((q=strchr(p, '-')) == NULL || strlen(q+1) != q-p)
00025               return (0);
00026 
00027        if (recsize == q-p && memcmp(rec, p, q-p) == 0)
00028        {
00029               memcpy(rec, q+1, q-p);
00030               *doupdate=1;
00031        }
00032        return 0;
00033 }
00034 
00035 int main(int argc, char **argv)
00036 {
00037        struct CACHE *p=tls_cache_open("test.dat", TLSCACHEMINSIZE);
00038 
00039        if (!p)
00040        {
00041               perror("test.dat");
00042               return (-1);
00043        }
00044 
00045        if (argc > 1)
00046        {
00047               char *s=argv[1];
00048 
00049               if (*s == '+')
00050               {
00051                      ++s;
00052                      if (tls_cache_add(p, s, strlen(s)))
00053                      {
00054                             perror("tls_cache_add");
00055                      }
00056               }
00057 
00058               if (*s == '-')
00059               {
00060                      if (tls_cache_walk(p, replacecache, s+1) < 0)
00061                      {
00062                             perror("tls_cache_walk");
00063                             exit(1);
00064                      }
00065               }
00066        }
00067 
00068        if (tls_cache_walk(p, printcache, NULL) < 0)
00069               perror("tls_cache_walk");
00070        tls_cache_close(p);
00071        return (0);
00072 }