9 #define HOUR ((MINUTE) * 60)
10 #define DAY ((HOUR) * 24)
11 #define MONTH ((DAY) * 30)
12 #define YEAR ((MONTH) *12)
14 /* TODO: find a configurable way to format the number.
15 * Right now it's: 1-234-567-8901 as per
16 * http://en.wikipedia.org/wiki/Local_conventions_for_writing_telephone_numbers#North_America
18 * IDEA: use ordered set of regexp -> replacement.
20 char *phone_format(const char *number)
29 slen = strlen(number);
33 if ((slen <= 4) || (slen > 12))
36 if ((slen == 12) && (number[0] != '+'))
39 for (i = 0; i < slen; i++) {
40 if ((number[i] < '0') || (number[i] > '9')) {
41 if ((number[i] == '+') && (i == 0))
47 d = eina_strbuf_new();
48 eina_strbuf_append_length(d, number, slen);
49 eina_strbuf_insert_char(d, '-', slen - 4);
51 eina_strbuf_insert_char(d, '-', slen - 7);
52 if ((slen > 10) && (number[slen - 11] != '+'))
53 eina_strbuf_insert_char(d, '-', slen - 10);
56 ret = eina_strbuf_string_steal(d);
61 return strdup(number);
64 char *date_format(time_t date)
66 time_t now = time(NULL);
67 double dt = difftime(now, date);
72 r = asprintf(&buf, "Just now");
73 else if (dt < (MINUTE + 30))
74 r = asprintf(&buf, "One minute ago");
75 else if (dt < (HOUR + 100))
76 r = asprintf(&buf, "%d minutes ago", (int)dt/60);
77 else if (dt < (HOUR * 4))
78 r = asprintf(&buf, "%d hours ago", (int)dt/3600);
80 struct tm *f_time = gmtime(&date);
81 EINA_SAFETY_ON_NULL_GOTO(f_time, err_gmtime);
82 r = asprintf(&buf, "%02d:%02d", f_time->tm_hour,
84 } else if(dt < MONTH){
87 EINA_SAFETY_ON_NULL_GOTO(gmtime_r(&now, &f_now), err_gmtime);
88 EINA_SAFETY_ON_NULL_GOTO(gmtime_r(&date, &f_time), err_gmtime);
89 r = asprintf(&buf, "%d days ago",
90 f_now.tm_mday - f_time.tm_mday);
91 } else if (dt < YEAR) {
94 EINA_SAFETY_ON_NULL_GOTO(gmtime_r(&now, &f_now), err_gmtime);
95 EINA_SAFETY_ON_NULL_GOTO(gmtime_r(&date, &f_time), err_gmtime);
96 r = asprintf(&buf, "%d months ago",
97 f_now.tm_mon - f_time.tm_mon);
101 EINA_SAFETY_ON_NULL_GOTO(gmtime_r(&now, &f_now), err_gmtime);
102 EINA_SAFETY_ON_NULL_GOTO(gmtime_r(&date, &f_time), err_gmtime);
103 r = asprintf(&buf, "%d years ago",
104 f_now.tm_year - f_time.tm_year);