diff --git a/src/nwconn.c b/src/nwconn.c index 8efcb07..010851d 100644 --- a/src/nwconn.c +++ b/src/nwconn.c @@ -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 */ }