Exemple #1
0
int vss_load( char *name, VSS_INFO *vss_info )
{
  FILE *stream ;
  int  err = VSSERR_NOERROR ;
  char s[200] ;

  num_total = 0 ;
  memset( vss_info, 0, sizeof(VSS_INFO) ) ;
  stream = fopen( name, "rb" ) ;
  if ( stream != NULL )
  {
    while ( !feof( stream ) && !err )
    {
      vss_info->line_err++ ;
      if ( fgets( s, 200, stream ) != NULL )
        err = vss_parse( s, vss_info ) ;
    }
    fclose( stream ) ;
  }
  else
    err = VSSERR_FILE ;

  vss_info->err = err ;
  
  return( err ) ;
}
Exemple #2
0
int
VSS_resolver(const char *addr, const char *def_port, vss_resolved_f *func,
    void *priv, const char **err)
{
	struct addrinfo hints, *res0, *res;
	struct suckaddr *vsa;
	char *h;
	char *adp, *hop;
	int ret;

	*err = NULL;
	h = strdup(addr);
	AN(h);
	*err = vss_parse(h, &hop, &adp);
	if (*err != NULL) {
		free(h);
		return (-1);
	}
	if (adp != NULL)
		def_port = adp;

	memset(&hints, 0, sizeof hints);
	hints.ai_socktype = SOCK_STREAM;
	hints.ai_flags = AI_PASSIVE;
	ret = getaddrinfo(hop, def_port, &hints, &res0);
	free(h);
	if (ret != 0) {
		*err = gai_strerror(ret);
		return (-1);
	}
	for (res = res0; res != NULL; res = res->ai_next) {
		vsa = VSA_Malloc(res->ai_addr, res->ai_addrlen);
		if (vsa != NULL) {
			ret = func(priv, vsa);
			free(vsa);
			if (ret)
				break;
		}
	}
	freeaddrinfo(res0);
	return (ret);
}