static int ast_say_number_full_fr(struct ast_channel *chan, int num, char *ints, char *language, char *options, int audiofd, int ctrlfd) { int res = 0; int playh = 0; int playa = 0; int mf = 1; /* +1 = Masculin; -1 = Feminin */ char fn[256] = ""; if (!num) return ast_say_digits_full(chan, 0,ints, language, audiofd, ctrlfd); if (options && !strncasecmp(options, "f",1)) mf = -1; while(!res && (num || playh || playa)) { if (playh) { snprintf(fn, sizeof(fn), "digits/hundred"); playh = 0; } else if (playa) { snprintf(fn, sizeof(fn), "digits/et"); playa = 0; } else if (num == 1) { if (mf < 0) snprintf(fn, sizeof(fn), "digits/%dF", num); else snprintf(fn, sizeof(fn), "digits/%d", num); num = 0; } else if (num < 21) { snprintf(fn, sizeof(fn), "digits/%d", num); num = 0; } else if (num < 70) { snprintf(fn, sizeof(fn), "digits/%d", (num/10)*10); if ((num % 10) == 1) playa++; num = num % 10; } else if (num < 80) { snprintf(fn, sizeof(fn), "digits/60"); if ((num % 10) == 1) playa++; num = num - 60; } else if (num < 100) { snprintf(fn, sizeof(fn), "digits/80"); num = num - 80; } else if (num < 200) { snprintf(fn, sizeof(fn), "digits/hundred"); num = num - 100; } else if (num < 1000) { snprintf(fn, sizeof(fn), "digits/%d", (num/100)); playh++; num = num % 100; } else if (num < 2000) { snprintf(fn, sizeof(fn), "digits/thousand"); num = num - 1000; } else if (num < 1000000) { res = ast_say_number_full_fr(chan, num / 1000, ints, language, options, audiofd, ctrlfd); if (res) return res; snprintf(fn, sizeof(fn), "digits/thousand"); num = num % 1000; } else if (num < 1000000000) { res = ast_say_number_full_fr(chan, num / 1000000, ints, language, options, audiofd, ctrlfd); if (res) return res; snprintf(fn, sizeof(fn), "digits/million"); num = num % 1000000; } else { ast_log(LOG_DEBUG, "Number '%d' is too big for me\n", num); res = -1; } if (!res) { if(!ast_streamfile(chan, fn, language)) { if (audiofd && ctrlfd) res = ast_waitstream_full(chan, ints, audiofd, ctrlfd); else res = ast_waitstream(chan, ints); } ast_stopstream(chan); } } return res; }