La fonction stat en Scheme

Bonjour,

Rien trouvé dans le manuel de Guile à ce sujet...

Dans ces fonctions :

#(define comml (object->string (command-line)))
#(define loc (+ (string-rindex comml #\space ) 2))
#(define commllen (- (string-length comml) 2))
#(define filen (substring comml loc commllen))
#(define siz (object->string (stat:size (stat filen))))
#(define ver (object->string (lilypond-version)))
#(define dat (strftime "%d/%m/%Y" (localtime (current-time))))
#(define tim (strftime "%H:%M:%S" (localtime (current-time))))
#(define modTime (stat:mtime (stat filen)))
#(define modTimeAsString (strftime "%d/%m/%Y - %H:%M:%S" (localtime modTime)))

(stat filen) ne fonctionne pas pour un fichier dans un sous-dossier comme lilypond/NonStandardTuplet.ly, il faut être dans le dossier 'lilypond' pour obtenir les infos sur le fichier (c'est la date de création/modification dont j'ai besoin), et modTimeAsString contient simplement la chaîne "modTimeAsString" dans ce cas.

Que dois-je écrire pour que ce code fonctionne dans tous les cas de figure?
Merci, et bonne année 2024!

JM

Pour Moi Ça Marche (®). Est-ce que tu aurais un exemple reproductible qui ne fonctionne pas ?

Note quand même que lire l'invocation en ligne de commande pour en extraire le nom du fichier courant n'est probablement pas robuste aux espaces dans les noms de fichiers, et surtout, ça ne va pas marcher s'il y a des options. Il est largement préférable de faire quelque chose comme

file-name  = #(first (ly:input-file-line-char-column (*location*)))
file-stat  = #(stat file-name)
file-size = #(stat:size file-stat)
compilation-datetime = #(localtime (current-time))
modification-datetime = #(localtime (stat:mtime file-stat))
compilation-date = #(strftime "%d/%m/%Y" compilation-datetime)
compilation-time = #(strftime "%H:%M:%S" compilation-datetime)
modification-date = #(strftime "%d/%m/%Y" modification-datetime)
modification-time = #(strftime "%H:%M:%S" modification-datetime)

#(display compilation-date)
\markup {
  Compilation \compilation-date \compilation-time
  | Modification \modification-date \modification-time
}