Exemplo n.º 1
0
Arquivo: br.c Projeto: codecor/br
int main (int argc,char *argv[]){

    // all args are meant to be brought
    if (argc!=1) {
        char file_name[4096];
        char file_addr[4096];
        char wrk_dir[4096];
        int i;

        // get file path
        if (getWorkingDir(&wrk_dir)==0) {
            if (DEBUG) printf ("[debug] wrk_dir = %s\n",wrk_dir);
        }

        if (DEBUG) printf("[debug] sizeof(argc)=%d\n",sizeof(argc));
        for (i = 1; i < argc; i++) {
            strcpy(file_name,argv[i]);
            if (DEBUG) printf("[debug] file_name = %s\n",file_name);

            fileExist(file_name);
            sprintf(file_addr,strcat(strcat(wrk_dir,"/"),file_name));
            if (DEBUG) printf("[debug] file_addr=%s\n",file_addr);

            // add a comma if more than 1 exists
            if (argc-i!=0)
                storePath(strcat(file_addr,","));
            else
                storePath(file_addr);
        }

        return 0;

    } else {
        // if none, drop
        // check for file waiting to be dropped
        if (bring_it()!=0){
            printf("No file to be brought.\n");
        }
    }

    if (DEBUG) printf("[debug] returning\n");

    return 0;
}
Exemplo n.º 2
0
int main(int argc, char *argv[]){
	if(argc == 1){
		printf("Very Few Arguments\n");
		printf("File Name Missing\n");
		exit(1);
	}

	list *l = (list *)malloc(sizeof(list));
	init(l);
	path *paths;
	FILE *fp;
	int i, j, flag = 0, SIZE = 1024, USIZE = 1024, uCount, uFlag = 0, uFlag_1 = 0, uTmp;
	char zipFileName[32] = "", *buffer, *binary, *output, *huffList, character, dflag, cnt, *saket;
	for(i = 0; argv[1][i] != '\0'; i++){
		zipFileName[i] = argv[1][i];
	}
	zipFileName[i++] = '.';
	zipFileName[i++] = 's';
	zipFileName[i++] = 'a';
	zipFileName[i++] = 'k';

	fp = fopen(argv[1], "r");
	if(!fp){
		printf("File Doesn't Exist\n");
		exit(2);
	}

	buffer = (char *)malloc(SIZE * sizeof(char));
	i = 0;
	while((character = getc(fp)) != EOF){
		buffer[i] = character;
		if(i >= (SIZE - 1)){
			SIZE *= 2;
			buffer = (char *)realloc(buffer, SIZE);
		}
		if(flag == 0){
			append(l, character);
			flag = 1;
		}
		else
			searchAndAdd(l, character);
		i++;
	}
	buffer[i] = '\0';
	fclose(fp);

	bubbleSort(l); //Initial Sorting According to Weight.

	l = huffmanTree(l);

	assignPath(l);

	paths = (path *)malloc(l->cnt * sizeof(path));
	storePath(l->head, paths);

	huffList = (char *)malloc(SIZE * sizeof(char));
	storeHuffList(huffList, paths, l->cnt);

	binary = (char *)malloc(SIZE * sizeof(char));
	binaryConversion(buffer, binary, paths);
	printf("%s\n", binary);
	i = strlen(binary);
	printf("%d\n", i);
	free(buffer);
	free(paths);

	appendRedundantBits(binary);
	printf("%s\n", binary);

	output = (char *)malloc(SIZE * sizeof(char));
	binToAscii(binary, output);
	printf("%s\n", output);

	free(binary);

	dflag = (char)252; //11111100
	cnt = (char)l->cnt;//nodeCount
	fp = fopen(zipFileName, "w+");
	fprintf(fp, "%c", cnt);
	fprintf(fp, "%s", huffList);
	fprintf(fp, "%c", dflag);
	fprintf(fp, "%s", output);
	free(huffList);
	free(output);
	fclose(fp);

	printf("\nCompressed\n\t-------------------------------------------------------------------------------------------------------------\n");

	return 0;
}