UTIME(2)

NOME
utime, utimes - cambia la data di accesso e/o di modifica di un inode

SINTASSI
#include <sys/types.h>
#include <utime.h>

int utime(const char *filename, const struct utimbuf *buf);

#include <sys/time.h>

int utimes(const char *filename, const struct timeval times[2]);

DESCRIZIONE
utime() cambia le date di accesso e modifica di un inode specificato da filename rispettivamente con quelle contenute nei campi actime e modtime di buf. Se buf č NULL, allora le date di accesso e modifica del file sono impostate a quella corrente. Cambiare data e ora č permesso quando: o il processo ha i privilegi appropriati (Linux: ha capacitą CAP_FOWNER), o la user ID effettiva dell'utente č uguale alla user ID del file, o buf č NULL e il processo ha permessi di scrittura sul file. La struttura utimbuf č la seguente:
    struct utimbuf {
        time_t actime;       /* ora di accesso */
        time_t modtime;      /* ora di modifica */
    };
La funzione utime() permette di specificare data e ora con una risoluzione di 1 secondo.

  utimes()
La funzione utimes() č simile, ma gli argomenti di times permettono una risoluzione di 1 microsecondo. La struttura timeval č la seguente:
    struct timeval {
        long tv_sec;        /* secondi */
        long tv_usec;       /* microsecondi */
    };

times[0] specifica la nuova ora di accesso, e times[1] specifica la nuova ora di modifica. Se times č NULL, analogamente a utime(), le date di accesso e modifica del file sono impostate a quelle correnti.

VALORI RESTITUITI
In caso di successo viene restituito zero. In caso di errore viene restituito -1 e errno contiene il codice di errore verificatosi.

ERRORI

EACCES
    Il permesso di ricerca č negato per una delle directory nel prefisso del percorso di path (vedere anche path_resolution(2)), o buf č NULL e il processo non ha il permesso di cambiare data e ora (vedere sopra).

ENOENT
    filename non esiste.

EPERM
    buf non č NULL e il processo non ha il permesso di cambiare data e ora.

EROFS
    path risiede su un filesystem in sola lettura.

CONFORME A
utime(): SVr4, POSIX.1-2001.
utimes(): 4.3BSD

NOTE
Linux non permette di cambiare data e ora su un file immutabile, o di impostarle a qualcosa di diverso dall'ora corrente in un file di tipo append-only. In libc4 e libc5, utimes() č solo un wrapper per utime() e quindi non permette una risoluzione inferiore al secondo. POSIX.1-2001 annota utimes() come legacy, che č strano, poiché fornisce pił funzionalitą di utime().

BACHI
Linux non č attento a distinguere tra i ritorni di errore EACCES e EPERM. D'altra parte POSIX.1-2001 č bacato nella sua descrizione dell'errore utimes().

VEDERE ANCHE
chattr(1), futimesat(2), stat(2), futimes(3)