Subject: [LilyPond] [Général] La fonction stat en Scheme

From: Jacques Menu via LilyPond <[email-masked]>
Date: Mon, 08 Jan 2024 10:47:00 +0000

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 poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/la-fonction-stat-en-scheme/5603/1).

Pour créer un nouveau sujet, écrivez à [[email-masked]](mailto:[email-masked]) ou visitez la [page d'accueil de lilypond.community](https://lilypond.community).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Wed, 10 Jan 2024 17:53:43 +0000

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
}
```

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/la-fonction-stat-en-scheme/5603/2).