summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/file_descriptor_source_impl.cc
diff options
context:
space:
mode:
authorMarcus Müller <mmueller@gnuradio.org>2019-08-07 21:45:12 +0200
committerMarcus Müller <marcus@hostalia.de>2019-08-09 23:04:28 +0200
commitf7bbf2c1d8d780294f3e016aff239ca35eb6516e (patch)
treee09ab6112e02b2215b2d59ac24d3d6ea2edac745 /gr-blocks/lib/file_descriptor_source_impl.cc
parent78431dc6941e3acc67c858277dfe4a0ed583643c (diff)
Tree: clang-format without the include sorting
Diffstat (limited to 'gr-blocks/lib/file_descriptor_source_impl.cc')
-rw-r--r--gr-blocks/lib/file_descriptor_source_impl.cc175
1 files changed, 86 insertions, 89 deletions
diff --git a/gr-blocks/lib/file_descriptor_source_impl.cc b/gr-blocks/lib/file_descriptor_source_impl.cc
index 575681ba9b..de47bb85a3 100644
--- a/gr-blocks/lib/file_descriptor_source_impl.cc
+++ b/gr-blocks/lib/file_descriptor_source_impl.cc
@@ -40,117 +40,114 @@
#endif
namespace gr {
- namespace blocks {
-
- file_descriptor_source::sptr
- file_descriptor_source::make(size_t itemsize, int fd, bool repeat)
- {
- return gnuradio::get_initial_sptr
- (new file_descriptor_source_impl(itemsize, fd, repeat));
- }
-
- file_descriptor_source_impl::file_descriptor_source_impl(size_t itemsize,
- int fd,
- bool repeat)
- : sync_block("file_descriptor_source",
- io_signature::make(0, 0, 0),
- io_signature::make(1, 1, itemsize)),
- d_itemsize(itemsize), d_fd(fd), d_repeat(repeat),
- d_residue(new unsigned char[itemsize]), d_residue_len (0)
- {
- }
-
- file_descriptor_source_impl::~file_descriptor_source_impl()
- {
- close(d_fd);
- delete [] d_residue;
- }
-
- int
- file_descriptor_source_impl::read_items(char *buf, int nitems)
- {
- assert(nitems > 0);
- assert(d_residue_len < d_itemsize);
-
- int nbytes_read = 0;
-
- if(d_residue_len > 0) {
+namespace blocks {
+
+file_descriptor_source::sptr
+file_descriptor_source::make(size_t itemsize, int fd, bool repeat)
+{
+ return gnuradio::get_initial_sptr(
+ new file_descriptor_source_impl(itemsize, fd, repeat));
+}
+
+file_descriptor_source_impl::file_descriptor_source_impl(size_t itemsize,
+ int fd,
+ bool repeat)
+ : sync_block("file_descriptor_source",
+ io_signature::make(0, 0, 0),
+ io_signature::make(1, 1, itemsize)),
+ d_itemsize(itemsize),
+ d_fd(fd),
+ d_repeat(repeat),
+ d_residue(new unsigned char[itemsize]),
+ d_residue_len(0)
+{
+}
+
+file_descriptor_source_impl::~file_descriptor_source_impl()
+{
+ close(d_fd);
+ delete[] d_residue;
+}
+
+int file_descriptor_source_impl::read_items(char* buf, int nitems)
+{
+ assert(nitems > 0);
+ assert(d_residue_len < d_itemsize);
+
+ int nbytes_read = 0;
+
+ if (d_residue_len > 0) {
memcpy(buf, d_residue, d_residue_len);
nbytes_read = d_residue_len;
d_residue_len = 0;
- }
+ }
- int r = read(d_fd, buf + nbytes_read,
- nitems * d_itemsize - nbytes_read);
- if(r <= 0) {
+ int r = read(d_fd, buf + nbytes_read, nitems * d_itemsize - nbytes_read);
+ if (r <= 0) {
handle_residue(buf, nbytes_read);
return r;
- }
+ }
- r = handle_residue(buf, r + nbytes_read);
+ r = handle_residue(buf, r + nbytes_read);
- if(r == 0) // block until we get something
+ if (r == 0) // block until we get something
return read_items(buf, nitems);
- return r;
- }
+ return r;
+}
- int
- file_descriptor_source_impl::handle_residue(char *buf, int nbytes_read)
- {
- assert(nbytes_read >= 0);
- int nitems_read = nbytes_read / d_itemsize;
- d_residue_len = nbytes_read % d_itemsize;
- if(d_residue_len > 0) {
+int file_descriptor_source_impl::handle_residue(char* buf, int nbytes_read)
+{
+ assert(nbytes_read >= 0);
+ int nitems_read = nbytes_read / d_itemsize;
+ d_residue_len = nbytes_read % d_itemsize;
+ if (d_residue_len > 0) {
// fprintf (stderr, "handle_residue: %d\n", d_residue_len);
memcpy(d_residue, buf + nbytes_read - d_residue_len, d_residue_len);
- }
- return nitems_read;
}
+ return nitems_read;
+}
- int
- file_descriptor_source_impl::work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
- {
- assert(noutput_items > 0);
+int file_descriptor_source_impl::work(int noutput_items,
+ gr_vector_const_void_star& input_items,
+ gr_vector_void_star& output_items)
+{
+ assert(noutput_items > 0);
- char *o = (char*)output_items[0];
- int nread = 0;
+ char* o = (char*)output_items[0];
+ int nread = 0;
- while(1) {
+ while (1) {
int r = read_items(o, noutput_items - nread);
- if(r == -1) {
- if(errno == EINTR)
- continue;
- else {
- perror("file_descriptor_source[read]");
- return -1;
- }
- }
- else if(r == 0) { // end of file
- if(!d_repeat)
- break;
- else {
- flush_residue();
- if(lseek(d_fd, 0, SEEK_SET) == -1) {
- perror("file_descriptor_source[lseek]");
- return -1;
+ if (r == -1) {
+ if (errno == EINTR)
+ continue;
+ else {
+ perror("file_descriptor_source[read]");
+ return -1;
}
- }
- }
- else {
- o += r * d_itemsize;
- nread += r;
- break;
+ } else if (r == 0) { // end of file
+ if (!d_repeat)
+ break;
+ else {
+ flush_residue();
+ if (lseek(d_fd, 0, SEEK_SET) == -1) {
+ perror("file_descriptor_source[lseek]");
+ return -1;
+ }
+ }
+ } else {
+ o += r * d_itemsize;
+ nread += r;
+ break;
}
- }
+ }
- if(nread == 0) // EOF
+ if (nread == 0) // EOF
return -1;
- return nread;
- }
+ return nread;
+}
- } /* namespace blocks */
+} /* namespace blocks */
} /* namespace gr */