X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=d0.c;h=c8920b4ef5a120ad66f94b9d3355f152239063f1;hb=86ae1d47f6cb0c9bc872d7ad80fc356c6d7bd2e3;hp=aa0302d752b5a42b9dd31d9028366313787ed3a5;hpb=b374dda076ae71bea6b9859ebf017e9603954bc6;p=xonotic%2Fd0_blind_id.git diff --git a/d0.c b/d0.c index aa0302d..c8920b4 100644 --- a/d0.c +++ b/d0.c @@ -1,25 +1,125 @@ +#include "d0.h" + /* -Blind-ID library for user identification using RSA blind signatures -Copyright (C) 2010 Rudolf Polzer + * include the license notice into the dynamic library to "reproduce the + * copyright notice" automatically, so the application developer does not have + * to care about this term + */ +const char *d0_bsd_license_notice D0_USED = "\n" +"/*\n" +" * FILE: d0.c\n" +" * AUTHOR: Rudolf Polzer - divVerent@xonotic.org\n" +" * \n" +" * Copyright (c) 2010, Rudolf Polzer\n" +" * All rights reserved.\n" +" *\n" +" * Redistribution and use in source and binary forms, with or without\n" +" * modification, are permitted provided that the following conditions\n" +" * are met:\n" +" * 1. Redistributions of source code must retain the above copyright\n" +" * notice, this list of conditions and the following disclaimer.\n" +" * 2. Redistributions in binary form must reproduce the above copyright\n" +" * notice, this list of conditions and the following disclaimer in the\n" +" * documentation and/or other materials provided with the distribution.\n" +" * 3. Neither the name of the copyright holder nor the names of contributors\n" +" * may be used to endorse or promote products derived from this software\n" +" * without specific prior written permission.\n" +" * \n" +" * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND\n" +" * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n" +" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n" +" * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE\n" +" * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n" +" * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n" +" * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n" +" * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n" +" * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n" +" * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n" +" * SUCH DAMAGE.\n" +" *\n" +" * $Format:commit %H$\n" +" * $Id$\n" +" */\n"; + +#include -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. +//#define MUTEX_DEBUG -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. +#ifdef MUTEX_DEBUG +#define NUM_MUTEXES 1024 +#include +static mutexarray[NUM_MUTEXES]; +static int mutexpos = 0; +static void *dummy_createmutex(void) +{ + if(mutexpos >= NUM_MUTEXES) + { + printf("We don't support creating so many mutexes here\n"); + return NULL; + } + return &mutexarray[mutexpos++]; +} +static void dummy_destroymutex(void *m) +{ + if(*(int *)m != 0) + printf("Destroying in-use mutex\n"); + *(int *)m = -1; +} +static int dummy_lockmutex(void *m) +{ + if(*(int *)m != 0) + printf("Locking in-use mutex\n"); + *(int *)m += 1; + return 0; +} +static int dummy_unlockmutex(void *m) +{ + if(*(int *)m != 1) + printf("Unlocking not-in-use mutex\n"); + *(int *)m -= 1; + return 0; +} +#else +static void *dummy_createmutex(void) +{ + return (void *) 1; // some dummy non-NULL pointer +} +static void dummy_destroymutex(void *m) +{ +} +static int dummy_lockmutex(void *m) +{ + return 0; +} +static int dummy_unlockmutex(void *m) +{ + return 0; +} +#endif -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ +d0_malloc_t *d0_malloc = NULL; +d0_free_t *d0_free = NULL; +d0_createmutex_t *d0_createmutex = NULL; +d0_destroymutex_t *d0_destroymutex = NULL; +d0_lockmutex_t *d0_lockmutex = NULL; +d0_unlockmutex_t *d0_unlockmutex = NULL; -#include "d0.h" +void d0_setmallocfuncs(d0_malloc_t *m, d0_free_t *f) +{ + d0_malloc = (m ? m : malloc); + d0_free = (f ? f : free); +} -#include +void d0_setmutexfuncs(d0_createmutex_t *c, d0_destroymutex_t *d, d0_lockmutex_t *l, d0_unlockmutex_t *u) +{ + d0_createmutex = (c ? c : dummy_createmutex); + d0_destroymutex = (d ? d : dummy_destroymutex); + d0_lockmutex = (l ? l : dummy_lockmutex); + d0_unlockmutex = (u ? u : dummy_unlockmutex); +} -void *(*d0_malloc)(size_t len) = malloc; -void (*d0_free)(void *p) = free; +void d0_initfuncs(void) +{ + d0_setmallocfuncs(d0_malloc, d0_free); + d0_setmutexfuncs(d0_createmutex, d0_destroymutex, d0_lockmutex, d0_unlockmutex); +}