Página 5 de 5

Re: Ayuda con script de linux

Publicado: 06 Jul 2016, 21:27
por Querubin
Si, con front end me refiero a la aplicación iecata. Antes al pulsar "s" se supone que se salía de la aplicación pero no reconocía el comando. Se lo comenté a arananet, lo corrigió y subió de nuevo a su blog.

Pues si me explicas como implementar los cambios al nuevo unix.c de arananet lo intento y lo guardo como la versión más avanzada.

Claro, si no tienes el cacharro igual tampoco te merece la pena meterte en más lio. Por eso decía que tu ponias los límites. Si en algún momento te animas con el cacharrito y a hacer algo mas allá cuenta conmigo para lo que quieras. Aunque te bastas tu solito desde luego. Yo te estoy muy agradecido por el tiempo que has dedicado a esto que solo yo por ahora voy a disfrutar.

Re: Ayuda con script de linux

Publicado: 06 Jul 2016, 21:45
por overCLK
querubin escribió:Si, con front end me refiero a la aplicación iecata. Antes al pulsar "s" se supone que se salía de la aplicación pero no reconocía el comando. Se lo comenté a arananet, lo corrigió y subió de nuevo a su blog.

Pues si me explicas como implementar los cambios al nuevo unix.c de arananet lo intento y lo guardo como la versión más avanzada.

Claro, si no tienes el cacharro igual tampoco te merece la pena meterte en más lio. Por eso decía que tu ponias los límites. Si en algún momento te animas con el cacharrito y a hacer algo mas allá cuenta conmigo para lo que quieras. Aunque te bastas tu solito desde luego. Yo te estoy muy agradecido por el tiempo que has dedicado a esto que solo yo por ahora voy a disfrutar.

Aaah, vale. Es que en la versión original, el comando para salir es 'q'. :)

Sobre como implementar los cambios, te paso un diff:
--- unix.c.orig	2016-07-06 17:33:02.014590673 +0200
+++ unix.c	2016-07-06 17:59:10.718630839 +0200
@@ -53,6 +53,12 @@
 #include <stdlib.h>
 #include <ctype.h>
 #include <string.h>
+#include <sys/stat.h>
+#include <linux/fs.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
 
 /* protos *****************************************************************/
 
@@ -66,9 +72,36 @@
 
 /* functions **************************************************************/
 
+static block_t getDeviceSize(const char *path) {
+  struct stat data;
+  block_t size = 0;
+  if (stat(path, &data) == 0) {
+    if (data.st_rdev) {
+      long long bytes = 0;
+      int fd = open(path, O_RDONLY);
+      if (fd > -1) {
+        if (ioctl(fd, BLKGETSIZE64, &bytes) == 0) {
+          size = bytes / 512;
+        } else {
+          perror("Error getting device size");
+        }
+        close(fd);
+      } else {
+        perror("Opening device");
+      }
+    } else {
+      size = data.st_size / 512;
+    }
+  } else {
+    perror("Unable to stat file");
+  }
+  printf("Device size: %d\n", size);
+  return size;
+}
+
 int main (int argc, char *argv[]) {
   if (argc == 2) {
-
+    totalDiskSize = getDeviceSize(argv[1]);
     /* open file to the entire hard drive */
     if ((fp = fopen (argv[1], "r+b"))) {
Copia y pega eso a un fichero, llámalo por ejemplo unix.patch.
Luego vas al directorio del software original y haces
patch -p0 < unix.patch
Eso debería darte unos mensajes y decirte si has parcheado bien los fuentes.

Ya me cuentas.

Re: Ayuda con script de linux

Publicado: 07 Jul 2016, 10:02
por Querubin
No se porqué pero se comporta como si no se parcheara. Es decir, no aparece el tamaño del disco y formatea solo los 50 MB.
Al final lo que he hecho ha sido coger tu unix.c cambiar la q por la s y a correr.

Al formatear esta vez "No puedo encontrar el bloque" lo he dejado y es posible que sea error del propio disco porque tras varios mensajes ha seguido formateando y ha terminado con "Disco formateado correctamente!."

Una cosilla que me está fastidiando es que no copia los directorios alfabéticamente por lo que, con los nombrecitos que les he puesto a las carpetas al listarlo en el C64 salen desordenados y es un engorro.
Sería complicado hacer algo?

Re: Ayuda con script de linux

Publicado: 07 Jul 2016, 10:24
por overCLK
querubin escribió:No se porqué pero se comporta como si no se parcheara. Es decir, no aparece el tamaño del disco y formatea solo los 50 MB.
Al final lo que he hecho ha sido coger tu unix.c cambiar la q por la s y a correr.

Al formatear esta vez "No puedo encontrar el bloque" lo he dejado y es posible que sea error del propio disco porque tras varios mensajes ha seguido formateando y ha terminado con "Disco formateado correctamente!."

Una cosilla que me está fastidiando es que no copia los directorios alfabéticamente por lo que, con los nombrecitos que les he puesto a las carpetas al listarlo en el C64 salen desordenados y es un engorro.
Sería complicado hacer algo?

Supongo que después de parchear habrás vuelto a compilar el ejecutable, ¿no? Ejecutar 'make' de nuevo. ¿Qué mensaje te saca el comando patch?

Sobre eso del ordenado, sospecho que es cosa de la implementación de los comandos aunque la implementación creo que es común para el iecata y para el frontend y yo diría que a mi en el frontend me salen ordenados. ¿Cómo te salen en el frontend a ti en el disco que has creado?

Re: Ayuda con script de linux

Publicado: 07 Jul 2016, 10:25
por Querubin
Perdón, tenía que parchear y luego make. Todo correcto.

Y al cambiar el unix.c antes nada.

Re: Ayuda con script de linux

Publicado: 07 Jul 2016, 11:12
por Querubin
En la aplicación me salen desordenados también.