int modifyMovie(sMovies movies[], int length) { int modifyId = getElementID(movies, "Ingrese el id de la pelicula que desea modificar\n", length); int modifyIdDirector; int returnModify = -1; int option; if(movies[modifyId].isEmpty == 0 && movies != NULL && length>0) { printf("Elija la opcion que desea modificar\n"); printf("1. Nombre de pelicula \n 2. Duracion \n 3. Puntaje \n 4. Genero \n 5. Descripcion \n 6. Link de la imagen \n"); listMovies(movies, modifyId, length); fflush(stdin); scanf("%d", &option); switch(option) { case 1: getStringw(movies[modifyId].movieTitle, "Ingrese el nombre de la pelicula a modificar\n", "Error el dato ingresado no posee el formato permitido o la cantidad minima de caracteres\n",1,100); break; case 2: getIntw(movies[modifyId].mDuration, "Ingrese la duracion de la pelicula a modificar \n", "Error la duracion ingresada no es correcta o esta fuera de los parametros\n", 1, 1000); break; case 3: getIntw(movies[modifyId].mScore, "Ingrese el puntaje de la pelicula\n", "Dato invalido\n", 1, 100); break; case 4: getStringw(movies[modifyId].genre, "Ingrese el genero de la pelicula\n", "Dato invalido \n", 1, 25); break; case 5: getStringw(movies[modifyId].mDescription, "Ingrese un breve descripcion de la pelicula (Hasta 100 caracteres) \n", "Dato invalido \n", 1, 100); break; case 6: getStringw(movies[modifyId].imageLink, "Ingrese un link de una imagen \n", "Dato Invalido", 1, 100); break; default: printf("Ingrese una opcion valida"); } returnModify = 0; } else { printf("El listado esta lleno o no hay ninguna pelicula cargada con ese id\n"); } return returnModify; }
int main(int argc, char* argv[]) { int sfd; struct addrinfo hints, *result, *rp; int rv; char s[INET6_ADDRSTRLEN]; int isClientLocadora = 0; char response[MAXDATASIZE]; int ativo; if (argc <= 2) { fprintf(stderr,"usage: client hostname usertype\n"); exit(1); } if (argc == 3) { if ((strcmp(argv[2],"locadora") == 0)) { isClientLocadora = 1; } } memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if ((getaddrinfo(argv[1], PORT, &hints, &result)) != 0) { perror("Erro getaddrinfo\n"); exit(0); } for (rp = result; rp != NULL; rp = rp->ai_next) { sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); if (sfd == -1){ perror("client: socket"); continue; } if (connect(sfd, rp->ai_addr, rp->ai_addrlen) == -1) { close(sfd); perror("client: connect"); continue; } break; } if (rp == NULL) { printf("Could not bind\n"); exit(0); } freeaddrinfo(result); printMenu(isClientLocadora); int connected = 1; char option[1]; char buffer[20]; char id[10]; while (connected) { scanf("%s", &option); buffer[0] = (option[0]); buffer[1] = '\0'; switch ( buffer[0] ) { case '0' : send(sfd, buffer, MAXDATASIZE, 0); connected = 0; break; case '1' : send(sfd, buffer, 12, 0); if (recv(sfd, response, MAXDATASIZE, 0) == -1) { perror("recv"); exit(1); } listMovies(response); break; case '2' : strcat(buffer, "|"); printf("Digite o genero: "); scanf("%s", id); strcat(buffer,id); send(sfd, buffer, 12, 0); if (recv(sfd, response, MAXDATASIZE, 0) == -1) { perror("recv"); exit(1); } listMoviesGenre(response); break; case '3' : printf("Digite o id do filme: "); scanf("%s", id); strcat(buffer,id); send(sfd, buffer, 12, 0); if (recv(sfd, response, MAXDATASIZE, 0) == -1) { perror("recv"); exit(1); } showMovieSynopsis(response); break; case '4' : printf("Digite o id do filme: "); scanf("%s", id); strcat(buffer,id); send(sfd, buffer, 12, 0); if (recv(sfd, response, MAXDATASIZE, 0) == -1) { perror("recv"); exit(1); } showMovieSynopsis(response); break; case '5' : printf("Digite o id do filme: "); scanf("%s", id); strcat(buffer,id); send(sfd, buffer, 12, 0); if (recv(sfd, response, MAXDATASIZE, 0) == -1) { perror("recv"); exit(1); } listAllMovies(response); break; case '6' : send(sfd, buffer, 12, 0); if (recv(sfd, response, MAXDATASIZE, 0) == -1) { perror("recv"); exit(1); } listAllMovies(response); break; case '7' : printf("Digite o id do filme: "); scanf("%s", id); strcat(buffer,"|"); strcat(buffer,id); strcat(buffer,"|"); printf("Digite a nova quantidade: "); scanf("%s", id); strcat(buffer,id); strcat(buffer,"|"); char str[1]; sprintf(str, "%d", isClientLocadora); strcat(buffer,str); send(sfd, buffer, 20, 0); break; case 'p' : printMenu(isClientLocadora); break; default: printf("Opção do cliente inválida\n"); break; } } close(sfd); return 0; }