1/* 2 Copyright (c) 2010 Frank Lahm <franklahm@gmail.com> 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 2 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13*/ 14 15#ifdef HAVE_CONFIG_H 16#include "config.h" 17#endif /* HAVE_CONFIG_H */ 18 19#include <string.h> 20#include <stdio.h> 21#include <stdlib.h> 22#include <errno.h> 23 24#include <atalk/util.h> 25#include <atalk/cnid.h> 26#include <atalk/logger.h> 27#include <atalk/volume.h> 28#include <atalk/directory.h> 29#include <atalk/queue.h> 30#include <atalk/bstrlib.h> 31#include <atalk/globals.h> 32 33#include "directory.h" 34#include "dircache.h" 35#include "hash.h" 36#include "afp_config.h" 37#include "volume.h" 38 39#include "test.h" 40#include "subtests.h" 41 42static int reti; /* for the TEST_int macro */ 43 44int test001_add_x_dirs(const struct vol *vol, cnid_t start, cnid_t end) 45{ 46 struct dir *dir; 47 char dirname[20]; 48 while (start++ < end) { 49 sprintf(dirname, "dir%04u", start); 50 dir = dir_new(dirname, dirname, vol, DIRDID_ROOT, htonl(start), bfromcstr(vol->v_path), 0); 51 if (dir == NULL) 52 return -1; 53 if (dircache_add(vol, dir) != 0) 54 return -1; 55 } 56 57 return 0; 58} 59 60int test002_rem_x_dirs(const struct vol *vol, cnid_t start, cnid_t end) 61{ 62 struct dir *dir; 63 while (start++ < end) { 64 if ((dir = dircache_search_by_did(vol, htonl(start)))) 65 if (dir_remove(vol, dir) != 0) 66 return -1; 67 } 68 69 return 0; 70} 71