Lines 266-273
Link Here
|
266 |
struct ncp_server *server; |
266 |
struct ncp_server *server; |
267 |
struct inode *dir = dentry->d_parent->d_inode; |
267 |
struct inode *dir = dentry->d_parent->d_inode; |
268 |
struct ncp_entry_info finfo; |
268 |
struct ncp_entry_info finfo; |
269 |
int res, val = 0, len = dentry->d_name.len + 1; |
269 |
int res, val = 0, len; |
270 |
__u8 __name[len]; |
270 |
__u8 __name[NCP_MAXPATHLEN + 1]; |
271 |
|
271 |
|
272 |
if (!dentry->d_inode || !dir) |
272 |
if (!dentry->d_inode || !dir) |
273 |
goto finished; |
273 |
goto finished; |
Lines 291-304
Link Here
|
291 |
dentry->d_parent->d_name.name, dentry->d_name.name, |
291 |
dentry->d_parent->d_name.name, dentry->d_name.name, |
292 |
NCP_GET_AGE(dentry)); |
292 |
NCP_GET_AGE(dentry)); |
293 |
|
293 |
|
|
|
294 |
len = sizeof(__name); |
294 |
if (ncp_is_server_root(dir)) { |
295 |
if (ncp_is_server_root(dir)) { |
295 |
res = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
296 |
res = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
296 |
len-1, 1); |
297 |
dentry->d_name.len, 1); |
297 |
if (!res) |
298 |
if (!res) |
298 |
res = ncp_lookup_volume(server, __name, &(finfo.i)); |
299 |
res = ncp_lookup_volume(server, __name, &(finfo.i)); |
299 |
} else { |
300 |
} else { |
300 |
res = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
301 |
res = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
301 |
len-1, !ncp_preserve_case(dir)); |
302 |
dentry->d_name.len, !ncp_preserve_case(dir)); |
302 |
if (!res) |
303 |
if (!res) |
303 |
res = ncp_obtain_info(server, dir, __name, &(finfo.i)); |
304 |
res = ncp_obtain_info(server, dir, __name, &(finfo.i)); |
304 |
} |
305 |
} |
Lines 548-556
Link Here
|
548 |
int valid = 0; |
549 |
int valid = 0; |
549 |
int hashed = 0; |
550 |
int hashed = 0; |
550 |
ino_t ino = 0; |
551 |
ino_t ino = 0; |
551 |
__u8 __name[256]; |
552 |
__u8 __name[NCP_MAXPATHLEN + 1]; |
552 |
|
553 |
|
553 |
qname.len = 256; |
554 |
qname.len = sizeof(__name); |
554 |
if (ncp_vol2io(NCP_SERVER(inode), __name, &qname.len, |
555 |
if (ncp_vol2io(NCP_SERVER(inode), __name, &qname.len, |
555 |
entry->i.entryName, entry->i.nameLen, |
556 |
entry->i.entryName, entry->i.nameLen, |
556 |
!ncp_preserve_entry_case(inode, entry->i.NSCreator))) |
557 |
!ncp_preserve_entry_case(inode, entry->i.NSCreator))) |
Lines 705-720
Link Here
|
705 |
{ |
706 |
{ |
706 |
struct ncp_server* server = NCP_SBP(sb); |
707 |
struct ncp_server* server = NCP_SBP(sb); |
707 |
struct nw_info_struct i; |
708 |
struct nw_info_struct i; |
708 |
int result, len = strlen(server->m.mounted_vol) + 1; |
709 |
int result; |
709 |
__u8 __name[len]; |
|
|
710 |
|
710 |
|
711 |
if (ncp_single_volume(server)) { |
711 |
if (ncp_single_volume(server)) { |
|
|
712 |
int len; |
712 |
struct dentry* dent; |
713 |
struct dentry* dent; |
|
|
714 |
__u8 __name[NCP_MAXPATHLEN + 1]; |
713 |
|
715 |
|
714 |
result = -ENOENT; |
716 |
len = sizeof(__name); |
715 |
if (ncp_io2vol(server, __name, &len, server->m.mounted_vol, |
717 |
result = ncp_io2vol(server, __name, &len, server->m.mounted_vol, |
716 |
len-1, 1)) |
718 |
strlen(server->m.mounted_vol), 1); |
|
|
719 |
if (result) |
717 |
goto out; |
720 |
goto out; |
|
|
721 |
result = -ENOENT; |
718 |
if (ncp_lookup_volume(server, __name, &i)) { |
722 |
if (ncp_lookup_volume(server, __name, &i)) { |
719 |
PPRINTK("ncp_conn_logged_in: %s not found\n", |
723 |
PPRINTK("ncp_conn_logged_in: %s not found\n", |
720 |
server->m.mounted_vol); |
724 |
server->m.mounted_vol); |
Lines 745-752
Link Here
|
745 |
struct ncp_server *server = NCP_SERVER(dir); |
749 |
struct ncp_server *server = NCP_SERVER(dir); |
746 |
struct inode *inode = NULL; |
750 |
struct inode *inode = NULL; |
747 |
struct ncp_entry_info finfo; |
751 |
struct ncp_entry_info finfo; |
748 |
int error, res, len = dentry->d_name.len + 1; |
752 |
int error, res, len; |
749 |
__u8 __name[len]; |
753 |
__u8 __name[NCP_MAXPATHLEN + 1]; |
750 |
|
754 |
|
751 |
error = -EIO; |
755 |
error = -EIO; |
752 |
if (!ncp_conn_valid(server)) |
756 |
if (!ncp_conn_valid(server)) |
Lines 755-768
Link Here
|
755 |
PPRINTK("ncp_lookup: server lookup for %s/%s\n", |
759 |
PPRINTK("ncp_lookup: server lookup for %s/%s\n", |
756 |
dentry->d_parent->d_name.name, dentry->d_name.name); |
760 |
dentry->d_parent->d_name.name, dentry->d_name.name); |
757 |
|
761 |
|
|
|
762 |
len = sizeof(__name); |
758 |
if (ncp_is_server_root(dir)) { |
763 |
if (ncp_is_server_root(dir)) { |
759 |
res = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
764 |
res = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
760 |
len-1, 1); |
765 |
dentry->d_name.len, 1); |
761 |
if (!res) |
766 |
if (!res) |
762 |
res = ncp_lookup_volume(server, __name, &(finfo.i)); |
767 |
res = ncp_lookup_volume(server, __name, &(finfo.i)); |
763 |
} else { |
768 |
} else { |
764 |
res = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
769 |
res = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
765 |
len-1, !ncp_preserve_case(dir)); |
770 |
dentry->d_name.len, !ncp_preserve_case(dir)); |
766 |
if (!res) |
771 |
if (!res) |
767 |
res = ncp_obtain_info(server, dir, __name, &(finfo.i)); |
772 |
res = ncp_obtain_info(server, dir, __name, &(finfo.i)); |
768 |
} |
773 |
} |
Lines 825-833
Link Here
|
825 |
{ |
830 |
{ |
826 |
struct ncp_server *server = NCP_SERVER(dir); |
831 |
struct ncp_server *server = NCP_SERVER(dir); |
827 |
struct ncp_entry_info finfo; |
832 |
struct ncp_entry_info finfo; |
828 |
int error, result, len = dentry->d_name.len + 1; |
833 |
int error, result, len; |
829 |
int opmode; |
834 |
int opmode; |
830 |
__u8 __name[len]; |
835 |
__u8 __name[NCP_MAXPATHLEN + 1]; |
831 |
|
836 |
|
832 |
PPRINTK("ncp_create_new: creating %s/%s, mode=%x\n", |
837 |
PPRINTK("ncp_create_new: creating %s/%s, mode=%x\n", |
833 |
dentry->d_parent->d_name.name, dentry->d_name.name, mode); |
838 |
dentry->d_parent->d_name.name, dentry->d_name.name, mode); |
Lines 836-843
Link Here
|
836 |
goto out; |
841 |
goto out; |
837 |
|
842 |
|
838 |
ncp_age_dentry(server, dentry); |
843 |
ncp_age_dentry(server, dentry); |
|
|
844 |
len = sizeof(__name); |
839 |
error = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
845 |
error = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
840 |
len-1, !ncp_preserve_case(dir)); |
846 |
dentry->d_name.len, !ncp_preserve_case(dir)); |
841 |
if (error) |
847 |
if (error) |
842 |
goto out; |
848 |
goto out; |
843 |
|
849 |
|
Lines 880-887
Link Here
|
880 |
{ |
886 |
{ |
881 |
struct ncp_entry_info finfo; |
887 |
struct ncp_entry_info finfo; |
882 |
struct ncp_server *server = NCP_SERVER(dir); |
888 |
struct ncp_server *server = NCP_SERVER(dir); |
883 |
int error, len = dentry->d_name.len + 1; |
889 |
int error, len; |
884 |
__u8 __name[len]; |
890 |
__u8 __name[NCP_MAXPATHLEN + 1]; |
885 |
|
891 |
|
886 |
DPRINTK("ncp_mkdir: making %s/%s\n", |
892 |
DPRINTK("ncp_mkdir: making %s/%s\n", |
887 |
dentry->d_parent->d_name.name, dentry->d_name.name); |
893 |
dentry->d_parent->d_name.name, dentry->d_name.name); |
Lines 890-897
Link Here
|
890 |
goto out; |
896 |
goto out; |
891 |
|
897 |
|
892 |
ncp_age_dentry(server, dentry); |
898 |
ncp_age_dentry(server, dentry); |
|
|
899 |
len = sizeof(__name); |
893 |
error = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
900 |
error = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
894 |
len-1, !ncp_preserve_case(dir)); |
901 |
dentry->d_name.len, !ncp_preserve_case(dir)); |
895 |
if (error) |
902 |
if (error) |
896 |
goto out; |
903 |
goto out; |
897 |
|
904 |
|
Lines 909-916
Link Here
|
909 |
static int ncp_rmdir(struct inode *dir, struct dentry *dentry) |
916 |
static int ncp_rmdir(struct inode *dir, struct dentry *dentry) |
910 |
{ |
917 |
{ |
911 |
struct ncp_server *server = NCP_SERVER(dir); |
918 |
struct ncp_server *server = NCP_SERVER(dir); |
912 |
int error, result, len = dentry->d_name.len + 1; |
919 |
int error, result, len; |
913 |
__u8 __name[len]; |
920 |
__u8 __name[NCP_MAXPATHLEN + 1]; |
914 |
|
921 |
|
915 |
DPRINTK("ncp_rmdir: removing %s/%s\n", |
922 |
DPRINTK("ncp_rmdir: removing %s/%s\n", |
916 |
dentry->d_parent->d_name.name, dentry->d_name.name); |
923 |
dentry->d_parent->d_name.name, dentry->d_name.name); |
Lines 923-930
Link Here
|
923 |
if (!d_unhashed(dentry)) |
930 |
if (!d_unhashed(dentry)) |
924 |
goto out; |
931 |
goto out; |
925 |
|
932 |
|
|
|
933 |
len = sizeof(__name); |
926 |
error = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
934 |
error = ncp_io2vol(server, __name, &len, dentry->d_name.name, |
927 |
len-1, !ncp_preserve_case(dir)); |
935 |
dentry->d_name.len, !ncp_preserve_case(dir)); |
928 |
if (error) |
936 |
if (error) |
929 |
goto out; |
937 |
goto out; |
930 |
|
938 |
|
Lines 1022-1030
Link Here
|
1022 |
{ |
1030 |
{ |
1023 |
struct ncp_server *server = NCP_SERVER(old_dir); |
1031 |
struct ncp_server *server = NCP_SERVER(old_dir); |
1024 |
int error; |
1032 |
int error; |
1025 |
int old_len = old_dentry->d_name.len + 1; |
1033 |
int old_len, new_len; |
1026 |
int new_len = new_dentry->d_name.len + 1; |
1034 |
__u8 __old_name[NCP_MAXPATHLEN + 1], __new_name[NCP_MAXPATHLEN + 1]; |
1027 |
__u8 __old_name[old_len], __new_name[new_len]; |
|
|
1028 |
|
1035 |
|
1029 |
DPRINTK("ncp_rename: %s/%s to %s/%s\n", |
1036 |
DPRINTK("ncp_rename: %s/%s to %s/%s\n", |
1030 |
old_dentry->d_parent->d_name.name, old_dentry->d_name.name, |
1037 |
old_dentry->d_parent->d_name.name, old_dentry->d_name.name, |
Lines 1037-1051
Link Here
|
1037 |
ncp_age_dentry(server, old_dentry); |
1044 |
ncp_age_dentry(server, old_dentry); |
1038 |
ncp_age_dentry(server, new_dentry); |
1045 |
ncp_age_dentry(server, new_dentry); |
1039 |
|
1046 |
|
|
|
1047 |
old_len = sizeof(__old_name); |
1040 |
error = ncp_io2vol(server, __old_name, &old_len, |
1048 |
error = ncp_io2vol(server, __old_name, &old_len, |
1041 |
old_dentry->d_name.name, old_len-1, |
1049 |
old_dentry->d_name.name, old_dentry->d_name.len, |
1042 |
!ncp_preserve_case(old_dir)); |
1050 |
!ncp_preserve_case(old_dir)); |
1043 |
if (error) |
1051 |
if (error) |
1044 |
goto out; |
1052 |
goto out; |
1045 |
|
1053 |
|
|
|
1054 |
new_len = sizeof(__new_name); |
1046 |
error = ncp_io2vol(server, __new_name, &new_len, |
1055 |
error = ncp_io2vol(server, __new_name, &new_len, |
1047 |
new_dentry->d_name.name, new_len-1, |
1056 |
new_dentry->d_name.name, new_dentry->d_name.len, |
1048 |
!ncp_preserve_case(new_dir)); |
1057 |
!ncp_preserve_case(new_dir)); |
1049 |
if (error) |
1058 |
if (error) |
1050 |
goto out; |
1059 |
goto out; |
1051 |
|
1060 |
|