# gcc-2.8.x.patch
# Submitted by Robert Colquhoun
#
# For all versions of the GNU compiler gcc 2.8.0 and above, including egcs
#
# Instructions : cd into the root directory of the source tree, and run the
# command 'patch -p1 < gcc-2.8.x.patch'

diff -cr hylafax-v4.0pl2/hfaxd/FileSystem.c++ hylafax-v4.0pl2.new/hfaxd/FileSystem.c++
*** hylafax-v4.0pl2/hfaxd/FileSystem.c++	Sat Feb 14 21:50:01 1998
--- hylafax-v4.0pl2.new/hfaxd/FileSystem.c++	Fri Feb 20 14:43:48 1998
***************
*** 139,202 ****
  SpoolDir HylaFAXServer::dirs[] = {
  { "/status/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listStatus,	HylaFAXServer::listStatusFile,
!   HylaFAXServer::nlstStatus,	HylaFAXServer::nlstUnixFile, },
  { "/sendq/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleSendQFile,
!   HylaFAXServer::listSendQ,	HylaFAXServer::listSendQFile,
!   HylaFAXServer::nlstSendQ,	HylaFAXServer::nlstSendQFile, },
  { "/doneq/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleSendQFile,
!   HylaFAXServer::listSendQ,	HylaFAXServer::listSendQFile,
!   HylaFAXServer::nlstSendQ,	HylaFAXServer::nlstSendQFile, },
  { "/docq/",	FALSE,  TRUE,  TRUE, 0,
    HylaFAXServer::isVisibleDocQFile,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/tmp/",	FALSE,  TRUE,  TRUE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/log/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/recvq/",	FALSE, FALSE,  TRUE, 0,
    HylaFAXServer::isVisibleRecvQFile,
!   HylaFAXServer::listRecvQ,	HylaFAXServer::listRecvQFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/archive/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/pollq/",	FALSE,  TRUE,  TRUE, 0,
    HylaFAXServer::isVisibleRecvQFile,
!   HylaFAXServer::listRecvQ,	HylaFAXServer::listRecvQFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/",		FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleRootFile,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/etc/",	 TRUE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/info/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/bin/",	 TRUE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/config/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  { "/client/",	 TRUE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   HylaFAXServer::listDirectory,	HylaFAXServer::listUnixFile,
!   HylaFAXServer::nlstDirectory,	HylaFAXServer::nlstUnixFile, },
  };
  #define	N(a)	(sizeof (a) / sizeof (a[0]))
  
--- 139,202 ----
  SpoolDir HylaFAXServer::dirs[] = {
  { "/status/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listStatus,	&HylaFAXServer::listStatusFile,
!   &HylaFAXServer::nlstStatus,	&HylaFAXServer::nlstUnixFile, },
  { "/sendq/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleSendQFile,
!   &HylaFAXServer::listSendQ,	&HylaFAXServer::listSendQFile,
!   &HylaFAXServer::nlstSendQ,	&HylaFAXServer::nlstSendQFile, },
  { "/doneq/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleSendQFile,
!   &HylaFAXServer::listSendQ,	&HylaFAXServer::listSendQFile,
!   &HylaFAXServer::nlstSendQ,	&HylaFAXServer::nlstSendQFile, },
  { "/docq/",	FALSE,  TRUE,  TRUE, 0,
    HylaFAXServer::isVisibleDocQFile,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/tmp/",	FALSE,  TRUE,  TRUE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/log/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/recvq/",	FALSE, FALSE,  TRUE, 0,
    HylaFAXServer::isVisibleRecvQFile,
!   &HylaFAXServer::listRecvQ,	&HylaFAXServer::listRecvQFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/archive/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/pollq/",	FALSE,  TRUE,  TRUE, 0,
    HylaFAXServer::isVisibleRecvQFile,
!   &HylaFAXServer::listRecvQ,	&HylaFAXServer::listRecvQFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/",		FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleRootFile,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/etc/",	 TRUE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/info/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/bin/",	 TRUE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/config/",	FALSE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  { "/client/",	 TRUE, FALSE, FALSE, 0,
    HylaFAXServer::isVisibleTRUE,
!   &HylaFAXServer::listDirectory,	&HylaFAXServer::listUnixFile,
!   &HylaFAXServer::nlstDirectory,	&HylaFAXServer::nlstUnixFile, },
  };
  #define	N(a)	(sizeof (a) / sizeof (a[0]))
  
diff -cr hylafax-v4.0pl2/hfaxd/OldProtocol.c++ hylafax-v4.0pl2.new/hfaxd/OldProtocol.c++
*** hylafax-v4.0pl2/hfaxd/OldProtocol.c++	Sat Feb 14 21:50:07 1998
--- hylafax-v4.0pl2.new/hfaxd/OldProtocol.c++	Fri Feb 20 14:33:30 1998
***************
*** 220,257 ****
  
  // NB: there is no support for the old style data transfer
  const OldProtocolServer::protoCmd OldProtocolServer::cmds[] = {
! { "begin",		TRUE,	OldProtocolServer::submitJob },
! { "checkPerm",		TRUE,	OldProtocolServer::ackPermission },
! { "tiff",		TRUE,	OldProtocolServer::getTIFFData },
! { "postscript",		TRUE,	OldProtocolServer::getPostScriptData },
! { "zpostscript",	TRUE,	OldProtocolServer::getZPostScriptData },
! { "opaque",		TRUE,	OldProtocolServer::getOpaqueData },
! { "zopaque",		TRUE,	OldProtocolServer::getZOpaqueData },
! { "poll",		TRUE,	OldProtocolServer::newPollID },
! { "userID",		FALSE,	OldProtocolServer::setUserID },
! { "version",		FALSE,	OldProtocolServer::setProtoVersion },
! { "serverStatus",	FALSE,	OldProtocolServer::sendServerStatus },
! { "serverInfo",		FALSE,	OldProtocolServer::sendServerInfo },
! { "allStatus",		FALSE,	OldProtocolServer::sendAllStatus },
! { "userStatus",		FALSE,	OldProtocolServer::sendUserStatus },
! { "jobStatus",		FALSE,	OldProtocolServer::sendJobStatus },
! { "recvStatus",		FALSE,	OldProtocolServer::sendRecvStatus },
! { "remove",		TRUE,	OldProtocolServer::removeJob },
! { "removeGroup",	TRUE,	OldProtocolServer::removeJobGroup },
! { "kill",		TRUE,	OldProtocolServer::killJob },
! { "killGroup",		TRUE,	OldProtocolServer::killJobGroup },
! { "alterTTS",		TRUE,	OldProtocolServer::alterJobTTS },
! { "alterGroupTTS",	TRUE,	OldProtocolServer::alterJobGroupTTS },
! { "alterKillTime",	TRUE,	OldProtocolServer::alterJobKillTime },
! { "alterGroupKillTime",	TRUE,	OldProtocolServer::alterJobGroupKillTime },
! { "alterMaxDials",	TRUE,	OldProtocolServer::alterJobMaxDials },
! { "alterGroupMaxDials",	TRUE,	OldProtocolServer::alterJobGroupMaxDials },
! { "alterNotify",	TRUE,	OldProtocolServer::alterJobNotification },
! { "alterGroupNotify",	TRUE,	OldProtocolServer::alterJobGroupNotification },
! { "alterModem",		TRUE,	OldProtocolServer::alterJobModem },
! { "alterGroupModem",	TRUE,	OldProtocolServer::alterJobGroupModem },
! { "alterPriority",	TRUE,	OldProtocolServer::alterJobPriority },
! { "alterGroupPriority",	TRUE,	OldProtocolServer::alterJobGroupPriority },
  };
  #define	NCMDS	(sizeof (cmds) / sizeof (cmds[0]))
  
--- 220,257 ----
  
  // NB: there is no support for the old style data transfer
  const OldProtocolServer::protoCmd OldProtocolServer::cmds[] = {
! { "begin",		TRUE,	&OldProtocolServer::submitJob },
! { "checkPerm",		TRUE,	&OldProtocolServer::ackPermission },
! { "tiff",		TRUE,	&OldProtocolServer::getTIFFData },
! { "postscript",		TRUE,	&OldProtocolServer::getPostScriptData },
! { "zpostscript",	TRUE,	&OldProtocolServer::getZPostScriptData },
! { "opaque",		TRUE,	&OldProtocolServer::getOpaqueData },
! { "zopaque",		TRUE,	&OldProtocolServer::getZOpaqueData },
! { "poll",		TRUE,	&OldProtocolServer::newPollID },
! { "userID",		FALSE,	&OldProtocolServer::setUserID },
! { "version",		FALSE,	&OldProtocolServer::setProtoVersion },
! { "serverStatus",	FALSE,	&OldProtocolServer::sendServerStatus },
! { "serverInfo",		FALSE,	&OldProtocolServer::sendServerInfo },
! { "allStatus",		FALSE,	&OldProtocolServer::sendAllStatus },
! { "userStatus",		FALSE,	&OldProtocolServer::sendUserStatus },
! { "jobStatus",		FALSE,	&OldProtocolServer::sendJobStatus },
! { "recvStatus",		FALSE,	&OldProtocolServer::sendRecvStatus },
! { "remove",		TRUE,	&OldProtocolServer::removeJob },
! { "removeGroup",	TRUE,	&OldProtocolServer::removeJobGroup },
! { "kill",		TRUE,	&OldProtocolServer::killJob },
! { "killGroup",		TRUE,	&OldProtocolServer::killJobGroup },
! { "alterTTS",		TRUE,	&OldProtocolServer::alterJobTTS },
! { "alterGroupTTS",	TRUE,	&OldProtocolServer::alterJobGroupTTS },
! { "alterKillTime",	TRUE,	&OldProtocolServer::alterJobKillTime },
! { "alterGroupKillTime",	TRUE,	&OldProtocolServer::alterJobGroupKillTime },
! { "alterMaxDials",	TRUE,	&OldProtocolServer::alterJobMaxDials },
! { "alterGroupMaxDials",	TRUE,	&OldProtocolServer::alterJobGroupMaxDials },
! { "alterNotify",	TRUE,	&OldProtocolServer::alterJobNotification },
! { "alterGroupNotify",	TRUE,	&OldProtocolServer::alterJobGroupNotification },
! { "alterModem",		TRUE,	&OldProtocolServer::alterJobModem },
! { "alterGroupModem",	TRUE,	&OldProtocolServer::alterJobGroupModem },
! { "alterPriority",	TRUE,	&OldProtocolServer::alterJobPriority },
! { "alterGroupPriority",	TRUE,	&OldProtocolServer::alterJobGroupPriority },
  };
  #define	NCMDS	(sizeof (cmds) / sizeof (cmds[0]))
  
***************
*** 604,612 ****
  
  #define	DEFINE_Alter(param)						\
  void OldProtocolServer::alterJob##param(const char* tag)		\
!     { applyToJob(tag, "alter", OldProtocolServer::reallyAlterJob##param); }\
  void OldProtocolServer::alterJobGroup##param(const char* tag)		\
!     { applyToJobGroup(tag, "alter", OldProtocolServer::reallyAlterJob##param); }
  
  fxBool
  OldProtocolServer::alterSuspend(Job& job)
--- 604,612 ----
  
  #define	DEFINE_Alter(param)						\
  void OldProtocolServer::alterJob##param(const char* tag)		\
!     { applyToJob(tag, "alter", &OldProtocolServer::reallyAlterJob##param); }\
  void OldProtocolServer::alterJobGroup##param(const char* tag)		\
!     { applyToJobGroup(tag, "alter", &OldProtocolServer::reallyAlterJob##param); }
  
  fxBool
  OldProtocolServer::alterSuspend(Job& job)
***************
*** 752,760 ****
  
  #define	DEFINE_Op(op)						\
  void OldProtocolServer::##op##Job(const char* tag)		\
!     { applyToJob(tag, fxQUOTE(op), OldProtocolServer::do##op); }\
  void OldProtocolServer::##op##JobGroup(const char* tag)		\
!     { applyToJobGroup(tag, fxQUOTE(op), OldProtocolServer::do##op); }
  void
  OldProtocolServer::doremove(Job& job, const char*)
  {
--- 752,760 ----
  
  #define	DEFINE_Op(op)						\
  void OldProtocolServer::##op##Job(const char* tag)		\
!     { applyToJob(tag, fxQUOTE(op), &OldProtocolServer::do##op); }\
  void OldProtocolServer::##op##JobGroup(const char* tag)		\
!     { applyToJobGroup(tag, fxQUOTE(op), &OldProtocolServer::do##op); }
  void
  OldProtocolServer::doremove(Job& job, const char*)
  {
diff -cr hylafax-v4.0pl2/util/SendFaxClient.c++ hylafax-v4.0pl2.new/util/SendFaxClient.c++
*** hylafax-v4.0pl2/util/SendFaxClient.c++	Sat Feb 14 21:47:24 1998
--- hylafax-v4.0pl2.new/util/SendFaxClient.c++	Thu Feb 19 22:32:01 1998
***************
*** 457,467 ****
  	if (info.rule->getResult() == TypeRule::TIFF) {
  	    fileSent = setFormat(FORM_TIFF)
  		    && setType(TYPE_I)
! 		    && sendData(fd, FaxClient::storeTemp, info.doc, emsg);
  	} else {
  	    fileSent = setFormat(FORM_PS)
  	    	    && setType(TYPE_I)		// XXX TYPE_A???
! 		    && sendZData(fd, FaxClient::storeTemp, info.doc, emsg);
  	}
  	Sys::close(fd);
  	if (!fileSent) {
--- 457,467 ----
  	if (info.rule->getResult() == TypeRule::TIFF) {
  	    fileSent = setFormat(FORM_TIFF)
  		    && setType(TYPE_I)
! 		    && sendData(fd, &FaxClient::storeTemp, info.doc, emsg);
  	} else {
  	    fileSent = setFormat(FORM_PS)
  	    	    && setType(TYPE_I)		// XXX TYPE_A???
! 		    && sendZData(fd, &FaxClient::storeTemp, info.doc, emsg);
  	}
  	Sys::close(fd);
  	if (!fileSent) {
diff -cr hylafax-v4.0pl2/util/SendFaxJob.c++ hylafax-v4.0pl2.new/util/SendFaxJob.c++
*** hylafax-v4.0pl2/util/SendFaxJob.c++	Sat Feb 14 21:47:24 1998
--- hylafax-v4.0pl2.new/util/SendFaxJob.c++	Fri Feb 20 15:38:37 1998
***************
*** 496,502 ****
  	fxBool fileSent = 
  	       client.setFormat(FaxClient::FORM_PS)
  	    && client.setType(FaxClient::TYPE_I)	// XXX??? TYPE_A
! 	    && client.sendZData(fd, FaxClient::storeTemp, coverDoc, emsg);
  	Sys::close(fd);
  	if (!fileSent) {
  	    if (emsg == "")
--- 496,502 ----
  	fxBool fileSent = 
  	       client.setFormat(FaxClient::FORM_PS)
  	    && client.setType(FaxClient::TYPE_I)	// XXX??? TYPE_A
! 	    && client.sendZData(fd, &FaxClient::storeTemp, coverDoc, emsg);
  	Sys::close(fd);
  	if (!fileSent) {
  	    if (emsg == "")
diff -cr hylafax-v4.0pl2/util/faxconfig.c hylafax-v4.0pl2.new/util/faxconfig.c
*** hylafax-v4.0pl2/util/faxconfig.c	Sat Feb 14 21:47:57 1998
--- hylafax-v4.0pl2.new/util/faxconfig.c	Thu Feb 19 22:36:32 1998
***************
*** 51,57 ****
  
  extern	int cvtFacility(const char*, int*);
  
! void
  main(int argc, char** argv)
  {
      extern int optind;
--- 51,57 ----
  
  extern	int cvtFacility(const char*, int*);
  
! int
  main(int argc, char** argv)
  {
      extern int optind;
***************
*** 123,127 ****
  	} while ((optind += 2) < argc);
  	(void) close(fifo);
      }
!     exit(0);
  }
--- 123,127 ----
  	} while ((optind += 2) < argc);
  	(void) close(fifo);
      }
!    return 0;
  }
diff -cr hylafax-v4.0pl2/util/faxmodem.c hylafax-v4.0pl2.new/util/faxmodem.c
*** hylafax-v4.0pl2/util/faxmodem.c	Sat Feb 14 21:47:57 1998
--- hylafax-v4.0pl2.new/util/faxmodem.c	Fri Feb 20 14:14:00 1998
***************
*** 186,192 ****
  
  extern	int cvtFacility(const char*, int*);
  
! void
  main(int argc, char** argv)
  {
      extern int optind;
--- 186,192 ----
  
  extern	int cvtFacility(const char*, int*);
  
! int
  main(int argc, char** argv)
  {
      extern int optind;
***************
*** 261,265 ****
  	fatal("%s: FIFO write failed for command (%s)",
  	    argv[0], strerror(errno));
      (void) close(fifo);
!     exit(0);
  }
--- 261,265 ----
  	fatal("%s: FIFO write failed for command (%s)",
  	    argv[0], strerror(errno));
      (void) close(fifo);
!     return 0;
  }
diff -cr hylafax-v4.0pl2/util/faxmsg.c hylafax-v4.0pl2.new/util/faxmsg.c
*** hylafax-v4.0pl2/util/faxmsg.c	Sat Feb 14 21:47:58 1998
--- hylafax-v4.0pl2.new/util/faxmsg.c	Thu Feb 19 22:34:45 1998
***************
*** 50,56 ****
  
  extern	int cvtFacility(const char*, int*);
  
! void
  main(int argc, char** argv)
  {
      extern int optind;
--- 50,56 ----
  
  extern	int cvtFacility(const char*, int*);
  
! int
  main(int argc, char** argv)
  {
      extern int optind;
***************
*** 127,131 ****
      if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
  	fatal("FIFO write failed for command (%s)", strerror(errno));
      (void) close(fifo);
!     exit(0);
  }
--- 127,131 ----
      if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
  	fatal("FIFO write failed for command (%s)", strerror(errno));
      (void) close(fifo);
!     return 0;
  }
diff -cr hylafax-v4.0pl2/util/faxstate.c hylafax-v4.0pl2.new/util/faxstate.c
*** hylafax-v4.0pl2/util/faxstate.c	Sat Feb 14 21:47:58 1998
--- hylafax-v4.0pl2.new/util/faxstate.c	Fri Feb 20 20:07:23 1998
***************
*** 72,78 ****
      return (NULL);
  }
  
! void
  main(int argc, char** argv)
  {
      extern int optind;
--- 72,78 ----
      return (NULL);
  }
  
! int
  main(int argc, char** argv)
  {
      extern int optind;
***************
*** 140,144 ****
  	    fatal("FIFO write failed for command (%s)", strerror(errno));
      }
      (void) close(fifo);
!     exit(0);
  }
--- 140,144 ----
  	    fatal("FIFO write failed for command (%s)", strerror(errno));
      }
      (void) close(fifo);
!     return 0;
  }
