log: normalize AFP file-info messages

This commit is contained in:
a
2026-06-01 10:59:22 +00:00
committed by Mario Fetka
parent 7d814450b5
commit 8065c75872

View File

@@ -2096,6 +2096,7 @@ static int afp_get_file_information(uint8 *afp_req, int afp_len,
uint8 volume_number;
uint32 request_entry_id;
uint16 request_mask;
int afp_sub = afp_req[0];
int path_len;
int volume;
char unixname[PATH_MAX];
@@ -2107,8 +2108,8 @@ static int afp_get_file_information(uint8 *afp_req, int afp_len,
int result;
if (afp_len < 9) {
XDPRINTF((2,0, "%s rejected: short request len=%d",
call_name, afp_len));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=short_request len=%d fn=0x23 sub=0x%02x result=0x7e",
afp_sub, afp_len, afp_sub));
return(-0x7e); /* NCP Boundary Check Failed */
}
@@ -2117,13 +2118,14 @@ static int afp_get_file_information(uint8 *afp_req, int afp_len,
request_mask = GET_BE16(afp_req + 6);
path_len = (int)afp_req[8];
if (path_len < 0 || afp_len < 9 + path_len) {
XDPRINTF((2,0, "%s rejected: boundary check len=%d path_len=%d",
call_name, afp_len, path_len));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=boundary_check len=%d path_len=%d fn=0x23 sub=0x%02x result=0x7e",
afp_sub, afp_len, path_len, afp_sub));
return(-0x7e);
}
if (!nwatalk_backend_available()) {
XDPRINTF((3,0, "%s rejected: AFP xattr metadata backend unavailable", call_name));
XDPRINTF((3,0, "WARN AFP 35/%d REJECT reason=no_xattr_backend fn=0x23 sub=0x%02x result=0xbf",
afp_sub, afp_sub));
return(-0xbf); /* invalid namespace */
}
@@ -2133,9 +2135,10 @@ static int afp_get_file_information(uint8 *afp_req, int afp_len,
unixname, sizeof(unixname),
&volume, &path_data_len);
if (result) {
XDPRINTF((2,0, "%s entry-id lookup failed: vol=%d entry=0x%08x mask=0x%04x result=-0x%x",
call_name, (int)volume_number, request_entry_id,
request_mask, -result));
XDPRINTF((2,0, "WARN MAP 35/%d FAIL reason=entry_id_lookup vol=%u entry=%lu mask=0x%04x fn=0x23 sub=0x%02x entry_hex=0x%08x result=0x%02x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, request_mask, afp_sub,
request_entry_id, (unsigned int)(-result)));
return(result);
}
path_data = (uint8 *)entry_path;
@@ -2145,9 +2148,11 @@ static int afp_get_file_information(uint8 *afp_req, int afp_len,
volume = conn_get_kpl_unxname(unixname, sizeof(unixname), 0,
path_data, path_data_len);
if (volume < 0) {
XDPRINTF((2,0, "%s path resolve failed: vol=%d entry=0x%08x path='%s' result=-0x%x",
call_name, (int)volume_number, request_entry_id,
visable_data(path_data, path_data_len), -volume));
XDPRINTF((2,0, "WARN MAP 35/%d FAIL reason=path_resolve vol=%u entry=%lu path='%s' fn=0x23 sub=0x%02x entry_hex=0x%08x result=0x%02x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id,
visable_data(path_data, path_data_len), afp_sub,
request_entry_id, (unsigned int)(-volume)));
return(volume);
}
}
@@ -2156,16 +2161,20 @@ static int afp_get_file_information(uint8 *afp_req, int afp_len,
volume, afp_req[0] == 0x0f,
response, &entry_id, &fallback);
if (result < 0) {
XDPRINTF((2,0, "%s stat failed: vol=%d entry=0x%08x path='%s' unix='%s' result=-0x%x errno=%d",
call_name, (int)volume_number, request_entry_id,
visable_data(path_data, path_data_len), unixname, -result, errno));
XDPRINTF((2,0, "WARN FILE 35/%d FAIL reason=stat vol=%u entry=%lu path='%s' unix='%s' errno=%d fn=0x23 sub=0x%02x entry_hex=0x%08x result=0x%02x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id,
visable_data(path_data, path_data_len), unixname, errno,
afp_sub, request_entry_id, (unsigned int)(-result)));
return(result);
}
XDPRINTF((3,0, "%s: vol=%d entry=0x%08x mask=0x%04x path='%s' reply_entry=0x%08x%s",
call_name, (int)volume_number, request_entry_id, request_mask,
visable_data(path_data, path_data_len), entry_id,
fallback ? " fallback" : ""));
XDPRINTF((3,0, "INFO AFP 35/%d DONE vol=%u entry=%lu mask=0x%04x path='%s' reply_entry=%lu mode='%s' fn=0x23 sub=0x%02x entry_hex=0x%08x reply_entry_hex=0x%08x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, request_mask,
visable_data(path_data, path_data_len),
(unsigned long)entry_id, fallback ? "fallback" : "",
afp_sub, request_entry_id, entry_id));
return(result);
}
@@ -2198,13 +2207,13 @@ static int afp_set_netware_attributes(int volume, char *unixname,
static int afp_check_metadata_modify_rights(int volume, char *unixname,
struct stat *stb,
const char *call_name,
int afp_sub,
uint8 *path, int path_len)
{
if (!unixname || !stb) return(-0x9c);
if (tru_eff_rights_exists(volume, (uint8 *)unixname, stb, TRUSTEE_M)) {
XDPRINTF((2,0, "%s rejected: no Modify rights for AFP metadata path='%s'",
call_name, visable_data(path, path_len)));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=no_modify_rights path='%s' fn=0x23 sub=0x%02x result=0x8c",
afp_sub, visable_data(path, path_len), afp_sub));
return(-0x8c); /* no modify rights */
}
return(0);
@@ -2247,6 +2256,7 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
uint8 volume_number;
uint32 request_entry_id;
uint16 request_mask;
int afp_sub = afp_req[0];
int is_afp20;
int path_len;
int path_off;
@@ -2271,8 +2281,8 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
uint8 *prodos_data = NULL;
if (afp_len < 9) {
XDPRINTF((2,0, "%s rejected: short request len=%d",
call_name, afp_len));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=short_request len=%d fn=0x23 sub=0x%02x result=0x7e",
afp_sub, afp_len, afp_sub));
return(-0x7e); /* NCP Boundary Check Failed */
}
@@ -2291,16 +2301,16 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
int websdk_path_off = websdk_path_len_off + 1;
if (afp_len <= websdk_path_len_off) {
XDPRINTF((2,0, "%s rejected: short WebSDK request len=%d path_len_off=%d",
call_name, afp_len, websdk_path_len_off));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=short_websdk_request len=%d path_len_off=%d fn=0x23 sub=0x%02x result=0x7e",
afp_sub, afp_len, websdk_path_len_off, afp_sub));
return(-0x7e);
}
path_len = (int)afp_req[websdk_path_len_off];
path_off = websdk_path_off;
if (path_len < 0 || afp_len < path_off + path_len) {
XDPRINTF((2,0, "%s rejected: WebSDK boundary check len=%d path_len=%d path_off=%d",
call_name, afp_len, path_len, path_off));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=websdk_boundary_check len=%d path_len=%d path_off=%d fn=0x23 sub=0x%02x result=0x7e",
afp_sub, afp_len, path_len, path_off, afp_sub));
return(-0x7e);
}
@@ -2316,7 +2326,8 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
path_data = afp_req + path_off;
if (!nwatalk_backend_available()) {
XDPRINTF((3,0, "%s rejected: AFP xattr metadata backend unavailable", call_name));
XDPRINTF((3,0, "WARN AFP 35/%d REJECT reason=no_xattr_backend fn=0x23 sub=0x%02x result=0xbf",
afp_sub, afp_sub));
return(-0xbf); /* invalid namespace */
}
@@ -2326,9 +2337,10 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
unixname, sizeof(unixname),
&path_volume, &entry_path_len);
if (result) {
XDPRINTF((2,0, "%s entry-id lookup failed: vol=%d entry=0x%08x mask=0x%04x result=-0x%x",
call_name, (int)volume_number, request_entry_id,
request_mask, -result));
XDPRINTF((2,0, "WARN MAP 35/%d FAIL reason=entry_id_lookup vol=%u entry=%lu mask=0x%04x fn=0x23 sub=0x%02x entry_hex=0x%08x result=0x%02x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, request_mask, afp_sub,
request_entry_id, (unsigned int)(-result)));
return(result);
}
path_data = (uint8 *)entry_path;
@@ -2340,15 +2352,17 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
AFP_FILE_BITMAP_CREATE_DATE | AFP_FILE_BITMAP_MODIFY_DATE |
AFP_FILE_BITMAP_BACKUP_DATE |
AFP_FILE_BITMAP_FINDER_INFO)) {
XDPRINTF((2,0, "%s rejected: unsupported bitmap vol=%d entry=0x%08x mask=0x%04x path='%s'",
call_name, (int)volume_number, request_entry_id, request_mask,
visable_data(path_data, path_len)));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=unsupported_bitmap vol=%u entry=%lu mask=0x%04x path='%s' fn=0x23 sub=0x%02x entry_hex=0x%08x result=0x9c",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, request_mask,
visable_data(path_data, path_len), afp_sub, request_entry_id));
return(-0x9c); /* keep unsupported write semantics conservative */
}
if (!request_mask) {
XDPRINTF((2,0, "%s rejected: empty bitmap vol=%d entry=0x%08x path='%s'",
call_name, (int)volume_number, request_entry_id,
visable_data(path_data, path_len)));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=empty_bitmap vol=%u entry=%lu path='%s' fn=0x23 sub=0x%02x entry_hex=0x%08x result=0x9c",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id,
visable_data(path_data, path_len), afp_sub, request_entry_id));
return(-0x9c);
}
@@ -2356,8 +2370,9 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
uint16 requested_attrs = GET_BE16(attribute_data);
uint16 requested_bits = requested_attrs & ~AFP_ATTR_SETCLR;
if (requested_bits & ~AFP_ATTR_NETWARE_MASK) {
XDPRINTF((2,0, "%s rejected: unsupported AFP attributes attrs=0x%04x path='%s'",
call_name, requested_attrs, visable_data(path_data, path_len)));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=unsupported_attributes attrs=0x%04x path='%s' fn=0x23 sub=0x%02x result=0x9c",
afp_sub, requested_attrs,
visable_data(path_data, path_len), afp_sub));
return(-0x9c);
}
}
@@ -2374,29 +2389,33 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
path_volume = afp_resolve_path_volume(path_data, path_len,
unixname, sizeof(unixname));
if (path_volume < 0) {
XDPRINTF((2,0, "%s path resolve failed: request_vol=%d entry=0x%08x mask=0x%04x path='%s' result=-0x%x",
call_name, (int)volume_number, request_entry_id, request_mask,
visable_data(path_data, path_len), -path_volume));
XDPRINTF((2,0, "WARN MAP 35/%d FAIL reason=path_resolve request_vol=%u entry=%lu mask=0x%04x path='%s' fn=0x23 sub=0x%02x entry_hex=0x%08x result=0x%02x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, request_mask,
visable_data(path_data, path_len), afp_sub,
request_entry_id, (unsigned int)(-path_volume)));
return(path_volume);
}
}
if (stat(unixname, &stbuff)) {
XDPRINTF((2,0, "%s stat failed: request_vol=%d resolved_vol=%d entry=0x%08x mask=0x%04x path='%s' unix='%s' errno=%d",
call_name, (int)volume_number, path_volume, request_entry_id,
request_mask, visable_data(path_data, path_len), unixname, errno));
XDPRINTF((2,0, "WARN FILE 35/%d FAIL reason=stat request_vol=%u resolved_vol=%d entry=%lu mask=0x%04x path='%s' unix='%s' errno=%d fn=0x23 sub=0x%02x entry_hex=0x%08x result=0x9c",
afp_sub, (unsigned int)volume_number, path_volume,
(unsigned long)request_entry_id, request_mask,
visable_data(path_data, path_len), unixname, errno,
afp_sub, request_entry_id));
return(-0x9c);
}
if (S_ISDIR(stbuff.st_mode)) {
XDPRINTF((2,0, "%s rejected: directory FinderInfo uses dir-specific semantics request_vol=%d resolved_vol=%d path='%s'",
call_name, (int)volume_number, path_volume,
visable_data(path_data, path_len)));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=directory_metadata request_vol=%u resolved_vol=%d path='%s' fn=0x23 sub=0x%02x result=0x9c",
afp_sub, (unsigned int)volume_number, path_volume,
visable_data(path_data, path_len), afp_sub));
return(-0x9c);
}
if (needs_afp_metadata_modify) {
result = afp_check_metadata_modify_rights(path_volume, unixname, &stbuff,
call_name, path_data, path_len);
afp_sub, path_data, path_len);
if (result < 0)
return(result);
}
@@ -2416,8 +2435,8 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
if (request_mask & AFP_FILE_BITMAP_ACCESS_DATE) {
time_t new_atime = nw_2_un_time(access_data, access_data + 2);
if (new_atime == (time_t)-1) {
XDPRINTF((2,0, "%s rejected: invalid access timestamp path='%s'",
call_name, visable_data(path_data, path_len)));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=invalid_access_time path='%s' fn=0x23 sub=0x%02x result=0x8c",
afp_sub, visable_data(path_data, path_len), afp_sub));
return(-0x8c);
}
result = afp_set_access_time(path_volume, unixname, &stbuff, new_atime);
@@ -2440,8 +2459,8 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
if (request_mask & AFP_FILE_BITMAP_MODIFY_DATE) {
time_t new_mtime = nw_2_un_time(modify_data, modify_data + 2);
if (new_mtime == (time_t)-1) {
XDPRINTF((2,0, "%s rejected: invalid modify timestamp path='%s'",
call_name, visable_data(path_data, path_len)));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=invalid_modify_time path='%s' fn=0x23 sub=0x%02x result=0x8c",
afp_sub, visable_data(path_data, path_len), afp_sub));
return(-0x8c);
}
result = nw_utime_node(path_volume, (uint8 *)unixname, &stbuff, new_mtime);
@@ -2474,17 +2493,19 @@ static int afp_set_file_information(uint8 *afp_req, int afp_len,
return(result);
}
XDPRINTF((3,0, "%s: vol=%d request_vol=%d entry=0x%08x mask=0x%04x path='%s'%s%s%s%s%s%s%s attrs=0x%04x atime=%ld mtime=%ld",
call_name, path_volume, (int)volume_number, request_entry_id,
request_mask, visable_data(path_data, path_len),
(request_mask & AFP_FILE_BITMAP_ATTRIBUTES) ? " attributes" : "",
(request_mask & AFP_FILE_BITMAP_ACCESS_DATE) ? " access_time" : "",
(request_mask & AFP_FILE_BITMAP_CREATE_DATE) ? " create_time" : "",
(request_mask & AFP_FILE_BITMAP_MODIFY_DATE) ? " modify_time" : "",
(request_mask & AFP_FILE_BITMAP_BACKUP_DATE) ? " backup_time" : "",
(request_mask & AFP_FILE_BITMAP_FINDER_INFO) ? " finder_info" : "",
(is_afp20 && afp_info_bytes_nonzero(prodos_data, NWATALK_PRODOS_INFO_LEN)) ? " prodos_info" : "",
log_attrs, (long)log_atime, (long)log_mtime));
XDPRINTF((3,0, "INFO AFP 35/%d DONE vol=%d request_vol=%u entry=%lu mask=0x%04x path='%s' fields='%s%s%s%s%s%s%s' attrs=0x%04x atime=%ld mtime=%ld fn=0x23 sub=0x%02x entry_hex=0x%08x",
afp_sub, path_volume, (unsigned int)volume_number,
(unsigned long)request_entry_id, request_mask,
visable_data(path_data, path_len),
(request_mask & AFP_FILE_BITMAP_ATTRIBUTES) ? "attributes " : "",
(request_mask & AFP_FILE_BITMAP_ACCESS_DATE) ? "access_time " : "",
(request_mask & AFP_FILE_BITMAP_CREATE_DATE) ? "create_time " : "",
(request_mask & AFP_FILE_BITMAP_MODIFY_DATE) ? "modify_time " : "",
(request_mask & AFP_FILE_BITMAP_BACKUP_DATE) ? "backup_time " : "",
(request_mask & AFP_FILE_BITMAP_FINDER_INFO) ? "finder_info " : "",
(is_afp20 && afp_info_bytes_nonzero(prodos_data, NWATALK_PRODOS_INFO_LEN)) ? "prodos_info" : "",
log_attrs, (long)log_atime, (long)log_mtime,
afp_sub, request_entry_id));
return(0);
}
@@ -2508,6 +2529,7 @@ static int afp_scan_file_information(uint8 *afp_req, int afp_len,
uint16 desired_count;
uint16 search_mask;
uint16 request_mask;
int afp_sub = afp_req[0];
int path_len;
int path_off;
int volume;
@@ -2526,8 +2548,8 @@ static int afp_scan_file_information(uint8 *afp_req, int afp_len,
int result;
if (afp_len < 17) {
XDPRINTF((2,0, "%s rejected: short request len=%d",
call_name, afp_len));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=short_request len=%d fn=0x23 sub=0x%02x result=0x7e",
afp_sub, afp_len, afp_sub));
return(-0x7e); /* NCP Boundary Check Failed */
}
@@ -2548,13 +2570,14 @@ static int afp_scan_file_information(uint8 *afp_req, int afp_len,
path_off = 17;
if (path_len < 0 || afp_len < path_off + path_len) {
XDPRINTF((2,0, "%s rejected: boundary check len=%d path_len=%d path_off=%d",
call_name, afp_len, path_len, path_off));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=boundary_check len=%d path_len=%d path_off=%d fn=0x23 sub=0x%02x result=0x7e",
afp_sub, afp_len, path_len, path_off, afp_sub));
return(-0x7e);
}
if (!nwatalk_backend_available()) {
XDPRINTF((3,0, "%s rejected: AFP xattr metadata backend unavailable", call_name));
XDPRINTF((3,0, "WARN AFP 35/%d REJECT reason=no_xattr_backend fn=0x23 sub=0x%02x result=0xbf",
afp_sub, afp_sub));
return(-0xbf); /* invalid namespace */
}
@@ -2567,34 +2590,41 @@ static int afp_scan_file_information(uint8 *afp_req, int afp_len,
resolved_path,
sizeof(resolved_path));
if (result < 0) {
XDPRINTF((2,0, "%s entry-id path build failed: vol=%d entry=0x%08x last=0x%08x path='%s' result=-0x%x",
call_name, (int)volume_number, request_entry_id, last_seen_id,
visable_data(afp_req + path_off, path_len), -result));
XDPRINTF((2,0, "WARN MAP 35/%d FAIL reason=entry_id_path_build vol=%u entry=%lu last=%lu path='%s' fn=0x23 sub=0x%02x entry_hex=0x%08x last_hex=0x%08x result=0x%02x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, (unsigned long)last_seen_id,
visable_data(afp_req + path_off, path_len), afp_sub,
request_entry_id, last_seen_id, (unsigned int)(-result)));
return(result);
}
scan_path_data = resolved_path;
scan_path_len = result;
} else if (!path_len) {
XDPRINTF((2,0, "%s rejected: empty path without entry-id vol=%d last=0x%08x mask=0x%04x req=0x%04x",
call_name, (int)volume_number, last_seen_id,
search_mask, request_mask));
XDPRINTF((2,0, "WARN AFP 35/%d REJECT reason=empty_path_without_entry_id vol=%u last=%lu search_mask=0x%04x req_mask=0x%04x fn=0x23 sub=0x%02x last_hex=0x%08x result=0x9c",
afp_sub, (unsigned int)volume_number,
(unsigned long)last_seen_id, search_mask, request_mask,
afp_sub, last_seen_id));
return(-0x9c); /* Invalid Path */
}
volume = conn_get_kpl_unxname(unixname, sizeof(unixname), 0,
scan_path_data, scan_path_len);
if (volume < 0) {
XDPRINTF((2,0, "%s path resolve failed: vol=%d entry=0x%08x last=0x%08x path='%s' result=-0x%x",
call_name, (int)volume_number, request_entry_id, last_seen_id,
visable_data(scan_path_data, scan_path_len), -volume));
XDPRINTF((2,0, "WARN MAP 35/%d FAIL reason=path_resolve vol=%u entry=%lu last=%lu path='%s' fn=0x23 sub=0x%02x entry_hex=0x%08x last_hex=0x%08x result=0x%02x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, (unsigned long)last_seen_id,
visable_data(scan_path_data, scan_path_len), afp_sub,
request_entry_id, last_seen_id, (unsigned int)(-volume)));
return(volume);
}
dir = opendir(unixname);
if (!dir) {
XDPRINTF((2,0, "%s opendir failed: vol=%d entry=0x%08x last=0x%08x path='%s' unix='%s' errno=%d",
call_name, (int)volume_number, request_entry_id, last_seen_id,
visable_data(scan_path_data, scan_path_len), unixname, errno));
XDPRINTF((2,0, "WARN FILE 35/%d FAIL reason=opendir vol=%u entry=%lu last=%lu path='%s' unix='%s' errno=%d fn=0x23 sub=0x%02x entry_hex=0x%08x last_hex=0x%08x result=0x9c",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, (unsigned long)last_seen_id,
visable_data(scan_path_data, scan_path_len), unixname, errno,
afp_sub, request_entry_id, last_seen_id));
return(-0x9c); /* Invalid Path */
}
@@ -2637,20 +2667,25 @@ static int afp_scan_file_information(uint8 *afp_req, int afp_len,
continue;
U16_TO_BE16(1, response);
closedir(dir);
XDPRINTF((3,0, "%s: vol=%d entry=0x%08x last=0x%08x desired=%u mask=0x%04x req=0x%04x path='%s' count=1 reply_entry=0x%08x%s",
call_name, (int)volume_number, request_entry_id, last_seen_id,
XDPRINTF((3,0, "INFO AFP 35/%d DONE vol=%u entry=%lu last=%lu desired=%u search_mask=0x%04x req_mask=0x%04x path='%s' count=1 reply_entry=%lu mode='%s' fn=0x23 sub=0x%02x entry_hex=0x%08x last_hex=0x%08x reply_entry_hex=0x%08x",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, (unsigned long)last_seen_id,
(unsigned)desired_count, search_mask, request_mask,
visable_data(scan_path_data, scan_path_len),
entry_id ? entry_id : child_entry_id,
(fallback || child_fallback) ? " fallback" : ""));
(unsigned long)(entry_id ? entry_id : child_entry_id),
(fallback || child_fallback) ? "fallback" : "",
afp_sub, request_entry_id, last_seen_id,
entry_id ? entry_id : child_entry_id));
return(2 + result);
}
closedir(dir);
XDPRINTF((3,0, "%s completed: vol=%d entry=0x%08x last=0x%08x desired=%u path='%s' no more entries",
call_name, (int)volume_number, request_entry_id, last_seen_id,
XDPRINTF((3,0, "INFO AFP 35/%d DONE vol=%u entry=%lu last=%lu desired=%u path='%s' count=0 status=no_more_entries fn=0x23 sub=0x%02x entry_hex=0x%08x last_hex=0x%08x result=0xff",
afp_sub, (unsigned int)volume_number,
(unsigned long)request_entry_id, (unsigned long)last_seen_id,
(unsigned)desired_count,
visable_data(scan_path_data, scan_path_len)));
visable_data(scan_path_data, scan_path_len), afp_sub,
request_entry_id, last_seen_id));
return(-0xff); /* No files found / scan complete */
}