cnoor: free trans variable
[cnoor.git] / cnoor.c
blob0413e76ffde5a90aff5854019639864da94226ea
1 #include <ctype.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include "config.h"
6 #include "txtwin.h"
7 #include "quran.h"
8 #include "util.h"
10 static void ins_sura(struct txtwin *tw, struct quran *quran,
11 struct quran *trans, int sura)
13 char buf[16 * 1024];
14 int start = sura_start(sura);
15 int ayas = sura_ayas(sura);
16 int i;
17 for (i = 0; i < ayas; i++) {
18 int juz = juz_start(sura, i + 1);
19 enum sajda sajda = sajda_kind(sura, i + 1);
20 if (juz) {
21 sprintf(buf, "%d", juz);
22 txtwin_append(tw, buf, "juz");
24 quran_aya(quran, buf, LENGTH(buf), start + i);
25 txtwin_append(tw, buf, "quran");
26 sprintf(buf, " %d ", i + 1);
27 txtwin_append(tw, buf, "num");
28 if (sajda != SAJDA_NONE) {
29 char *s = sajda == SAJDA_RECOM ? "*" : "**";
30 txtwin_append(tw, s, "sajda");
32 if (trans) {
33 quran_aya(trans, buf, LENGTH(buf), start + i);
34 txtwin_append(tw, "\n", NULL);
35 txtwin_append(tw, buf, "trans");
37 txtwin_append(tw, "\n\n", NULL);
41 static void set_tags(struct txtwin *tw)
43 int i;
44 for (i = 0; i < LENGTH(styles); i++)
45 txtwin_tag(tw, styles[i].name, styles[i].fg,
46 styles[i].bg, styles[i].font);
49 int show(int sura)
51 struct txtwin *tw;
52 struct quran *quran;
53 struct quran *trans = NULL;
54 tw = txtwin_alloc();
55 quran = quran_alloc(QURAN_PATH);
56 if (TRANS_PATH)
57 trans = quran_alloc(TRANS_PATH);
58 set_tags(tw);
59 ins_sura(tw, quran, trans, sura);
60 txtwin_loop(tw);
61 txtwin_free(tw);
62 if (trans)
63 quran_free(trans);
64 quran_free(quran);
65 return 0;
68 static char *version =
69 "CNOOR 0.1\n"
70 "Copyright (C) 2009 Ali Gholami Rudi\n"
71 "You can redistribute and/or modify cnoor under the terms\n"
72 "of GNU General Public License. For more information, see\n"
73 "the file named COPYING.\n";
75 int main(int argc, char **argv)
77 int sura;
78 txtwin_gtk_init(argc, argv);
79 if (argc == 1 || !strcmp(argv[1], "-h")) {
80 printf("usage: %s sura_number\n", argv[0]);
81 return 0;
83 if (!strcmp(argv[1], "-v")) {
84 puts(version);
85 return 0;
87 sura = atoi(argv[1]);
88 if (sura <= 0 || sura > 114) {
89 fprintf(stderr, "cnoor: invalid sura number\n");
90 return 1;
92 show(sura);
93 return 0;