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