Compiler diglog sous macos


#1

Coucou,

J’essaie de compiler un vieux simulateur logique, log, sous macos.
Seulement le programme utilise une fonction, cuserid(), qui ne semble pas avoir été incluse dans le port macos de la gnulib :
https://www.gnu.org/software/gnulib/manual/html_node/cuserid.html

La doc de la fonction :
https://linux.die.net/man/3/cuserid

Une partie du code de psys/log qui l’utilise :

Static Void tracemessage(msg)
Char *msg;
{
  if (!gg.traceflag)
    return;
  if (!gg.traceopen) {
    if (*tracefname == '\0') {
      do {
    sprintf(tracefname, "/tmp/%.10s%03ld",
        /* P_citinfo->username, P_rand(&gg.rndseed, 1000L)); */
        cuserid(NULL), P_rand(&gg.rndseed, 1000L));

      } while (access(tracefname, F_OK) == 0);
    }
    if (tracefile != NULL)
      tracefile = freopen(tracefname, "a", tracefile);
    else
      tracefile = fopen(tracefname, "a");
    if (tracefile == NULL)
      _EscIO(FileNotFound);
    gg.traceopen = true;
  }
  fprintf(tracefile, "%s\n", msg);
}

Est-ce qu’un C guru (@Fanch ? @Jumbef ?) parmi vous pourrait m’éclairer sur la modification à apporter ?
De ce que je comprends, la fonction renvoie un pointeur vers un string avec mon nom d’utilisateur. Peut-être qu’on peut le remplacer en dur dans le code ?

Bises,


#2

OK, j’ai remplacé cuserid() par getlogin() d’après ce post : https://stackoverflow.com/a/8332251 partout où je l’ai trouvé dans le code.

Ça semble avoir fonctionné :

https://imgur.com/whLFHui

À moi les additionneurs 8 bits !