depre

Afficher la date et l'heure hexadécimale
git clone git://git.asteride.xyz/depre.git
Journaux | Fichiers | Références | LISEZ-MOI | LICENCE

depre_cgi.c (1216B)


      1 /* depre_cgi, afficher la date et l’heure sur le web selon la représentation
      2  * hexadécimale du temps dêpre
      3  * par ldp <ldp@asteride.xyz>
      4  * Ce programme est distribué sous la licence libre GPLv3
      5  */
      6 
      7 #include <stdio.h>
      8 #include <stdlib.h>
      9 #include <string.h>
     10 #include <time.h>
     11 
     12 #include "commun.h"
     13 
     14 int
     15 main(void)
     16 {
     17 	unsigned jours, barres;
     18 	char *p, *signe, *requete;
     19 	time_t zero, secondes;
     20 	int zerov, secondesv;
     21 
     22 	zerov = secondesv = 0;
     23 
     24 	requete = getenv("QUERY_STRING");
     25 
     26         /* parcourir la requête à la recherche des paramètres « secondes » et «
     27          * zero » */
     28 	for (p = strtok(requete, "&"); p; p = strtok(NULL, "&")) {
     29 		if (strncmp("secondes=", p, 9) == 0) {
     30 			if (ccvt(p + 9, &secondes) < 0)
     31 				goto err_requete;
     32 			secondesv = 1;
     33 		} else if (strncmp("zero=", p, 5) == 0) {
     34 			if (ccvt(p + 5, &zero) < 0)
     35 				goto err_requete;
     36 			zerov = 1;
     37 		}
     38 	}
     39 
     40 	if (!secondesv)
     41 		secondes = time(NULL);
     42 	if (!zerov)
     43 		zero = ZERO_DEF;
     44 
     45 	if (depre(zero, secondes, &jours, &barres) < 0)
     46 		signe = "-";
     47 	else
     48 		signe = "";
     49 
     50 	printf("Content-type: text/plain; charset=utf-8\n\n");
     51 	printf("%s%x.%x\n", signe, jours, barres);
     52 
     53 	return 0;
     54 
     55 err_requete:
     56 	printf("Status: 400 Bad request\n\n");
     57 }