Import ncpfs 0.10

This commit is contained in:
ncpfs archive import
2026-04-28 20:39:57 +02:00
parent 5d4b23a5c1
commit 517e207709
45 changed files with 3393 additions and 6000 deletions

View File

@@ -2,23 +2,24 @@
#ifdef MODULE
#include <linux/module.h>
#include <linux/version.h>
#else
#define MOD_INC_USE_COUNT
#define MOD_DEC_USE_COUNT
#endif
#include "ncplib_kernel.h"
typedef __u8 byte;
typedef __u16 word;
typedef __u32 dword;
static inline int min(int a, int b)
{
return a<b ? a : b;
}
static void
assert_server_locked(struct ncp_server *server)
{
if (server->lock == 0) {
if (server->lock == 0)
{
DPRINTK("ncpfs: server not locked!\n");
}
}
@@ -73,7 +74,8 @@ ncp_add_pstring(struct ncp_server *server, const char *s)
{
int len = strlen(s);
assert_server_locked(server);
if (len > 255) {
if (len > 255)
{
DPRINTK("ncpfs: string too long: %s\n", s);
len = 255;
}
@@ -128,14 +130,15 @@ ncp_reply_dword(struct ncp_server *server, int offset)
int
ncp_negotiate_buffersize(struct ncp_server *server,
int size, int *target) {
int size, int *target)
{
int result;
ncp_init_request(server);
ncp_add_word(server, htons(size));
if ((result = ncp_request(server, 33)) != 0) {
if ((result = ncp_request(server, 33)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -156,7 +159,8 @@ ncp_get_volume_info_with_number(struct ncp_server *server, int n,
ncp_init_request_s(server, 44);
ncp_add_byte(server, n);
if ((result = ncp_request(server, 22)) != 0) {
if ((result = ncp_request(server, 22)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -172,7 +176,8 @@ ncp_get_volume_info_with_number(struct ncp_server *server, int n,
memset(&(target->volume_name), 0, sizeof(target->volume_name));
len = ncp_reply_byte(server, 29);
if (len > NCP_VOLNAME_LEN) {
if (len > NCP_VOLNAME_LEN)
{
DPRINTK("ncpfs: volume name too long: %d\n", len);
ncp_unlock_server(server);
return -EIO;
@@ -191,7 +196,8 @@ ncp_get_volume_number(struct ncp_server *server, const char *name, int *target)
ncp_init_request_s(server, 5);
ncp_add_pstring(server, name);
if ((result = ncp_request(server, 22)) != 0) {
if ((result = ncp_request(server, 22)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -210,7 +216,8 @@ ncp_close_file(struct ncp_server *server, const char *file_id)
ncp_add_byte(server, 0);
ncp_add_mem(server, file_id, 6);
if ((result = ncp_request(server, 66)) != 0) {
if ((result = ncp_request(server, 66)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -227,12 +234,16 @@ ncp_add_handle_path(struct ncp_server *server,
{
ncp_add_byte(server, vol_num);
ncp_add_dword(server, dir_base);
if (have_dir_base != 0) {
if (have_dir_base != 0)
{
ncp_add_byte(server, 1); /* dir_base */
} else {
}
else
{
ncp_add_byte(server, 0xff); /* no handle */
}
if (path != NULL) {
if (path != NULL)
{
ncp_add_byte(server, 1); /* 1 component */
ncp_add_pstring(server, path);
}
@@ -268,11 +279,13 @@ ncp_do_lookup(struct ncp_server *server,
int result;
char *volname = NULL;
if (target == NULL) {
if (target == NULL)
{
return -EINVAL;
}
if (dir == NULL) {
if (dir == NULL)
{
DDPRINTK("ncp_do_lookup: looking up vol %s\n", path);
@@ -286,7 +299,8 @@ ncp_do_lookup(struct ncp_server *server,
ncp_add_handle_path(server, 0, 0, 0, /* no handle */
path);
if ((result = ncp_request(server, 87)) != 0) {
if ((result = ncp_request(server, 87)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -312,14 +326,16 @@ ncp_do_lookup(struct ncp_server *server,
ncp_add_handle_path(server, vol_num, dir_base, 1,
path);
if ((result = ncp_request(server, 87)) != 0) {
if ((result = ncp_request(server, 87)) != 0)
{
ncp_unlock_server(server);
return result;
}
ncp_extract_file_info(ncp_reply_data(server, 0), target);
if (volname != NULL) {
if (volname != NULL)
{
target->nameLen = strlen(volname);
strcpy(target->entryName, volname);
}
@@ -347,7 +363,8 @@ ncp_modify_file_or_subdir_dos_info(struct ncp_server *server,
ncp_add_handle_path(server, file->volNumber,
file->DosDirNum, 1, NULL);
if ((result = ncp_request(server, 87)) != 0) {
if ((result = ncp_request(server, 87)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -370,7 +387,8 @@ ncp_del_file_or_subdir(struct ncp_server *server,
ncp_add_handle_path(server, dir->volNumber,
dir->DosDirNum, 1, name);
if ((result = ncp_request(server, 87)) != 0) {
if ((result = ncp_request(server, 87)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -411,16 +429,20 @@ ncp_open_create_file_or_subdir(struct ncp_server *server,
for directories */
ncp_add_word(server, desired_acc_rights);
if (dir != NULL) {
if (dir != NULL)
{
ncp_add_handle_path(server, dir->volNumber,
dir->DosDirNum, 1, name);
} else {
}
else
{
ncp_add_handle_path(server,
target->i.volNumber, target->i.DosDirNum,
1, NULL);
}
if ((result = ncp_request(server, 87)) != 0) {
if ((result = ncp_request(server, 87)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -429,7 +451,8 @@ ncp_open_create_file_or_subdir(struct ncp_server *server,
target->server_file_handle = ncp_reply_dword(server, 0);
target->open_create_action = ncp_reply_byte(server, 4);
if (dir != NULL) {
if (dir != NULL)
{
/* in target there's a new finfo to fill */
ncp_extract_file_info(ncp_reply_data(server, 5), &(target->i));
}
@@ -454,7 +477,8 @@ ncp_initialize_search(struct ncp_server *server,
ncp_add_byte(server, 0); /* reserved */
ncp_add_handle_path(server, dir->volNumber, dir->DosDirNum, 1, NULL);
if ((result = ncp_request(server, 87)) != 0) {
if ((result = ncp_request(server, 87)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -484,7 +508,8 @@ ncp_search_for_file_or_subdir(struct ncp_server *server,
ncp_add_byte(server, 0xff); /* following is a wildcard */
ncp_add_byte(server, '*');
if ((result = ncp_request(server, 87)) != 0) {
if ((result = ncp_request(server, 87)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -550,7 +575,8 @@ ncp_read(struct ncp_server *server, const char *file_id,
ncp_add_dword(server, htonl(offset));
ncp_add_word(server, htons(to_read));
if ((result = ncp_request(server, 72)) != 0) {
if ((result = ncp_request(server, 72)) != 0)
{
ncp_unlock_server(server);
return result;
}
@@ -577,7 +603,8 @@ ncp_write(struct ncp_server *server, const char *file_id,
ncp_add_word(server, htons(to_write));
ncp_add_mem_fromfs(server, source, to_write);
if ((result = ncp_request(server, 73)) != 0) {
if ((result = ncp_request(server, 73)) != 0)
{
ncp_unlock_server(server);
return result;
}