Base
This commit is contained in:
parent
25b5845ada
commit
f065c60ff7
Binary file not shown.
|
@ -0,0 +1,27 @@
|
|||
# Usage:
|
||||
# make # compile all binary
|
||||
# make clean # remove ALL binaries and objects
|
||||
|
||||
.PHONY = all clean
|
||||
|
||||
# compiler to use
|
||||
CC = gcc
|
||||
|
||||
LINKERFLAG = -lm
|
||||
|
||||
SRCS := $(wildcard *.c)
|
||||
BINS := $(SRCS:%.c=%)
|
||||
|
||||
all: ${BINS}
|
||||
|
||||
%: %.o
|
||||
@echo "Checking.."
|
||||
${CC} ${LINKERFLAG} $< -o $@
|
||||
|
||||
%.o: %.c
|
||||
@echo "Creating object.."
|
||||
${CC} -c $<
|
||||
|
||||
clean:
|
||||
@echo "Cleaning up..."
|
||||
rm -rvf *.o ${BINS}
|
|
@ -0,0 +1,48 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <time.h>
|
||||
#include <ncurses.h>
|
||||
//declaraao de funcoes
|
||||
#include "dec.h"
|
||||
//estructuras e outras coisas uteis
|
||||
#include "util.h"
|
||||
|
||||
int main(int argc, char *argv[]){
|
||||
|
||||
int fd_servidor;
|
||||
/* VERIFICAR SE EXISTE "CP" DO SERVIDOR (access) -- APENAS UM!!!*/
|
||||
if(access("CPservidor", F_OK)==0){
|
||||
printf("[SERVIDOR] Ja existe um servidor!\n");
|
||||
exit(1);
|
||||
}
|
||||
/* CRIAR "CP" DO SERVIDOR - MINHA (mkfifo) */
|
||||
mkfifo("CPservidor", 0600);
|
||||
/* ABRIR "CP" DO SERVIDOR - MINHA (open - O_RDONLY) */
|
||||
fd_servidor = open("CPservidor", O_RDWR);
|
||||
|
||||
printf("[SERVER] Servidor Iniciado!\n");
|
||||
|
||||
/* Fazer coisas aqui! */
|
||||
do{
|
||||
|
||||
}while(true);
|
||||
|
||||
printf("[SERVIDOR] SERVIDOR DESLIGADO\n");
|
||||
|
||||
/* FECHAR "CP" DO SERVIDOR - MINHA (close) */
|
||||
close(fd_servidor);
|
||||
/* REMOVER "CP" DO SERVIDOR- MINHA (UNLINK) */
|
||||
unlink("CPservidor");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
int obtem_rand(int min, int max){
|
||||
int random;
|
||||
random = min + (rand() % (max - min + 1));
|
||||
return random;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
#define TAM_TITULO 128
|
||||
#define TAM_CORPO 1001
|
||||
#define TAM_NOME 100
|
||||
|
||||
typedef struct msgdef
|
||||
{
|
||||
int id;
|
||||
char titulo[TAM_TITULO];
|
||||
char corpo[TAM_CORPO];
|
||||
int duracao;
|
||||
int time_added;
|
||||
|
||||
struct topicdef * topico;
|
||||
struct msgdef * prox;
|
||||
}msg;
|
||||
|
||||
typedef struct topicdef
|
||||
{
|
||||
int id;
|
||||
char nome[TAM_NOME];
|
||||
struct msgdef * mensg;
|
||||
struct topicdef * prox;
|
||||
}topic;
|
|
@ -0,0 +1,87 @@
|
|||
/* verificador.c */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
|
||||
|
||||
/* maximum word def */
|
||||
#define MAXNW 50
|
||||
/* maximum word length including \0 */
|
||||
#define MAXWL 19
|
||||
|
||||
/* This function does what its name tells */
|
||||
void exitNow(int s) {
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/* reads forbidden word list from file */
|
||||
/* assume all words have at most 19 chars */
|
||||
/* file must not have more than one word per line */
|
||||
/* return number of word read */
|
||||
int readWordFile(FILE * f, char wdef[][MAXWL], int maxw) {
|
||||
int numw = 0;
|
||||
while (!feof(f) && numw < maxw)
|
||||
if (fscanf(f,"%s", wdef[numw])>0)
|
||||
numw++;
|
||||
return numw;
|
||||
}
|
||||
|
||||
/* checks word agains forbidden word dictionary */
|
||||
/* word must match exactly - partials do not count */
|
||||
/* returns 0 or 1*/
|
||||
int checkWord(char * word, char wdef[][MAXWL], int maxw) {
|
||||
int i;
|
||||
for (i=0; i<maxw;i++)
|
||||
if (!strcmp(word,wdef[i]))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* The main fuction. It's kind of useful to exist */
|
||||
int main(int argc, char** argv) {
|
||||
char forbwords[MAXNW][MAXWL];
|
||||
char word[MAXWL];
|
||||
int numw; /* number of words */
|
||||
int numhits; /* hits in this message */
|
||||
int justprinted;
|
||||
FILE * wordsf;
|
||||
if (argc<2) {
|
||||
printf("ERROR-1\n");
|
||||
return 1;
|
||||
}
|
||||
wordsf = fopen(argv[1], "r");
|
||||
if (wordsf == NULL) {
|
||||
printf("ERROR-2\n");
|
||||
return 2;
|
||||
}
|
||||
numw = readWordFile(wordsf, forbwords, MAXNW);
|
||||
fclose(wordsf);
|
||||
if (numw < 1) {
|
||||
printf("ERROR-3\n");
|
||||
return 3;
|
||||
}
|
||||
signal(SIGUSR2, exitNow);
|
||||
/* preps done. start text processing */
|
||||
numhits = 0;
|
||||
justprinted = 0;
|
||||
while (!feof(stdin)) {
|
||||
if (scanf("%s", word)<0)
|
||||
continue;
|
||||
if (!strcmp(word,"##MSGEND##")) {
|
||||
printf("%d\n",numhits);
|
||||
fflush(stdout);
|
||||
numhits = 0; /* restart counting */
|
||||
justprinted = 1;
|
||||
}
|
||||
else {
|
||||
numhits += checkWord(word, forbwords, numw);
|
||||
justprinted = 0;
|
||||
}
|
||||
}
|
||||
if (!justprinted)
|
||||
printf("%d\n",numhits);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue