Code Search for Developers
 
 
  

genpage.c from aMSN at Krugle


Show genpage.c syntax highlighted

#include <stdio.h>


#define MASTERFILE 	"langen"
#define LISTFILE	"../langlist"

#define AMSN_VERSION	2
#define MAXKEYS	1024
#define MAXKEYLENGTH	50

typedef struct  {
	char keyname[MAXKEYLENGTH];
	char *translation;
	char missing;

} t_keytable;

t_keytable *keytable[MAXKEYS];
int keynum;

void readMaster() {
	FILE *f;
	char buffer[2048];
	char keyname[MAXKEYLENGTH];
	int ver;
	int i;


	f=fopen(MASTERFILE,"r");
	fscanf(f,"%s %d\n",buffer,&ver);


	if (strcmp("amsn_lang_version",buffer)) {
		printf ("Wrong language version file: ");
		printf (MASTERFILE);
		printf("\n");
		exit(-1);
	}

	keynum=0;

	do {

		fscanf (f,"%s",keyname);
		fgetc(f);
		fgets(buffer,2048,f);

		if (feof(f)) break;

		buffer[strlen(buffer)-1]=0;

		keytable[keynum]=(t_keytable*)malloc(sizeof(t_keytable));

		if (keytable[keynum]==NULL) {
			printf("Not enough memory for key table\n");
			exit(-1);
		}

		strcpy(keytable[keynum]->keyname,keyname);

		keytable[keynum]->translation=(char*)malloc(strlen(buffer)+1);
		strcpy(keytable[keynum]->translation,buffer);


		keynum++;
	} while(1);

	fclose(f);


}


int countMissingFor(char *langfile) {
	FILE *f;
	int i,num;
	char keyname[MAXKEYLENGTH];

	f=fopen(langfile,"r");

	for (i=0;i<keynum;i++) {
		keytable[i]->missing=1;
	}


	do {
		fscanf(f,"%s",keyname);
		while (fgetc(f)!='\n') if (feof(f)) break;
		if(feof(f)) break;

		for (i=0;i<keynum;i++) {
			if (!strcmp(keytable[i]->keyname,keyname)) {
				keytable[i]->missing=0;
				break;
			}
		}

	} while(1);

	num=0;
	for (i=0;i<keynum;i++) {
		if (keytable[i]->missing==1) {
			num++;
		}
	}

	fclose(f);
	
	return num;
}


void checkMissingFor(char *langfile,char *langname) {
	FILE *f;
	int i,num;
	char keyname[MAXKEYLENGTH];

	f=fopen(langfile,"r");

	for (i=0;i<keynum;i++) {
		keytable[i]->missing=1;
	}


	do {
		fscanf(f,"%s",keyname);
		while (fgetc(f)!='\n') if (feof(f)) break;
		if(feof(f)) break;

		for (i=0;i<keynum;i++) {
			if (!strcmp(keytable[i]->keyname,keyname)) {
				keytable[i]->missing=0;
				break;
			}
		}

	} while(1);

	num=0;
	for (i=0;i<keynum;i++) {
		if (keytable[i]->missing==1) {
			printf("<a href=\"#key_%s\">%s</a><br>\n",keytable[i]->keyname,keytable[i]->keyname);
			num++;
		}
	}

	if (num==0) {
		printf("<i>Not missing any sentences</i><br>\n",keytable[i]->keyname);
	}

	printf("<br>");


	fclose(f);
}


void checkMissing() {
	FILE *f;
	char langfile[50];
	char langcode[10];
	char langenc[50];
	char langname[100];

	f=fopen(LISTFILE,"r");

	do {
		fscanf(f,"%s",langcode);
		fgetc(f);
		fscanf(f,"%s",langenc);
		fgetc(f);
		fgets(langname,100,f);

		if (feof(f)) break;

		langname[strlen(langname)-1]=0;

		sprintf(langfile,"lang%s",langcode);

		if (strcmp(langfile,MASTERFILE)) {

		  printf("<ul><li><b><a name=\"%s\"></a>%s (%s) - %s</b></li></ul>\n",langcode,langname,langcode,langenc);
		  checkMissingFor(langfile,langname);
		}

	} while(1);

	fclose(f);

}

void writeMasterKeys() {
	int i;

	printf("<center><big><big><b><a name=\"en\">English translations</a></b></big></big></center><br>\n");

	printf("<table border=0 valign=top>\n");

	for(i=0;i<keynum;i++) {
		printf("<tr><td><a name=\"key_%s\"></a><b>%s</b></td><td> %s<br></td></tr>\n",keytable[i]->keyname,keytable[i]->keyname,keytable[i]->translation);

	}
	
	printf("</table>\n");
}

void writeFile(const char *name) {
	
	FILE *f;
	char c;
	
	f=fopen(name,"r");
	do {
		c=fgetc(f);
		if (feof(f)) break;
		printf("%c",c);
	} while(1);

}


void writeLocalLinks() {
	FILE *f;
	char langfile[50];
	char langcode[10];
	char langenc[50];
	char langname[100];
	int num;

	f=fopen(LISTFILE,"r");

	printf("<table border=0 cellpadding=5>\n");

	printf("<tr><td><b><font size=-2>See missing for:</font></b></td><td><b>Encoding</b></td><td><b><font size=-2>#</font></b></td><td><b><font size=-2>D/L</font></b></td></tr>\n");

	do {
		fscanf(f,"%s",langcode);
		fgetc(f);
		fscanf(f,"%s",langenc);
		fgetc(f);
		fgets(langname,100,f);

		if (feof(f)) break;

		langname[strlen(langname)-1]=0;

		sprintf(langfile,"lang%s",langcode);
		num=countMissingFor(langfile);

		  printf("<tr><td><font size=-2><a href=\"#%s\">%s</a></font></td><td><font size =-2>%s</td><td>%d</td><td><a href=\"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/amsn/msn/lang/lang%s?rev=HEAD&amp;content-type=text/plain\">%s</a></td></tr>\n",langcode,langname,langenc,num,langcode,langcode);

	} while(1);
	
	printf("</table>\n");

	fclose(f);
}

int main () {

	readMaster();

	writeFile("lang1.tmpl");
	writeLocalLinks();
	writeFile("lang2.tmpl");

	checkMissing();
	writeMasterKeys();

	writeFile("lang3.tmpl");

	return 0;
}




See more files for this project here

aMSN

A very nice MSN compatible messenger application, aMSN Messenger is a multiplatform MSN messenger clone. Works pretty much like its Windows based counterpart. Perfect for keeping in touch with those friends who have not yet seen the light. Works on linux

Project homepage: http://sourceforge.net/projects/amsn
Programming language(s): C,C++,PHP,Tcl,XML
License: other

  LANG-HOWTO
  addkey.tcl
  complete.pl
  convert.tcl
  genlangfiles.c
  genpage.c
  lang1.tmpl
  lang2.tmpl
  lang3.tmpl
  langal
  langast
  langca
  langca_VC
  langchk.sh
  langcs
  langcy
  langda
  langde
  langee
  langel
  langen
  langes
  langeu
  langfi
  langfr
  langfr_CA
  langfri
  langglg
  langgr2
  langhu
  langid
  langis
  langit
  langko
  langlt
  langmk
  langnl
  langno
  langoc
  langpl
  langpt
  langpt_BR
  langro
  langru
  langsk
  langsl
  langsr
  langsv
  langtr
  langzh-CN
  langzh-TW
  missing.py
  sortlang