> > From: Christophe de Dinechin <dinechin@xxxxxxxxxx> > > This lets us get rid of C-style 'goto done' in do_capture. > > Signed-off-by: Christophe de Dinechin <dinechin@xxxxxxxxxx> > --- > src/spice-streaming-agent.cpp | 32 ++++++++++++++++++++------------ > 1 file changed, 20 insertions(+), 12 deletions(-) > > diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp > index 1090517..8300cf2 100644 > --- a/src/spice-streaming-agent.cpp > +++ b/src/spice-streaming-agent.cpp > @@ -51,6 +51,23 @@ struct SpiceStreamDataMessage > StreamMsgData msg; > }; > > +struct Stream > +{ > + Stream(const char *name, int &fd): fd(fd) > + { > + fd = open(name, O_RDWR); > + if (fd < 0) > + throw std::runtime_error("failed to open streaming device"); > + } > + ~Stream() > + { > + if (fd >= 0) > + close(fd); > + fd = -1; > + } > + int &fd; > +}; > + Maybe you want to disable copy. Why you started indenting with 2 spaces instead of 4 ? > static int streaming_requested; > static bool quit; > static int streamfd = -1; > @@ -349,17 +366,14 @@ do_capture(const char *streamport, FILE *f_log) > if (!capture) > throw std::runtime_error("cannot find a suitable capture system"); > > - streamfd = open(streamport, O_RDWR); > - if (streamfd < 0) > - // TODO was syslog(LOG_ERR, "Failed to open %s: %s\n", streamport, > strerror(errno)); > - throw std::runtime_error("failed to open streaming device"); > + Stream stream(streamport, streamfd); > > unsigned int frame_count = 0; > while (! quit) { > while (!quit && !streaming_requested) { > if (read_command(1) < 0) { > syslog(LOG_ERR, "FAILED to read command\n"); > - goto done; > + return; > } > } > > @@ -410,19 +424,13 @@ do_capture(const char *streamport, FILE *f_log) > //usleep(1); > if (read_command(0) < 0) { > syslog(LOG_ERR, "FAILED to read command\n"); > - goto done; > + return; > } > if (!streaming_requested) { > capture->Reset(); > } > } > } > - > -done: > - if (streamfd >= 0) { > - close(streamfd); > - streamfd = -1; > - } > } > > #define arg_error(...) syslog(LOG_ERR, ## __VA_ARGS__); Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel