Only in persian_calendar-1.0-src_org/: a.out diff -ru persian_calendar-1.0-src_org/date.h persian_calendar-1.0-src/date.h --- persian_calendar-1.0-src_org/date.h 2005-07-03 23:48:43.000000000 +0430 +++ persian_calendar-1.0-src/date.h 2005-07-04 01:02:49.000000000 +0430 @@ -1,446 +1,452 @@ - typedef struct sdate +typedef struct sdate { - float time; - int day; - int mon; - int year; - int dw; - double nmtime; - } SDATE; - int -div (double a, double b) -{ - return (int) (a / b); - } long int -jalalyDays (int j_y, int j_m, int j_d) -{ - int j_days_in_month[] = { 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 }; - long int jy, jm, jd, i, j_day_no; - jy = j_y - 979; - jm = j_m - 1; - jd = j_d; - if (jy >= 8) - - { - j_day_no = 2922; - jy = jy - 8; - } - + float time; + int day; + int mon; + int year; + int dw; + double nmtime; +} SDATE; +int +div2 (double a, double b) +{ + return (int) (a / b); +} long int +jalalyDays (int j_y, int j_m, int j_d) +{ + int j_days_in_month[] = { 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 }; + long int jy, jm, jd, i, j_day_no; + jy = j_y - 979; + jm = j_m - 1; + jd = j_d; + if (jy >= 8) + + { + j_day_no = 2922; + jy = jy - 8; + } + else - j_day_no = 0; - j_day_no += 46751 * div (jy, 128); - jy = jy % 128; - if (jy >= 29) - - { - j_day_no += 10592; - jy = jy - 29; - } - j_day_no += 12053 * div (jy, 33); - jy = jy % 33; - if (jy >= 5) - - { - j_day_no += 1826; - jy = jy - 5; - } - + j_day_no = 0; + j_day_no += 46751 * div2 (jy, 128); + jy = jy % 128; + if (jy >= 29) + + { + j_day_no += 10592; + jy = jy - 29; + } + j_day_no += 12053 * div2 (jy, 33); + jy = jy % 33; + if (jy >= 5) + + { + j_day_no += 1826; + jy = jy - 5; + } + else if (jy == 4) - + { - j_day_no += 1460; - jy = jy - 4; - } - j_day_no += 1461 * div (jy, 4); - jy = jy % 4; - j_day_no += 365 * jy; - jy = 0; - for (i = 0; i < jm; ++i) - j_day_no += j_days_in_month[i]; - j_day_no += jd; - return j_day_no; - } - - SDATE * gregorianDate (long g_day_no) -{ - int g_days_in_month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - int leap; - static SDATE h; - long int gy, gm, gd, i, x; - gy = 1600 + 400 * div (g_day_no, 146097); - g_day_no = g_day_no % 146097; - if (g_day_no >= 36524) - - { - gy += 100 * div (g_day_no, 36524); - g_day_no = g_day_no % 36524; - } - gy += 4 * div (g_day_no, 1461); - g_day_no %= 1461; - leap = 0; - if (g_day_no <= 365 && g_day_no != 0) - - { - leap = 1; - } - + j_day_no += 1460; + jy = jy - 4; + } + j_day_no += 1461 * div2 (jy, 4); + jy = jy % 4; + j_day_no += 365 * jy; + jy = 0; + for (i = 0; i < jm; ++i) + j_day_no += j_days_in_month[i]; + j_day_no += jd; + return j_day_no; +} + +SDATE * +gregorianDate (long g_day_no) +{ + int g_days_in_month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + int leap; + static SDATE h; + long int gy, gm, gd, i, x; + gy = 1600 + 400 * div2 (g_day_no, 146097); + g_day_no = g_day_no % 146097; + if (g_day_no >= 36524) + + { + gy += 100 * div2 (g_day_no, 36524); + g_day_no = g_day_no % 36524; + } + gy += 4 * div2 (g_day_no, 1461); + g_day_no %= 1461; + leap = 0; + if (g_day_no <= 365 && g_day_no != 0) + + { + leap = 1; + } + else if (g_day_no == 0) - + { - gy -= 1; - g_day_no = 365; - } - + gy -= 1; + g_day_no = 365; + } + else - + { - g_day_no--; - gy += div (g_day_no, 365); - g_day_no = g_day_no % 365; - if (g_day_no == 0) - + g_day_no--; + gy += div2 (g_day_no, 365); + g_day_no = g_day_no % 365; + if (g_day_no == 0) + { - gy -= 1; - g_day_no = 365; - } - } - for (i = 0; g_day_no > (g_days_in_month[i] + (i == 1 && leap)); i++) - g_day_no -= g_days_in_month[i] + (i == 1 && leap); - gm = i + 1; - gd = g_day_no; - h.year = gy; - h.mon = gm; - h.day = gd; - gy -= 1600; - x = gy + div (gy + 3, 4) - div (gy + 99, 100) + div (gy + 399, 400); - for (i = 0; i < gm - 1; ++i) - x += g_days_in_month[i] - 28; - if (gm > 2 && ((gy % 4 == 0 && gy % 100 != 0) || (gy % 400 == 0))) - x++; - x += gd - 2; - h.dw = x % 7; - return (&h); - } - - SDATE * jalali_to_gregorian (j_y, j_m, j_d) -{ - static SDATE h; - long int j_day_no, g_day_no; - j_day_no = jalalyDays (j_y, j_m, j_d); - g_day_no = j_day_no + 80; - h = *gregorianDate (g_day_no); - return (&h); - } - long -gregorianDays (long g_y, long g_m, long g_d) -{ - int g_days_in_month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - int gy, gm, gd, g_day_no; - int i; - gy = g_y - 1600; - gm = g_m - 1; - gd = g_d; - g_day_no = - 365 * gy + div (gy + 3, 4) - div (gy + 99, 100) + div (gy + 399, 400); - for (i = 0; i < gm; ++i) - g_day_no += g_days_in_month[i]; - if (gm > 1 && ((gy % 4 == 0 && gy % 100 != 0) || (gy % 400 == 0))) - - /* leap and after Feb */ - g_day_no++; - g_day_no += gd; - return g_day_no; - } - - SDATE * jalalyDate (long j_day_no) -{ - int j_days_in_month[] = { 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 }; - int j_np, j_np1, j_np2, j_np4, jy, jm, jd; - int i; - static SDATE h; - if (j_day_no >= 2922) - - { - j_np2 = 8; - j_day_no -= 2922; - } - - else - j_np2 = 0; - j_np = div (j_day_no, 46751); - j_day_no = j_day_no % 46751; - if (j_day_no >= 10592) - - { - jy = 29; - j_day_no -= 10592; - } - + gy -= 1; + g_day_no = 365; + } + } + for (i = 0; g_day_no > (g_days_in_month[i] + (i == 1 && leap)); i++) + g_day_no -= g_days_in_month[i] + (i == 1 && leap); + gm = i + 1; + gd = g_day_no; + h.year = gy; + h.mon = gm; + h.day = gd; + gy -= 1600; + x = gy + div2 (gy + 3, 4) - div2 (gy + 99, 100) + div2 (gy + 399, 400); + for (i = 0; i < gm - 1; ++i) + x += g_days_in_month[i] - 28; + if (gm > 2 && ((gy % 4 == 0 && gy % 100 != 0) || (gy % 400 == 0))) + x++; + x += gd - 2; + h.dw = x % 7; + return (&h); +} + +SDATE * +jalali_to_gregorian (j_y, j_m, j_d) +{ + static SDATE h; + long int j_day_no, g_day_no; + j_day_no = jalalyDays (j_y, j_m, j_d); + g_day_no = j_day_no + 80; + h = *gregorianDate (g_day_no); + return (&h); +} + +long +gregorianDays (long g_y, long g_m, long g_d) +{ + int g_days_in_month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + int gy, gm, gd, g_day_no; + int i; + gy = g_y - 1600; + gm = g_m - 1; + gd = g_d; + g_day_no = + 365 * gy + div2 (gy + 3, 4) - div2 (gy + 99, 100) + div2 (gy + 399, 400); + for (i = 0; i < gm; ++i) + g_day_no += g_days_in_month[i]; + if (gm > 1 && ((gy % 4 == 0 && gy % 100 != 0) || (gy % 400 == 0))) + + /* leap and after Feb */ + g_day_no++; + g_day_no += gd; + return g_day_no; +} + +SDATE * +jalalyDate (long j_day_no) +{ + int j_days_in_month[] = { 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 }; + int j_np, j_np1, j_np2, j_np4, jy, jm, jd; + int i; + static SDATE h; + if (j_day_no >= 2922) + + { + j_np2 = 8; + j_day_no -= 2922; + } + else - jy = 0; - j_np1 = div (j_day_no, 12053); - j_day_no = j_day_no % 12053; - if (j_day_no >= 1826) - - { - j_np4 = 5; - j_day_no -= 1826; - } - + j_np2 = 0; + j_np = div2 (j_day_no, 46751); + j_day_no = j_day_no % 46751; + if (j_day_no >= 10592) + + { + jy = 29; + j_day_no -= 10592; + } + else - if (j_day_no > 1095) - + jy = 0; + j_np1 = div2 (j_day_no, 12053); + j_day_no = j_day_no % 12053; + if (j_day_no >= 1826) + + { + j_np4 = 5; + j_day_no -= 1826; + } + + else if (j_day_no > 1095) + { - j_np4 = 3; - j_day_no -= 1095; - } - + j_np4 = 3; + j_day_no -= 1095; + } + else - j_np4 = 0; - jy += - j_np4 + j_np2 + 979 + 128 * j_np + 33 * j_np1 + 4 * div (j_day_no, 1461); - j_day_no %= 1461; - if (j_day_no == 0) - - { - jy -= 1; - j_day_no = 366; - } - + j_np4 = 0; + jy += + j_np4 + j_np2 + 979 + 128 * j_np + 33 * j_np1 + 4 * div2 (j_day_no, 1461); + j_day_no %= 1461; + if (j_day_no == 0) + + { + jy -= 1; + j_day_no = 366; + } + else - + { - jy += div (j_day_no, 365); - j_day_no = j_day_no % 365; - if (j_day_no == 0) - + jy += div2 (j_day_no, 365); + j_day_no = j_day_no % 365; + if (j_day_no == 0) + { - jy -= 1; - j_day_no = 365; - } - } - for (i = 0; i < 11 && j_day_no > j_days_in_month[i]; ++i) - j_day_no -= j_days_in_month[i]; - jm = i + 1; - jd = j_day_no; - h.day = jd; - h.mon = jm; - h.year = jy; - return (&h); - } - - SDATE * gregorian_to_jalali (g_y, g_m, g_d) -{ - int g_day_no, j_day_no; - static SDATE h; - g_day_no = gregorianDays (g_y, g_m, g_d); - j_day_no = g_day_no - 80; - h = *jalalyDate (j_day_no); - return (&h); - } - long -hijriDays (int h_y, int h_m, int h_d) -{ - int h_days_in_month[] = { 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29 }; - long int hy, hm, hd, i, h_day_no; - static SDATE h; - hy = h_y - 1009; - hm = h_m - 1; - hd = h_d; - if (hy >= 12) - - { - h_day_no = 4252; - hy = hy - 12; - } - + jy -= 1; + j_day_no = 365; + } + } + for (i = 0; i < 11 && j_day_no > j_days_in_month[i]; ++i) + j_day_no -= j_days_in_month[i]; + jm = i + 1; + jd = j_day_no; + h.day = jd; + h.mon = jm; + h.year = jy; + return (&h); +} + +SDATE * +gregorian_to_jalali (g_y, g_m, g_d) +{ + int g_day_no, j_day_no; + static SDATE h; + g_day_no = gregorianDays (g_y, g_m, g_d); + j_day_no = g_day_no - 80; + h = *jalalyDate (j_day_no); + return (&h); +} + +long +hijriDays (int h_y, int h_m, int h_d) +{ + int h_days_in_month[] = { 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29 }; + long int hy, hm, hd, i, h_day_no; + // static SDATE h; + hy = h_y - 1009; + hm = h_m - 1; + hd = h_d; + if (hy >= 12) + + { + h_day_no = 4252; + hy = hy - 12; + } + else - h_day_no = 0; - h_day_no += 10631 * div (hy, 30); - hy = hy % 30; - for (i = 1; i <= hy; i++) - - { - if (i == 2 || i == 5 || i == 7 || i == 10 || i == 13 || i == 15 - || i == 18 || i == 21 || i == 24 || i == 26 || i == 29) - h_day_no += 355; - + h_day_no = 0; + h_day_no += 10631 * div2 (hy, 30); + hy = hy % 30; + for (i = 1; i <= hy; i++) + + { + if (i == 2 || i == 5 || i == 7 || i == 10 || i == 13 || i == 15 + || i == 18 || i == 21 || i == 24 || i == 26 || i == 29) + h_day_no += 355; + else - h_day_no += 354; - } - for (i = 0; i < hm; ++i) - h_day_no += h_days_in_month[i]; - h_day_no += hd; - return h_day_no; - } - - SDATE * hijri_to_gregorian (h_y, h_m, h_d) -{ - FILE * fp; - static SDATE h, hd, gd; - long int h_day_no, g_day_no; - h_day_no = hijriDays (h_y, h_m, h_d); - if ((fp = fopen ("dateExep.txt", "r")) != NULL) - - { - while (fscanf - (fp, "%d %d %d %d %d %d ", &gd.year, &gd.mon, &gd.day, &hd.year, - &hd.mon, &hd.day) != EOF) - + h_day_no += 354; + } + for (i = 0; i < hm; ++i) + h_day_no += h_days_in_month[i]; + h_day_no += hd; + return h_day_no; +} + +SDATE * +hijri_to_gregorian (h_y, h_m, h_d) +{ + FILE *fp; + static SDATE h, hd, gd; + long int h_day_no, g_day_no; + h_day_no = hijriDays (h_y, h_m, h_d); + if ((fp = fopen ("dateExep.txt", "r")) != NULL) + + { + while (fscanf + (fp, "%d %d %d %d %d %d ", &gd.year, &gd.mon, &gd.day, &hd.year, + &hd.mon, &hd.day) != EOF) + { - if (hijriDays (h_y, h_m, h_d) >= - hijriDays (hd.year, hd.mon, hd.day)) - + if (hijriDays (h_y, h_m, h_d) >= + hijriDays (hd.year, hd.mon, hd.day)) + { - if (hijriDays (h_y, h_m, h_d) == - hijriDays (hd.year, hd.mon, hd.day)) - if (h_m > hd.mon) - + if ((hijriDays (h_y, h_m, h_d) == + hijriDays (hd.year, hd.mon, hd.day))) { + if (h_m > hd.mon) + { - h = + h = *gregorianDate (gregorianDays (gd.year, gd.mon, gd.day) + 1); - return (&h); - } - + return (&h); + }} + else if (h_m == hd.mon) - + { - h = + h = *gregorianDate (gregorianDays (gd.year, gd.mon, gd.day)); - return (&h); - } - if (hd.day == 30) - h_day_no++; - if (hd.day == 1) - h_day_no--; - } - } - fclose (fp); - } - g_day_no = h_day_no + 194; - h = *gregorianDate (g_day_no); - return (&h); - } - - SDATE * hijriDate (long h_day_no) -{ - int h_days_in_month[] = { 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29 }; - int h_np, h_np2, hy, hm, hd; - static SDATE h; - int i; - if (h_day_no >= 4252) - - { - h_np2 = 12; - h_day_no -= 4252; - } - + return (&h); + } + if (hd.day == 30) + h_day_no++; + if (hd.day == 1) + h_day_no--; + } + } + fclose (fp); + } + g_day_no = h_day_no + 194; + h = *gregorianDate (g_day_no); + return (&h); +} + +SDATE * +hijriDate (long h_day_no) +{ + int h_days_in_month[] = { 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29 }; + int h_np, h_np2, hy, hm, hd; + static SDATE h; + int i; + if (h_day_no >= 4252) + + { + h_np2 = 12; + h_day_no -= 4252; + } + else - h_np2 = 0; - h_np = div (h_day_no, 10631); - h_day_no = h_day_no % 10631; - hy = h_np2 + 1009 + 30 * h_np; - for (i = 1; i <= 30; i++) - - { - if (i == 2 || i == 5 || i == 7 || i == 10 || i == 13 || i == 15 - || i == 18 || i == 21 || i == 24 || i == 26 || i == 29) - + h_np2 = 0; + h_np = div2 (h_day_no, 10631); + h_day_no = h_day_no % 10631; + hy = h_np2 + 1009 + 30 * h_np; + for (i = 1; i <= 30; i++) + + { + if (i == 2 || i == 5 || i == 7 || i == 10 || i == 13 || i == 15 + || i == 18 || i == 21 || i == 24 || i == 26 || i == 29) + { - if (h_day_no >= 355) - + if (h_day_no >= 355) + { - h_day_no -= 355; - hy += 1; - } - + h_day_no -= 355; + hy += 1; + } + else - i = 30; - } - + i = 30; + } + else - + { - if (h_day_no >= 354) - + if (h_day_no >= 354) + { - h_day_no -= 354; - hy += 1; - } - + h_day_no -= 354; + hy += 1; + } + else - i = 30; - } - } - if (h_day_no == 0) - - { - i = (hy - 1) % 30; - if (i == 2 || i == 5 || i == 7 || i == 10 || i == 13 || i == 15 - || i == 18 || i == 21 || i == 24 || i == 26 || i == 29) - + i = 30; + } + } + if (h_day_no == 0) + + { + i = (hy - 1) % 30; + if (i == 2 || i == 5 || i == 7 || i == 10 || i == 13 || i == 15 + || i == 18 || i == 21 || i == 24 || i == 26 || i == 29) + { - hy -= 1; - h_day_no = 355; - } - + hy -= 1; + h_day_no = 355; + } + else - + { - hy -= 1; - h_day_no = 354; - } - } - for (i = 0; i < 11 && h_day_no > h_days_in_month[i]; ++i) - h_day_no -= h_days_in_month[i]; - hm = i + 1; - hd = h_day_no; - h.year = hy; - h.mon = hm; - h.day = hd; - return (&h); - } - - SDATE * gregorian_to_hijri (g_y, g_m, g_d) -{ - FILE * fp; - long int g_day_no; - static SDATE h, hd, gd; - g_day_no = gregorianDays (g_y, g_m, g_d); - if ((fp = fopen ("dateExep.txt", "r")) != NULL) - - { - while (fscanf - (fp, "%d %d %d %d %d %d ", &gd.year, &gd.mon, &gd.day, &hd.year, - &hd.mon, &hd.day) != EOF) - + hy -= 1; + h_day_no = 354; + } + } + for (i = 0; i < 11 && h_day_no > h_days_in_month[i]; ++i) + h_day_no -= h_days_in_month[i]; + hm = i + 1; + hd = h_day_no; + h.year = hy; + h.mon = hm; + h.day = hd; + return (&h); +} + +SDATE * +gregorian_to_hijri (g_y, g_m, g_d) +{ + FILE *fp; + long int g_day_no; + static SDATE h, hd, gd; + g_day_no = gregorianDays (g_y, g_m, g_d); + if ((fp = fopen ("dateExep.txt", "r")) != NULL) + + { + while (fscanf + (fp, "%d %d %d %d %d %d ", &gd.year, &gd.mon, &gd.day, &hd.year, + &hd.mon, &hd.day) != EOF) + { - if (gregorianDays (g_y, g_m, g_d) >= - gregorianDays (gd.year, gd.mon, gd.day)) - + if (gregorianDays (g_y, g_m, g_d) >= + gregorianDays (gd.year, gd.mon, gd.day)) + { - if (gregorianDays (g_y, g_m, g_d) == - gregorianDays (gd.year, gd.mon, gd.day)) - - { - h.day = hd.day; - h.mon = hd.mon; - h.year = hd.year; - return (&h); - } - if (hd.day == 30) - g_day_no--; - if (hd.day == 1) - g_day_no++; - } - } - fclose (fp); - } - g_day_no = g_day_no - 194; - h = *hijriDate (g_day_no); - return (&h); - } + if (gregorianDays (g_y, g_m, g_d) == + gregorianDays (gd.year, gd.mon, gd.day)) - + { + h.day = hd.day; + h.mon = hd.mon; + h.year = hd.year; + return (&h); + } + if (hd.day == 30) + g_day_no--; + if (hd.day == 1) + g_day_no++; + } + } + fclose (fp); + } + g_day_no = g_day_no - 194; + h = *hijriDate (g_day_no); + return (&h); +} diff -ru persian_calendar-1.0-src_org/gcal.c persian_calendar-1.0-src/gcal.c --- persian_calendar-1.0-src_org/gcal.c 2005-07-03 14:00:20.000000000 +0430 +++ persian_calendar-1.0-src/gcal.c 2005-07-04 01:02:49.000000000 +0430 @@ -1,146 +1,150 @@ -#include -#include -#include "date.h" - char *mname[] = - { "January", "February", "March", "April", "May", "June", "July", - "August", "September", "October", "November", "December" +#include +#include +#include +#include "date.h" +char *mname[] = + { " January", " February", " March", " April", " May", " June", " July", + " August", " September", " October", " November", " December" }; - int - ndays (m, y) int - m, y; - +int +ndays (m, y) + int m, y; + { - static short ndmnth[13] = + static short ndmnth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - int nd = ndmnth[m]; - if (m == 2 && (y % 4 == 0 && (y < 1582 || y % 100 != 0 || y % 400 == 0))) + int nd = ndmnth[m]; + if (m == 2 && (y % 4 == 0 && (y < 1582 || y % 100 != 0 || y % 400 == 0))) nd++; - return nd; - } - void - printmcal (dw, fday, lday, nd, mday) int - dw, fday, lday, nd, mday; - + return nd; +} + +void +printmcal (dw, fday, lday, nd, mday) + int dw, fday, lday, nd, mday; + { - register i, hi; - printf (" S M T W T F S\n"); - for (i = 0; i < dw; i++) + printf ("\n"); +int register i, hi; + printf (" S M T W T F S\n"); + for (i = 0; i < dw; i++) printf (" "); - hi = fday; - for (i = 1; i <= nd; i++) + hi = fday; + for (i = 1; i <= nd; i++) { - if (i == mday) + if (i == mday) hi = 1; - printf ("%2d", i); - if (++dw == 7) + printf ("%2d", i); + if (++dw == 7) { - printf ("\n"); - dw = 0; - } + printf ("\n"); + dw = 0; + } else - printf (" "); - if (i == nd - lday) + printf (" "); + if (i == nd - lday) hi = 0; - hi++; - } - if (dw) - printf ("\n\n"); + hi++; + } + if (dw) + printf ("\n"); else printf ("\n"); - } - void - gcal (m, y) int - m, y; - +} + +void +gcal (m, y) + int m, y; + { - int nd; - SDATE fd, ld; - fd.year = y; - fd.mon = m; - fd.day = 1; - fd = *gregorianDate (gregorianDays (fd.year, fd.mon, fd.day)); - if (m == 12) - - { - ld.year = y + 1; - ld.mon = 1; - ld.day = 1; - } - + int nd; + SDATE fd, ld; + fd.year = y; + fd.mon = m; + fd.day = 1; + fd = *gregorianDate (gregorianDays (fd.year, fd.mon, fd.day)); + if (m == 12) + + { + ld.year = y + 1; + ld.mon = 1; + ld.day = 1; + } + else - + { - ld.year = y; - ld.mon = m + 1; - ld.day = 1; - } - ld = *gregorianDate (gregorianDays (ld.year, ld.mon, ld.day) - 1); - if (fd.mon == ld.mon) - nd = ld.day - fd.day + 1; - + ld.year = y; + ld.mon = m + 1; + ld.day = 1; + } + ld = *gregorianDate (gregorianDays (ld.year, ld.mon, ld.day) - 1); + if (fd.mon == ld.mon) + nd = ld.day - fd.day + 1; + else - nd = ndays (fd.mon, fd.year) - fd.day + ld.day + 1; - printf ("\n%s", mname[fd.mon - 1]); - printf (" %d C.E.\n", ld.year); - printmcal (fd.dw, fd.day, ld.day, nd, 0); - } - int -main (int argc, char *argv[]) + nd = ndays (fd.mon, fd.year) - fd.day + ld.day + 1; + printf ("\n%s", mname[fd.mon - 1]); + printf (" %d C.E.\n", ld.year); + printmcal (fd.dw, fd.day, ld.day, nd, 0); +} + +int +main (int argc, char *argv[]) { - static SDATE h; - struct tm *local_time; - time_t now; - int i, y, m, d; - if (argc > 3) - - { - printf ("invalid parameter"); - exit (0); - } - if (argc == 1) - - { - (void) time (&now); - local_time = localtime (&now); - y = local_time->tm_year + 1900; - m = local_time->tm_mon + 1; - gcal (m, y); - } - if (argc == 2) - + + struct tm *local_time; + time_t now; + int i, y, m; + if (argc > 3) + + { + printf ("invalid parameter,Enter a year.\n"); + exit (0); + } + if (argc == 1) + + { + (void) time (&now); + local_time = localtime (&now); + y = local_time->tm_year + 1900; + m = local_time->tm_mon + 1; + gcal (m, y); + } + if (argc == 2) + { - if (atoi (argv[argc - 1]) < 1600) - + if (atoi (argv[argc - 1]) < 1600) + { - printf ("%s is out of range.enter a year greater than 1600.", - argv[argc - 1]); - exit (0); - } - for (i = 1; i <= 12; i++) - gcal (i, atoi (argv[argc - 1])); - exit (0); - } - if (argc == 3) - + printf ("%s is out of range.enter a year greater than 1600.\n", + argv[argc - 1]); + exit (0); + } + for (i = 1; i <= 12; i++) + gcal (i, atoi (argv[argc - 1])); + exit (0); + } + if (argc == 3) + { - if (atoi (argv[argc - 2]) < 1600) - + if (atoi (argv[argc - 2]) < 1600) + { - printf ("%s is out of range.enter a year greater than 1600.", - argv[argc - 2]); - exit (0); - } - if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > 12) - + printf ("%s is out of range.enter a year greater than 1600.\n", + argv[argc - 2]); + exit (0); + } + if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > 12) + { - printf - ("%s is out of range.enter a month greater than 0 and lower than 13.", + printf + ("%s is out of range.enter a month greater than 0 and lower than 13.\n", argv[argc - 1]); - exit (0); - } - gcal (atoi (argv[argc - 1]), atoi (argv[argc - 2])); - exit (0); - } - } - - + exit (0); + } + gcal (atoi (argv[argc - 1]), atoi (argv[argc - 2])); + exit (0); + } + return (0); +} diff -ru persian_calendar-1.0-src_org/h2m.c persian_calendar-1.0-src/h2m.c --- persian_calendar-1.0-src_org/h2m.c 2005-07-03 14:00:20.000000000 +0430 +++ persian_calendar-1.0-src/h2m.c 2005-07-04 01:02:49.000000000 +0430 @@ -1,56 +1,58 @@ -#include -#include "date.h" - int -main (int argc, char *argv[]) +#include +#include +#include "date.h" + +int +main (int argc, char *argv[]) { - static SDATE h; - int i, y, m, d; - if (argc > 4 || argc < 4) - + static SDATE h; + if (argc > 4 || argc < 4) + { + printf ("Error\n"); + printf ("Input must be like this example : h2m 1362 12 7\n"); + + exit (0); + } + + if (atoi (argv[argc - 3]) < 1010) { - printf ("invalid parameter\n"); - exit (0); - } - if (atoi (argv[argc - 3]) < 1010) - - { - printf ("%s is out of range.enter a year greater than 1010.\n", + printf ("%s is out of range.enter a year greater than 1010.\n", argv[argc - 3]); - exit (0); - } - if (atoi (argv[argc - 2]) < 1 || atoi (argv[argc - 2]) > 12) - + exit (0); + } + if (atoi (argv[argc - 2]) < 1 || atoi (argv[argc - 2]) > 12) + { - printf - ("%s is out of range.enter a month greater than 0 and lower than 13.\n", + printf + ("%s is out of range.a month must be beetwen 0 and 12.\n", argv[argc - 2]); - exit (0); - } - if (atoi (argv[argc - 2]) != 12) - + exit (0); + } + if (atoi (argv[argc - 2]) != 12) + { - h = + h = *hijriDate (hijriDays (atoi (argv[argc - 3]), atoi (argv[argc - 2]) + 1, 1) - 1); - } - + } + else - + { - h = *hijriDate (hijriDays (atoi (argv[argc - 3]) + 1, 1, 1) - 1); - } - if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > h.day) - + h = *hijriDate (hijriDays (atoi (argv[argc - 3]) + 1, 1, 1) - 1); + } + if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > h.day) + { - printf + printf ("%s is out of range.enter a day greater than 0 and lower than %d.\n", argv[argc - 1], h.day + 1); - exit (0); - } - h = + exit (0); + } + h = *hijri_to_gregorian (atoi (argv[argc - 3]), atoi (argv[argc - 2]), atoi (argv[argc - 1])); - printf ("\n %d %d %d\n", h.year, h.mon, h.day); - exit (0); - } + printf ("%d-%d-%d\n", h.year, h.mon, h.day); + exit (0); +} diff -ru persian_calendar-1.0-src_org/hcal.c persian_calendar-1.0-src/hcal.c --- persian_calendar-1.0-src_org/hcal.c 2005-07-03 14:00:20.000000000 +0430 +++ persian_calendar-1.0-src/hcal.c 2005-07-04 01:02:49.000000000 +0430 @@ -1,149 +1,153 @@ -#include -#include -#include "date.h" - char *dow[] = - { "Yaumul Ahad", "Yaumul Ithnain", " Yaumu Zulatha", " Yaumul Arbi'a", - "Yaumul Khamees", "Yaumul Jumma", "Yaumu Sabt" +#include +#include +#include +#include "date.h" +char *dow[] = + { "Yaumul Ahad", "Yaumul Ithnain", " Yaumu Zulatha", " Yaumul Arbi'a", + "Yaumul Khamees", "Yaumul Jumma", "Yaumu Sabt" }; - char *mname[] = - { "January", "February", "March", "April", "May", "June", "July", - "August", "September", "October", "November", "December" +char *mname[] = + { "January", "February", "March", "April", "May", "June", "July", + "August", "September", "October", "November", "December" }; - char *hmname[] = { "Muharram", "Safar", "Rabi` al-Awal", "Rabi` al-Thaani", - "Jumaada al-Awal", "Jumaada al-Thaani", "Rajab", "Sha`ban", "Ramadan", - "Shawwal", - "Zul al-Qi`dah", "Zul al-Hijjah" +char *hmname[] = { "Muharram", "Safar", "Rabi` al-Awal", "Rabi` al-Thaani", + "Jumaada al-Awal", "Jumaada al-Thaani", "Rajab", "Sha`ban", "Ramadan", + "Shawwal", + "Zul al-Qi`dah", "Zul al-Hijjah" }; - int - ndays (m, y) int - m, y; - +int +ndays (m, y) + int m, y; + { - static short ndmnth[13] = + static short ndmnth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - int nd = ndmnth[m]; - if (m == 2 && (y % 4 == 0 && (y < 1582 || y % 100 != 0 || y % 400 == 0))) + int nd = ndmnth[m]; + if (m == 2 && (y % 4 == 0 && (y < 1582 || y % 100 != 0 || y % 400 == 0))) nd++; - return nd; - } - void - printmcal (dw, fday, lday, nd, mday) int - dw, fday, lday, nd, mday; - + return nd; +} + +void +printmcal (dw, fday, lday, nd, mday) + int dw, fday, lday, nd, mday; + { - register i, hi; - printf (" Ahd Ith Zul Arb Kha Jum Sab\n"); - for (i = 0; i < dw; i++) + + int register i, hi; + printf (" Ahd Ith Zul Arb Kha Jum Sab\n"); + for (i = 0; i < dw; i++) printf (" "); - hi = fday; - for (i = 1; i <= nd; i++) + hi = fday; + for (i = 1; i <= nd; i++) { - if (i == mday) + if (i == mday) hi = 1; - printf ("%2d/%2d", i, hi); - if (++dw == 7) + printf ("%2d/%2d", i, hi); + if (++dw == 7) { - printf ("\n"); - dw = 0; - } + printf ("\n"); + dw = 0; + } else - printf (" "); - if (i == nd - lday) + printf (" "); + if (i == nd - lday) hi = 0; - hi++; - } - if (dw) + hi++; + } + if (dw) printf ("\n\n"); else printf ("\n"); - } - void - hcal (m, y) int - m, y; - +} + +void +hcal (m, y) + int m, y; + { - int nd; - SDATE fd, ld; - fd = *hijri_to_gregorian (y, m, 1); - ld = *hijri_to_gregorian (y, m + 1, 1); - ld = *gregorianDate (gregorianDays (ld.year, ld.mon, ld.day) - 1); - if (fd.mon == ld.mon) - nd = ld.day - fd.day + 1; - + int nd; + SDATE fd, ld; + fd = *hijri_to_gregorian (y, m, 1); + ld = *hijri_to_gregorian (y, m + 1, 1); + ld = *gregorianDate (gregorianDays (ld.year, ld.mon, ld.day) - 1); + if (fd.mon == ld.mon) + nd = ld.day - fd.day + 1; + else - nd = ndays (fd.mon, fd.year) - fd.day + ld.day + 1; - printf ("%s ", hmname[m - 1]); - if (y > 0) + nd = ndays (fd.mon, fd.year) - fd.day + ld.day + 1; + printf ("%s ", hmname[m - 1]); + if (y > 0) printf ("%4d A.H.", y); else printf ("%4d B.H.", -y); - printf (" / %s", mname[fd.mon - 1]); - if (fd.year != ld.year) - printf (" %d", fd.year); - if (fd.mon != ld.mon) - printf (" - %s", mname[ld.mon - 1]); - printf (" %d C.E.\n", ld.year); - printmcal (fd.dw, fd.day, ld.day, nd, 0); - } - int -main (int argc, char *argv[]) + printf (" / %s", mname[fd.mon - 1]); + if (fd.year != ld.year) + printf (" %d", fd.year); + if (fd.mon != ld.mon) + printf (" - %s", mname[ld.mon - 1]); + printf (" %d C.E.\n", ld.year); + printmcal (fd.dw, fd.day, ld.day, nd, 0); +} + +int +main (int argc, char *argv[]) { - static SDATE h; - struct tm *local_time; - time_t now; - int i, y, m, d; - if (argc > 3) - + static SDATE h; + struct tm *local_time; + time_t now; + int i, y, m, d; + if (argc > 3) + { - printf ("invalid parameter"); - exit (0); - } - if (argc == 1) - + printf ("invalid parameter"); + exit (0); + } + if (argc == 1) + { - (void) time (&now); - local_time = localtime (&now); - y = local_time->tm_year + 1900; - m = local_time->tm_mon + 1; - d = local_time->tm_mday; - h = *gregorian_to_hijri (y, m, d); - hcal (h.mon, h.year); - } - if (argc == 2) - + (void) time (&now); + local_time = localtime (&now); + y = local_time->tm_year + 1900; + m = local_time->tm_mon + 1; + d = local_time->tm_mday; + h = *gregorian_to_hijri (y, m, d); + hcal (h.mon, h.year); + } + if (argc == 2) + { - if (atoi (argv[argc - 1]) < 990) - + if (atoi (argv[argc - 1]) < 990) + { - printf ("%s is out of range.enter a year greater than 990.", - argv[argc - 1]); - exit (0); - } - for (i = 1; i <= 12; i++) - hcal (i, atoi (argv[argc - 1])); - exit (0); - } - if (argc == 3) - + printf ("%s is out of range.enter a year greater than 990.", + argv[argc - 1]); + exit (0); + } + for (i = 1; i <= 12; i++) + hcal (i, atoi (argv[argc - 1])); + exit (0); + } + if (argc == 3) + { - if (atoi (argv[argc - 2]) < 990) - + if (atoi (argv[argc - 2]) < 990) + { - printf ("%s is out of range.enter a year greater than 990.", - argv[argc - 2]); - exit (0); - } - if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > 12) - + printf ("%s is out of range.enter a year greater than 990.", + argv[argc - 2]); + exit (0); + } + if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > 12) + { - printf + printf ("%s is out of range.enter a month greater than 0 and lower than 13.", argv[argc - 1]); - exit (0); - } - hcal (atoi (argv[argc - 1]), atoi (argv[argc - 2])); - exit (0); - } - } - - + exit (0); + } + hcal (atoi (argv[argc - 1]), atoi (argv[argc - 2])); + exit (0); + } + return (0); +} diff -ru persian_calendar-1.0-src_org/m2h.c persian_calendar-1.0-src/m2h.c --- persian_calendar-1.0-src_org/m2h.c 2005-07-03 14:00:20.000000000 +0430 +++ persian_calendar-1.0-src/m2h.c 2005-07-04 01:02:49.000000000 +0430 @@ -1,78 +1,78 @@ -#include -#include -#include "date.h" - int -main (int argc, char *argv[]) +#include +#include +#include +#include "date.h" +int +main (int argc, char *argv[]) { - static SDATE h; - struct tm *local_time; - time_t now; - int i, y, m, d; - if (argc > 4 || argc == 2 || argc == 3) - + static SDATE h; + struct tm *local_time; + time_t now; + int y, m, d; + if (argc > 4 || argc == 2 || argc == 3) + { - printf ("invalid parameter\n"); - exit (0); - } - if (argc == 1) - + printf ("invalid parameter\n"); + exit (0); + } + if (argc == 1) + { - (void) time (&now); - local_time = localtime (&now); - y = local_time->tm_year + 1900; - m = local_time->tm_mon + 1; - d = local_time->tm_mday; - h = *gregorian_to_hijri (y, m, d); - printf ("\n %d %d %d\n", h.year, h.mon, h.day); - } - if (argc == 4) - + (void) time (&now); + local_time = localtime (&now); + y = local_time->tm_year + 1900; + m = local_time->tm_mon + 1; + d = local_time->tm_mday; + h = *gregorian_to_hijri (y, m, d); + printf ("%d-%d-%d\n", h.year, h.mon, h.day); + } + if (argc == 4) + { - if (atoi (argv[argc - 3]) < 1610) - + if (atoi (argv[argc - 3]) < 1610) + { - printf ("%s is out of range.enter a year greater than 1610.\n", - argv[argc - 3]); - exit (0); - } - if (atoi (argv[argc - 2]) < 1 || atoi (argv[argc - 2]) > 12) - + printf ("%s is out of range.enter a year greater than 1610.\n", + argv[argc - 3]); + exit (0); + } + if (atoi (argv[argc - 2]) < 1 || atoi (argv[argc - 2]) > 12) + { - printf + printf ("%s is out of range.enter a month greater than 0 and lower than 13.\n", argv[argc - 2]); - exit (0); - } - if (atoi (argv[argc - 2]) != 12) - + exit (0); + } + if (atoi (argv[argc - 2]) != 12) + { - h = + h = *gregorianDate (gregorianDays (atoi (argv[argc - 3]), atoi (argv[argc - 2]) + 1, 1) - 1); - } - + } + else - + { - h = + h = *gregorianDate (gregorianDays (atoi (argv[argc - 3]) + 1, 1, 1) - 1); - } - if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > h.day) - + } + if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > h.day) + { - printf + printf ("%s is out of range.enter a day greater than 0 and lower than %d.\n", argv[argc - 1], h.day + 1); - exit (0); - } - h = + exit (0); + } + h = *gregorian_to_hijri (atoi (argv[argc - 3]), atoi (argv[argc - 2]), atoi (argv[argc - 1])); - printf ("\n %d %d %d\n", h.year, h.mon, h.day); - exit (0); - } - } - - + printf ("%d-%d-%d\n", h.year, h.mon, h.day); + exit (0); + } + return (0); +} diff -ru persian_calendar-1.0-src_org/m2s.c persian_calendar-1.0-src/m2s.c --- persian_calendar-1.0-src_org/m2s.c 2005-07-03 14:00:20.000000000 +0430 +++ persian_calendar-1.0-src/m2s.c 2005-07-04 01:02:49.000000000 +0430 @@ -1,78 +1,78 @@ -#include -#include -#include "date.h" - int -main (int argc, char *argv[]) +#include +#include +#include +#include "date.h" +int +main (int argc, char *argv[]) { - static SDATE h; - struct tm *local_time; - time_t now; - int i, y, m, d; - if (argc > 4 || argc == 2 || argc == 3) - + static SDATE h; + struct tm *local_time; + time_t now; + int y, m, d; + if (argc > 4 || argc == 2 || argc == 3) + { - printf ("invalid parameter\n"); - exit (0); - } - if (argc == 1) - + printf ("invalid parameter\n"); + exit (0); + } + if (argc == 1) + { - (void) time (&now); - local_time = localtime (&now); - y = local_time->tm_year + 1900; - m = local_time->tm_mon + 1; - d = local_time->tm_mday; - h = *gregorian_to_jalali (y, m, d); - printf ("\n %d %d %d\n", h.year, h.mon, h.day); - } - if (argc == 4) - + (void) time (&now); + local_time = localtime (&now); + y = local_time->tm_year + 1900; + m = local_time->tm_mon + 1; + d = local_time->tm_mday; + h = *gregorian_to_jalali (y, m, d); + printf ("%d-%d-%d\n", h.year, h.mon, h.day); + } + if (argc == 4) + { - if (atoi (argv[argc - 3]) < 1610) - + if (atoi (argv[argc - 3]) < 1610) + { - printf ("%s is out of range.enter a year greater than 1610.\n", - argv[argc - 3]); - exit (0); - } - if (atoi (argv[argc - 2]) < 1 || atoi (argv[argc - 2]) > 12) - + printf ("%s is out of range.enter a year greater than 1610.\n", + argv[argc - 3]); + exit (0); + } + if (atoi (argv[argc - 2]) < 1 || atoi (argv[argc - 2]) > 12) + { - printf + printf ("%s is out of range.enter a month greater than 0 and lower than 13.\n", argv[argc - 2]); - exit (0); - } - if (atoi (argv[argc - 2]) != 12) - + exit (0); + } + if (atoi (argv[argc - 2]) != 12) + { - h = + h = *gregorianDate (gregorianDays (atoi (argv[argc - 3]), atoi (argv[argc - 2]) + 1, 1) - 1); - } - + } + else - + { - h = + h = *gregorianDate (gregorianDays (atoi (argv[argc - 3]) + 1, 1, 1) - 1); - } - if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > h.day) - + } + if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > h.day) + { - printf + printf ("%s is out of range.enter a day greater than 0 and lower than %d.\n", argv[argc - 1], h.day + 1); - exit (0); - } - h = + exit (0); + } + h = *gregorian_to_jalali (atoi (argv[argc - 3]), atoi (argv[argc - 2]), atoi (argv[argc - 1])); - printf ("\n %d %d %d\n", h.year, h.mon, h.day); - exit (0); - } - } - - + printf ("%d-%d-%d\n", h.year, h.mon, h.day); + exit (0); + } + return (0); +} diff -ru persian_calendar-1.0-src_org/s2m.c persian_calendar-1.0-src/s2m.c --- persian_calendar-1.0-src_org/s2m.c 2005-07-03 14:00:20.000000000 +0430 +++ persian_calendar-1.0-src/s2m.c 2005-07-04 01:02:49.000000000 +0430 @@ -1,59 +1,58 @@ -#include -#include "date.h" - int -main (int argc, char *argv[]) +#include +#include +#include "date.h" +int +main (int argc, char *argv[]) { - static SDATE h; - int i, y, m, d; - jalali_to_gregorian (1382, 10, 9); - if (argc != 4) - - { - printf ("invalid parameter\n"); - exit (0); - } - if (atoi (argv[argc - 3]) < 990) - - { - printf ("%s is out of range.enter a year greater than 990.\n", - argv[argc - 3]); - exit (0); - } - if (atoi (argv[argc - 2]) < 1 || atoi (argv[argc - 2]) > 12) - + static SDATE h; + jalali_to_gregorian (1382, 10, 9); + if (argc != 4) + + { + printf ("invalid parameter\n"); + printf ("Input must be like this example : s2m 1362 12 7\n"); + exit (0); + } + if (atoi (argv[argc - 3]) < 990) + + { + printf ("%s is out of range.enter a year greater than 990.\n", + argv[argc - 3]); + exit (0); + } + if (atoi (argv[argc - 2]) < 1 || atoi (argv[argc - 2]) > 12) + { - printf + printf ("%s is out of range.enter a month greater than 0 and lower than 13.\n", argv[argc - 2]); - exit (0); - } - if (atoi (argv[argc - 2]) != 12) - + exit (0); + } + if (atoi (argv[argc - 2]) != 12) + { - h = + h = *jalalyDate (jalalyDays (atoi (argv[argc - 3]), atoi (argv[argc - 2]) + 1, 1) - 1); - } - + } + else - + { - h = *jalalyDate (jalalyDays (atoi (argv[argc - 3]) + 1, 1, 1) - 1); - } - if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > h.day) - + h = *jalalyDate (jalalyDays (atoi (argv[argc - 3]) + 1, 1, 1) - 1); + } + if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > h.day) + { - printf + printf ("%s is out of range.enter a day greater than 0 and lower than %d.\n", argv[argc - 1], h.day + 1); - exit (0); - } - h = + exit (0); + } + h = *jalali_to_gregorian (atoi (argv[argc - 3]), atoi (argv[argc - 2]), atoi (argv[argc - 1])); - printf ("\n %d %d %d\n", h.year, h.mon, h.day); - exit (0); - } - - + printf ("%d-%d-%d\n", h.year, h.mon, h.day); + exit (0); +} diff -ru persian_calendar-1.0-src_org/scal.c persian_calendar-1.0-src/scal.c --- persian_calendar-1.0-src_org/scal.c 2005-07-03 14:00:20.000000000 +0430 +++ persian_calendar-1.0-src/scal.c 2005-07-04 01:02:49.000000000 +0430 @@ -1,148 +1,151 @@ -#include -#include -#include "date.h" - char *mname[] = - { "January", "February", "March", "April", "May", "June", "July", - "August", "September", "October", "November", "December" +#include +#include +#include "date.h" +#include +char *mname[] = + { "January", "February", "March", "April", "May", "June", "July", + "August", "September", "October", "November", "December" }; - char *smname[] = - { "farvardin", "ordibehesht", "khordad", "tir", "mordad", "shahrivar", - "mehr", "aban", "azar", "dei", "bahman", "esfand" +char *smname[] = + { "farvardin", "ordibehesht", "khordad", "tir", "mordad", "shahrivar", + "mehr", "aban", "azar", "dei", "bahman", "esfand" }; - int - ndays (m, y) int - m, y; - +int +ndays (m, y) + int m, y; + { - static short ndmnth[13] = + static short ndmnth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - int nd = ndmnth[m]; - if (m == 2 && (y % 4 == 0 && (y < 1582 || y % 100 != 0 || y % 400 == 0))) + int nd = ndmnth[m]; + if (m == 2 && (y % 4 == 0 && (y < 1582 || y % 100 != 0 || y % 400 == 0))) nd++; - return nd; - } - void - printmcal (dw, fday, lday, nd, mday) int - dw, fday, lday, nd, mday; - + return nd; +} + +void +printmcal (dw, fday, lday, nd, mday) + int dw, fday, lday, nd, mday; + { - register i, hi; - printf ("yeksh dosha sesh char panj Jumm shanbe\n"); - for (i = 0; i < dw; i++) +int register i, hi; + printf ("yeksh dosha sesh char panj Jumm shanbe\n"); + for (i = 0; i < dw; i++) printf (" "); - hi = fday; - for (i = 1; i <= nd; i++) + hi = fday; + for (i = 1; i <= nd; i++) { - if (i == mday) + if (i == mday) hi = 1; - printf ("%2d/%2d", i, hi); - if (++dw == 7) + printf ("%2d/%2d", i, hi); + if (++dw == 7) { - printf ("\n"); - dw = 0; - } + printf ("\n"); + dw = 0; + } else - printf (" "); - if (i == nd - lday) + printf (" "); + if (i == nd - lday) hi = 0; - hi++; - } - if (dw) + hi++; + } + if (dw) printf ("\n\n"); else printf ("\n"); - } - void - scal (m, y) int - m, y; - +} + +void +scal (m, y) + int m, y; + { - int nd; - SDATE fd, ld; - fd = *jalali_to_gregorian (y, m, 1); - if (m == 12) - ld = *jalali_to_gregorian (y + 1, 1, 1); - + int nd; + SDATE fd, ld; + fd = *jalali_to_gregorian (y, m, 1); + if (m == 12) + ld = *jalali_to_gregorian (y + 1, 1, 1); + else - ld = *jalali_to_gregorian (y, m + 1, 1); - ld = *gregorianDate (gregorianDays (ld.year, ld.mon, ld.day) - 1); - if (fd.mon == ld.mon) - nd = ld.day - fd.day + 1; - + ld = *jalali_to_gregorian (y, m + 1, 1); + ld = *gregorianDate (gregorianDays (ld.year, ld.mon, ld.day) - 1); + if (fd.mon == ld.mon) + nd = ld.day - fd.day + 1; + else - nd = ndays (fd.mon, fd.year) - fd.day + ld.day + 1; - printf ("%s ", smname[m - 1]); - if (y > 0) + nd = ndays (fd.mon, fd.year) - fd.day + ld.day + 1; + printf ("%s ", smname[m - 1]); + if (y > 0) printf ("%4d A.H.", y); else printf ("%4d B.H.", -y); - printf (" / %s", mname[fd.mon - 1]); - if (fd.year != ld.year) - printf (" %d", fd.year); - if (fd.mon != ld.mon) - printf (" - %s", mname[ld.mon - 1]); - printf (" %d C.E.\n", ld.year); - printmcal (fd.dw, fd.day, ld.day, nd, 0); - } - int -main (int argc, char *argv[]) + printf (" / %s", mname[fd.mon - 1]); + if (fd.year != ld.year) + printf (" %d", fd.year); + if (fd.mon != ld.mon) + printf (" - %s", mname[ld.mon - 1]); + printf (" %d C.E.\n", ld.year); + printmcal (fd.dw, fd.day, ld.day, nd, 0); +} + +int +main (int argc, char *argv[]) { - static SDATE h; - struct tm *local_time; - time_t now; - int i, y, m, d; - if (argc > 3) - + static SDATE h; + struct tm *local_time; + time_t now; + int i, y, m, d; + if (argc > 3) + { - printf ("invalid parameter"); - exit (0); - } - if (argc == 1) - + printf ("invalid parameter\n"); + exit (0); + } + if (argc == 1) + { - (void) time (&now); - local_time = localtime (&now); - y = local_time->tm_year + 1900; - m = local_time->tm_mon + 1; - d = local_time->tm_mday; - h = *gregorian_to_jalali (y, m, d); - scal (h.mon, h.year); - } - if (argc == 2) - + (void) time (&now); + local_time = localtime (&now); + y = local_time->tm_year + 1900; + m = local_time->tm_mon + 1; + d = local_time->tm_mday; + h = *gregorian_to_jalali (y, m, d); + scal (h.mon, h.year); + } + if (argc == 2) + { - if (atoi (argv[argc - 1]) < 990) - + if (atoi (argv[argc - 1]) < 990) + { - printf ("%s is out of range.enter a year greater than 990.", - argv[argc - 1]); - exit (0); - } - for (i = 1; i <= 12; i++) - scal (i, atoi (argv[argc - 1])); - exit (0); - } - if (argc == 3) - + printf ("%s is out of range.enter a year greater than 990.", + argv[argc - 1]); + exit (0); + } + for (i = 1; i <= 12; i++) + scal (i, atoi (argv[argc - 1])); + exit (0); + } + if (argc == 3) + { - if (atoi (argv[argc - 2]) < 990) - + if (atoi (argv[argc - 2]) < 990) + { - printf ("%s is out of range.enter a year greater than 990.", - argv[argc - 2]); - exit (0); - } - if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > 12) - + printf ("%s is out of range.enter a year greater than 990.", + argv[argc - 2]); + exit (0); + } + if (atoi (argv[argc - 1]) < 1 || atoi (argv[argc - 1]) > 12) + { - printf - ("%s is out of range.enter a month greater than 0 and lower than 13.", + printf + ("%s is out of range.enter a month must be beetwen 0 and 12.", argv[argc - 1]); - exit (0); - } - scal (atoi (argv[argc - 1]), atoi (argv[argc - 2])); - exit (0); - } - } - - + exit (0); + } + scal (atoi (argv[argc - 1]), atoi (argv[argc - 2])); + exit (0); + } + return (0); +}