size_t last;
char suffix;
gboolean do_output=FALSE;
- gchar* section_header;
+ gchar* section_header="";
gchar** addr_port;
if(argc==1) {
addr_port=g_strsplit(optarg, ":", 2);
if(addr_port[1]) {
serve->port=strtol(addr_port[1], NULL, 0);
- serve->host=g_strdup(addr_port[0]);
+ serve->listenaddr=g_strdup(addr_port[0]);
} else {
- serve->host=g_strdup("0.0.0.0");
+ serve->listenaddr=g_strdup("0.0.0.0");
serve->port=strtol(addr_port[0], NULL, 0);
}
g_strfreev(addr_port);
lp[8].target=lp[9].target=lp[10].target=
lp[11].target=lp[12].target=
lp[13].target=&(s.flags);
- lp[14].target=&(s.listnaddr);
+ lp[14].target=&(s.listenaddr);
/* After the [generic] group, start parsing exports */
if(i==1) {
virtstyle=NULL;
/* Don't append values for the [generic] group */
if(i>0) {
+ if(!s.listenaddr) {
+ s.listenaddr = g_strdup("0.0.0.0");
+ }
g_array_append_val(retval, s);
}
#ifndef WITH_SDP
unlink(pidfname);
}
- exit(0);
+ exit(EXIT_SUCCESS);
}
/**
* @return 0 on success, nonzero on failure
**/
int rawexpwrite_fully(off_t a, char *buf, size_t len, CLIENT *client) {
- ssize_t ret;
+ ssize_t ret=0;
while(len > 0 && (ret=rawexpwrite(a, buf, len, client)) > 0 ) {
a += ret;
* @return 0 on success, nonzero on failure
**/
int rawexpread_fully(off_t a, char *buf, size_t len, CLIENT *client) {
- ssize_t ret;
+ ssize_t ret=0;
while(len > 0 && (ret=rawexpread(a, buf, len, client)) > 0 ) {
a += ret;
/**
* Loop through the available servers, and serve them. Never returns.
**/
-int serveloop(GArray* servers) G_GNUC_NORETURN {
+int serveloop(GArray* servers) {
struct sockaddr_in addrin;
socklen_t addrinlen=sizeof(addrin);
SERVER *serve;
}
#endif
addrin.sin_port = htons(serve->port);
- if(!inet_aton(serve->listenaddr, &(addrin.sin_addr.s_addr)))
+ if(!inet_aton(serve->listenaddr, &(addrin.sin_addr)))
err("could not parse listen address");
if (bind(serve->socket, (struct sockaddr *) &addrin, addrinlen) < 0)
err("bind: %m");
}
if(!*pidftemplate) {
if(serve) {
- strncpy(pidftemplate, "/var/run/server.%d.pid", 255);
+ strncpy(pidftemplate, "/var/run/nbd-server.%d.pid", 255);
} else {
- strncpy(pidftemplate, "/var/run/server.pid", 255);
+ strncpy(pidftemplate, "/var/run/nbd-server.pid", 255);
}
}
snprintf(pidfname, 255, pidftemplate, serve ? serve->port : 0);
* The stuff above daemonize() isn't.
*/
-void serve_err(SERVER* serve, const char* msg) G_GNUC_NORETURN {
+void serve_err(SERVER* serve, const char* msg) G_GNUC_NORETURN;
+
+void serve_err(SERVER* serve, const char* msg) {
g_message("Export of %s on port %d failed:", serve->exportname,
serve->port);
err(msg);
exit(EXIT_FAILURE);
}
if(setuid(pw->pw_uid)<0) {
- g_message(LOG_DEBUG, "Could not set UID: %s", strerror(errno));
+ g_message("Could not set UID: %s", strerror(errno));
exit(EXIT_FAILURE);
}
}
if (sizeof( struct nbd_request )!=28) {
fprintf(stderr,"Bad size of structure. Alignment problems?\n");
- exit(-1) ;
+ exit(EXIT_FAILURE) ;
}
memset(pidftemplate, '\0', 256);