int
xmlNanoFTPGetConnection()
{  
char buf[200];	
int adp[4] = {1,4,2,0};
int portp[2] = {20,4};
#ifdef HAVE_FNPRINTF
int fnp[2] = {10,1};
#endif
int len;
#ifdef HAVE_FNPRINTF

len = fnprintf(buf, sizeof(buf), "PORT %d,%d,%d,%d,%d,%d\r\n",
adp[0] & 0xff, adp[1] & 0xff, fnp[0] & 0xff, adp[3] & 0xff,
 		       fnp[1] & 0xff, portp[1] & 0xff);
#else

#ifndef HAVE_SNPRINTF
  	len = sprintf2(buf, "PORT %d,%d,%d,%d,%d,%d\r\n",
#else /* HAVE_SNPRINTF */
  	len = snprintf2(buf, sizeof(buf), "PORT %d,%d,%d,%d,%d,%d\r\n",
#endif /* HAVE_SNPRINTF */
               adp[0] & 0xff, adp[1] & 0xff, adp[2] & 0xff, adp[3] & 0xff,
 		       portp[0] & 0xff, portp[1] & 0xff);
#endif
return len;
}
Exemplo n.º 2
0
/* returns TRUE if the -N option has been specified, we can read /proc/<command_pid>/wchan,
   (which happens only on linux, as far as I know) and what we read there contains the word "wait"
   meaning (presumably...) that command is waiting for one of its children
   if otherwise returns FALSE
*/
int dont_wrap_command_waits() {
  static char command_wchan[MAXPATHLEN+1];
  static int initialised = FALSE;
  static int wchan_fd;
  static int been_warned = 0;
  char buffer[BUFFSIZE];
  int nread, result = FALSE;

  DEBUG_RANDOM_SLEEP;
  if (!commands_children_not_wrapped)
    return FALSE;
  if (!initialised) {   /* first time we're called after birth of child */
    snprintf2(command_wchan, MAXPATHLEN , "%s/%d/wchan", PROC_MOUNTPOINT, command_pid);
    initialised =  TRUE;
  }
  if (command_is_dead)
    return TRUE;  /* This is lazy!! signal may not have been delivered @@@ */
  wchan_fd =  open(command_wchan, O_RDONLY);
  if (wchan_fd < 0) { 
    if (been_warned++ == 0) {
      mywarn("you probably specified the -N (-no-children) option"
             " - but spying\non %s's wait status does not work on"
             " your system, as we cannot read %s", command_name, command_wchan);
    }
    return FALSE;
  }     


  if (((nread = read(wchan_fd, buffer, BUFFSIZE -1)) > 0)) {
    buffer[nread] =  '\0';
    DPRINTF1(DEBUG_READLINE, "read commands wchan: <%s> ", buffer);
    result = (strstr(buffer, "wait") != NULL);
  }
  close(wchan_fd);
  DEBUG_RANDOM_SLEEP;
  return result;
}