-/* This is also used by receive.c with f_out = -1. */
-int read_iflags(int f_in, int f_out, int ndx, char *buf)
-{
- int len;
- int iflags = protocol_version >= 29 ? read_shortint(f_in)
- : ITEM_TRANSFER | ITEM_MISSING_DATA;
- int isave = iflags; /* XXX remove soon */
-
- /* Handle the new keep-alive (no-op) packet. */
- if (ndx == the_file_list->count && iflags == ITEM_IS_NEW)
- ;
- else if (ndx < 0 || ndx >= the_file_list->count) {
- rprintf(FERROR, "Invalid file index %d (count=%d) [%s]\n",
- ndx, the_file_list->count, who_am_i());
- exit_cleanup(RERR_PROTOCOL);
- } else if (iflags == ITEM_IS_NEW) {
- rprintf(FERROR, "Invalid itemized flag word [%s]\n",
- who_am_i());
- exit_cleanup(RERR_PROTOCOL);
- }
-
- if (iflags & ITEM_HARD_LINKED)
- len = read_vstring(f_in, buf, MAXPATHLEN);
- else {
- *buf = '\0';
- len = -1;
- }
-
- /* XXX Temporary backward compatibility when talking to 2.6.4pre[12] */
- if (protocol_version >= 29 && iflags & ITEM_TRANSFER
- && !S_ISREG(the_file_list->files[ndx]->mode)) {
- iflags &= ~ITEM_TRANSFER;
- iflags |= ITEM_LOCAL_CHANGE;
- }