Muy bueno el analisis del comportamiento del ls!!!  No sabia como 
funcionaba internamente. Solo sabia que lo hacia, jejeje... Es bueno 
saber porque se comporta de esa manera .

Gracias por el esfuerzo!!


Alejandro.



>>>>>>>>>>>>>>>>>> Mensaje original <<<<<<<<<<<<<<<<<<

El 3/01/02, 12:31:13, "Sebasti�n D. Criado" <[EMAIL PROTECTED]> 
escribi� sobre el tema Re: [LUG.ro] Algo raro con el nfs:


> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1


> El ls -l muestra los sig datos:

> los permisos del archivo, el n�mero de� enlaces�que� tiene,� el� 
nombre�del���
> propietario,� el� del� grupo al que pertenece, el tama�o (en bytes), una
> marca de tiempo, y el nombre�del� archivo.

> De forma� predeterminada,�la marca de tiempo que se muestra es la de la
> �ltima modificaci�n.

> Al parecer, lo que sucede es culpa del ls, el cual pertenece al paquete
> fileutils por lo que busque los fuentes del paquete para ver como estaba 
el
> archivo ls.c. Mis conocimientos de C son b�sicos, as� que perdonen si 
meto la
> pata ; ))

> Hab�a dicho antes que toma el tiempo de modificaci�n por defecto para 
mostrar
> o time_mtime. Si nos fijamos en los fuentes hay una comparaci�n que se 
hace
> para ver que tiempo pone.

> Cando se ejecuta el ls -l hay un case tendr�a que setear a 1 a la 
variable
> full_time en caso de que se ponga el indicador --full-time.
> Dado que con ls -l esto no ocurre, tomara el camino del false.

> Hay un if que lo eval�a para determinar la forma de mostrar el tiempo:

> if (full_time)
>       long_time_format[0] = long_time_format[1] =
>       dcgettext (NULL, "%a %b %d %H:%M:%S %Y", LC_TIME);
> else
>       {
>       long_time_format[0] = dcgettext (NULL, "%b %e %Y, LC_TIME);
>       long_time_format[1] = dcgettext (NULL, "%b %e %H:%M", LC_TIME);
>       }

> Al setear esta forma, luego hace una comparaci�n del tiempo, para ver si 
el
> archivo tiene un tiempo de modificaci�n reciente o no.
> Esto lo hace haciendo una peque�a cuenta que se fija si es menor a 6 
meses
> con lo que sabe que es reciente.

> La cantidad de segundos en un a�o se calcula con el calendario Gregoriano 
que
> es 365.2425 * 24 * 60 *60 = 31556952 segundos.

> El tiempo actual es tomado desde los segundos que pasaron desde 1970 
hasta el
> tiempo marcado en el mtime.

> static time_t current_time = TYPE_MINIMUM (time_t);
> static int current_time_ns = -1;

> Entonces veamos algunas cuentas las cuales se hacen empleando la sig
> estructura.

> six_months_ago = current_time - 31556952 / 2;
>       recent = (six_months_ago <= when && (when < current_time
>                     || (when == current_time && when_ns <= 
current_time_ns)));
>       fmt = long_time_format[recent];


> Al comparar, cuando paso un minuto la variable recent se pone en 0, antes 
de
> ese minuto se seteo en 1

> Recordemos que:
> long_time_format[0] = dcgettext (NULL, "%b %e %Y, LC_TIME);
> long_time_format[1] = dcgettext (NULL, "%b %e %H:%M", LC_TIME);

> Por lo que parece, despues de haber puesto toda esta chorrada, no ha 
sabido
> el ls si el archivo tine mas o menos de 6 meses, por lo cual ha puesto 
mal la
> variable long_time_format que es la que indica como se mostrara en el 
comando
> ls -l el tiempo definido en mtime, que es el usado por defecto.

> Resta para Uds un peque�o ejercicio que no he podido hacer por falta de
> tiempo y es determinar dado los datos del mail de Alejandro si al pasar 
un
> minuto despues de las 12:00 del 2 de Enero de 2002, la comparaci�n para 
ver
> si es mas viejo que 6 meses se esta seteando mal.

> Espero que se entienda ; ))

> Si, ya se, me lime ; ))

> Saludos.-



> El Thursday 03 January 2002 10:38, Alejandro Gomez Fernandez escribi�:
> > Esto que les muestro es lo que yo llamo �raro�:
> >
> > -rw-r--r-- 1 102 101 1156 ene 2 11:59 pallet_200201020099_316_2736.txt
> > -rw-r--r-- 1 102 101 1156 ene 2 11:59 pallet_200201020104_316_2741.txt
> > -rw-r--r-- 1 102 101 1156 ene 2 11:59 pallet_200201020103_316_2740.txt
> > -rw-r--r-- 1 102 101 1156 ene 2 11:59 pallet_200201020102_316_2739.txt
> > -rw-r--r-- 1 102 101 1156 ene 2 12:00 pallet_200201020105_317_2742.txt
> > -rw-r--r-- 1 102 101 1169 ene 2 2002 pallet_200201020106_318_2743.txt
> > -rw-r--r-- 1 102 101 1153 ene 2 2002 pallet_200201020109_319_2746.txt
> > -rw-r--r-- 1 102 101 1153 ene 2 2002 pallet_200201020108_319_2745.txt
> > -rw-r--r-- 1 102 101 1153 ene 2 2002 pallet_200201020107_319_2744.txt
> > -rw-r--r-- 1 102 101 1153 ene 2 2002 pallet_200201020110_319_2747.txt
> >
> > Lo notan? Para verlo van a necesitar un programa de correo que soporte
> > html...
> > Para aquellos que no lo tengan al ver este mail, les cuento que
> > normalmente, despues de la fecha (mes y dia) aparece la hora de la ultima
> > modificacion del archivo en cuestion. (En este caso tambien es la fecha
> > de creacion). Ahora, Si se fijan, en los ultimos 5 archivos de esta
> > muestra, la hora �magicamente� se transformo en el a�o!!!! Estos archivos
> > se crearon el mismo dia, en orden consecutivo dado por la secuencia de
> > los digitos que continuan a la palabra pallet_20020102xxxx .
> > Lo de los numeros 102 y 101 son los el usuario y grupo del servidor
> > original y que no existen en mi equipo...
> >
> > Alguna idea?
> >
> > Gracias!!!
> >
> >
> > Alejandro.

> - --
> - --
> Sebasti�n D. Criado - [EMAIL PROTECTED]
> L.U.G.R.o - http://www.lugro.org.ar
> Linux Registered User # 146768
> - -------------------------------------------------------------------
> "Si el Universo fuera un programa estar�a hecho en C, y correr�a sobre
> un sistema UNIX"
>                                                     An�nimo.
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.0.6 (GNU/Linux)
> Comment: For info see http://www.gnupg.org

> iD8DBQE8NHlJ8hmHQ8ZCg0IRAimeAJ9PEjqfo/cnSmIXCqU6WR4PDyH12QCgqGnb
> vMa9RlHv2eTCFzFU3ks7pIY=
> =cVwn
> -----END PGP SIGNATURE-----

Responder a