Package: atftp Version: 0.7.dfsg-0.1 Severity: wishlist Hi, atftpd does not support reading of named pipes yet.
Here is a patch against version 0.7.dfsg-0.1 that implements the transfer of named pipes. I hope you will integrate it into the next release. Thanks in advance -- Jan Schneider uib umwelt informatik büro gmbh Bonifaziusplatz 1B 55118 Mainz Tel. 06131 / 27561-20 Fax 06131 / 27561-22 E-Mail: [EMAIL PROTECTED] Internet: www.uib.de
431a432,434 > char *fifo_buf = NULL; > int fifo_len = -1; > 500a504,530 > if (S_ISFIFO (file_stat.st_mode)) > { > fifo_buf = (char *) malloc(sizeof(char)*FIFO_MAX_SIZE); > > if (fifo_buf == NULL) > { > logger(LOG_ERR, "memory allocation failure"); > return ERR; > } > > /* Reading from named pipe into buffer */ > fifo_len = fread( fifo_buf, 1, sizeof(char)*FIFO_MAX_SIZE, fp ); > if (fifo_len < 0) > { > logger(LOG_ERR, "error reading from named pipe %s", filename); > fclose(fp); > free(fifo_buf); > return ERR; > } > else if (fifo_len >= FIFO_MAX_SIZE) > { > logger(LOG_WARNING, "buffer limit reached while reading from pipe"); > } > file_stat.st_size = fifo_len; > logger(LOG_DEBUG, "Read %d bytes from pipe", fifo_len); > } > 716a747,760 > if (fifo_len > -1 && fifo_buf != NULL) > { > /* fifo_buf contains data from pipe */ > if (fifo_len >= data->data_buffer_size - 4) > { > data_size = data->data_buffer_size - 4; > fifo_len -= data_size; > } > else > { > data_size = fifo_len; > /* record the last block number */ > last_block = block_number; > } 718,720c762 < data_size = tftp_file_read(fp, tftphdr->th_data, data->data_buffer_size - 4, block_number, < convert, &prev_block_number, &prev_file_pos, &temp); < data_size += 4; /* need to consider tftp header */ --- > strncpy(tftphdr->th_data, fifo_buf + block_number * (data->data_buffer_size - 4), data_size); 722,724c764,779 < /* record the last block number */ < if (feof(fp)) < last_block = block_number; --- > if (data_size == fifo_len && last_block == block_number) > { > free(fifo_buf); > fifo_buf = NULL; > } > } > else > { > data_size = tftp_file_read(fp, tftphdr->th_data, data->data_buffer_size - 4, block_number, > convert, &prev_block_number, &prev_file_pos, &temp); > /* record the last block number */ > if (feof(fp)) > last_block = block_number; > } > > data_size += 4; /* need to consider tftp header */
35a36,38 > #define FIFO_MAX_SIZE 16384 /* Maximum bytes to read from a named pipe */ > >