#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
// FILE format is: 'header', then 2023 skipped bytes, then the number of interest
#define OURINT 1426915328
#define OFFSETTODATA 2023

int writeToFile(){

    FILE* fp = fopen("toReadLater.txt","w+");
	char c = 'h';
    fwrite(&c, sizeof(char), 1, fp);
    c = 'e';
    fwrite(&c, sizeof(char), 1, fp);
    c = 'a';
    fwrite(&c, sizeof(char), 1, fp);
    c = 'd';
    fwrite(&c, sizeof(char), 1, fp);
    c = 'e';
    fwrite(&c, sizeof(char), 1, fp);
    c = 'r';
    fwrite(&c, sizeof(char), 1, fp);
    unsigned int buf = OFFSETTODATA;
    fwrite(&buf, sizeof(int), 1, fp);
    fseek(fp, OFFSETTODATA, SEEK_CUR);

    buf = OURINT;
    fwrite(&buf, sizeof(int), 1, fp);
    fclose(fp);
}

int readFromFile(){
	FILE *fp = fopen("toReadLater.txt", "r+");
	fseek(fp, 6 , SEEK_SET);
	int skip = 0;
	fread(&skip, sizeof(int), 1, fp);
    // NOTE, in HW, the size of the section is a value in 
    // Big-Endian format, it will actually need conversion
	fseek(fp, skip, SEEK_CUR);
	unsigned int qBe = 0;
	unsigned int qLe = 0;
	int i;
	unsigned char *c = (char *)(&qBe);
	unsigned char *d = (char *)(&qLe);
	for (i = 0; i < 4; i++)
	{
		c[i] = getc(fp);
		printf("Byte %i: %i %x\n",i, c[i], c[i]);
	}

    for (i = 0; i < 4; i++)
	{
		d[4-i-1] = c[i];
	}

    printf("Translated using swapping the bytes order: %i\n", qLe);
	qLe = ntohl(qBe);
    printf("Translated using ntohl: %i\n", qLe);
    fclose(fp);
}
int main (int argc, char** argv){
    unsigned int wantToRead;
	writeToFile();
	printf("Sizeof (int) is:%li\n", sizeof(unsigned int));
	readFromFile();

	return 0;
}