remove util.[hc]
[cnoor.git] / cnoor.c
blob4dc29714b4d5654c41583441cea12bc4a64b2c96
1 /*
2 * cnoor - a small framebuffer/GTK+ Quran viewer
4 * Copyright (C) 2009-2011 Ali Gholami Rudi
6 * This program is released under GNU GPL version 2.
7 */
8 #include <ctype.h>
9 #include <stdlib.h>
10 #include <stdio.h>
11 #include <string.h>
12 #include "config.h"
13 #include "txtwin.h"
14 #include "quran.h"
16 #define LENGTH(vars) (sizeof(vars) / sizeof(vars[0]))
18 static void ins_sura(struct quran *quran, struct quran *trans, int sura)
20 char buf[16 * 1024];
21 int start = sura_start(sura);
22 int ayas = sura_ayas(sura);
23 int i;
24 for (i = 0; i < ayas; i++) {
25 int juz = juz_start(sura, i + 1);
26 int sajda = sajda_kind(sura, i + 1);
27 if (juz) {
28 sprintf(buf, "%d\n", juz);
29 txtwin_append(buf, FONT_JUZ);
31 quran_aya(quran, buf, LENGTH(buf), start + i);
32 txtwin_append(buf, FONT_QURAN);
33 sprintf(buf, " %d ", i + 1);
34 txtwin_append(buf, FONT_NUM);
35 if (sajda != SAJDA_NONE) {
36 char *s = sajda == SAJDA_RECOM ? "*" : "**";
37 txtwin_append(s, FONT_SAJDA);
39 if (trans) {
40 quran_aya(trans, buf, LENGTH(buf), start + i);
41 txtwin_append("\n", NULL);
42 txtwin_append(buf, FONT_TRANS);
44 txtwin_append("\n\n", NULL);
48 int show(int sura)
50 char name[128];
51 struct quran *quran;
52 struct quran *trans = NULL;
53 sprintf(name, "%d(%s)", sura, sura_name(sura));
54 quran = quran_alloc(QURAN_PATH);
55 if (TRANS_PATH)
56 trans = quran_alloc(TRANS_PATH);
57 txtwin_init(name);
58 ins_sura(quran, trans, sura);
59 txtwin_loop();
60 txtwin_free();
61 if (trans)
62 quran_free(trans);
63 quran_free(quran);
64 return 0;
67 int main(int argc, char **argv)
69 int sura;
70 if (argc == 1 || !strcmp(argv[1], "-h")) {
71 printf("usage: %s sura_number\n", argv[0]);
72 return 0;
74 sura = atoi(argv[1]);
75 if (sura <= 0 || sura > 114) {
76 fprintf(stderr, "cnoor: invalid sura number\n");
77 return 1;
79 txtwin_gtk_init(argc, argv);
80 show(sura);
81 return 0;