/*
*-----------------------------------------------------------------
*
* PROTOTIPO: int dupDf ( char *, int, int )
*
* DESCRIPCION: realiza la redirección duplicando los descriptores
* de ficheros
*
*-----------------------------------------------------------------
*/
int dupDf ( char *nombre , int mascara , int dfStd )
{
int df;
df = open (nombre, mascara, PERMISO_DEFECTO);
if (df == -1)
{
mandaPadre(SIGERRREDIREC);
return (FALSE);
}
dup2 (df, dfStd); /* copia sobre el descriptor de fichero estándar */
close (df); /* cierra el original */
return (TRUE);
} /* fin de dupDf */
/*
*--------------------------------------------------------
*
* PROTOTIPO: int direccionInternet ( char* )
*
* DESCRIPCION: obtiene la dirección Internet del host
*
*--------------------------------------------------------
*/
int direccionInternet ( char *nombre )
{
return (strpbrk (nombre, "01234567890") != NULL);
}
/*
*---------------------------------------------------------------
*
* PROTOTIPO: void obtenerHostyPuerto ( char* , char*, int* )
*
* DESCRIPCION: almacena en "nombre" y "puerto" el nombre del
* nodo y su puerto de comunicaciones respectivamente
* a partir de la variable "cad"
*
*--------------------------------------------------------------
*/
void obtenerHostyPuerto ( char *cad, char *nombre, int* puerto)
{
char *tok1, *tok2; /* decodifica Host y Puerto de una */
/* entrada cadena tipo NOMBRE.PUERTO */
tok1 = strtok (cad, ".");
tok2 = strtok (NULL,".");
if (tok2 == NULL ) /* nombre perdido y toma por defecto el local */
{
strcpy (nombre, "");
sscanf (tok1, "%d", puerto);
}
else
{
strcpy (nombre, tok1);
sscanf (tok2, "%d", puerto);
}
}
/*
*--------------------------------------------------------
*
* PROTOTIPO: int cliente ( char* , int )
*
* DESCRIPCION: implementa el manejo del socket cliente
*
*--------------------------------------------------------
*/