OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [fs/] [hpfs/] [dentry.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 *  linux/fs/hpfs/dentry.c
3
 *
4
 *  Mikulas Patocka (mikulas@artax.karlin.mff.cuni.cz), 1998-1999
5
 *
6
 *  dcache operations
7
 */
8
 
9
#include "hpfs_fn.h"
10
 
11
/*
12
 * Note: the dentry argument is the parent dentry.
13
 */
14
 
15
int hpfs_hash_dentry(struct dentry *dentry, struct qstr *qstr)
16
{
17
        unsigned long    hash;
18
        int              i;
19
        unsigned l = qstr->len;
20
 
21
        if (l == 1) if (qstr->name[0]=='.') goto x;
22
        if (l == 2) if (qstr->name[0]=='.' || qstr->name[1]=='.') goto x;
23
        hpfs_adjust_length((char *)qstr->name, &l);
24
        /*if (hpfs_chk_name((char *)qstr->name,&l))*/
25
                /*return -ENAMETOOLONG;*/
26
                /*return -ENOENT;*/
27
        x:
28
 
29
        hash = init_name_hash();
30
        for (i = 0; i < l; i++)
31
                hash = partial_name_hash(hpfs_upcase(dentry->d_sb->s_hpfs_cp_table,qstr->name[i]), hash);
32
        qstr->hash = end_name_hash(hash);
33
 
34
        return 0;
35
}
36
 
37
int hpfs_compare_dentry(struct dentry *dentry, struct qstr *a, struct qstr *b)
38
{
39
        unsigned al=a->len;
40
        unsigned bl=b->len;
41
        hpfs_adjust_length((char *)a->name, &al);
42
        /*hpfs_adjust_length((char *)b->name, &bl);*/
43
        /* 'a' is the qstr of an already existing dentry, so the name
44
         * must be valid. 'b' must be validated first.
45
         */
46
 
47
        if (hpfs_chk_name((char *)b->name, &bl)) return 1;
48
        if (hpfs_compare_names(dentry->d_sb, (char *)a->name, al, (char *)b->name, bl, 0)) return 1;
49
        return 0;
50
}
51
 
52
struct dentry_operations hpfs_dentry_operations = {
53
        d_hash:         hpfs_hash_dentry,
54
        d_compare:      hpfs_compare_dentry,
55
};
56
 
57
void hpfs_set_dentry_operations(struct dentry *dentry)
58
{
59
        dentry->d_op = &hpfs_dentry_operations;
60
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.