🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #984

Re: escribir el tamano de un fichero en otro, pero no en ascii

#984
From: heltena
Date: Mon, 24 Jul 2006 17:20
92 lines
4055 bytes
De momento lo he hecho en Python con el siguiente código,
¿alternativa en Bash?


#!/usr/bin/env python

import sys

def main(args):
        if len(args) != 2:
                print >>sys.stderr, "esto no chuta!"
                sys.exit(-1)
        f = open(args[1], "rb")
        f.seek(0, 2)    # end of file
        sz = f.tell()
        f.close()

        c1 = (sz >> 24) & 0xFF
        c2 = (sz >> 16) & 0xFF
        c3 = (sz >>  8) & 0xFF
        c4 = sz         & 0xFF
        print "%c%c%c%c" % (c1, c2, c3, c4)


if __name__ == "__main__":
        main(sys.argv)


heltena ha escrito:

> Para olvidar se me ha olvidado decir que hasta ahora estoy usando bash
> y dd.
>
> Quizás mejor explicar el problema general para dar una idea. Tengo
> ficheros con los que quiero hacer una "ISO", pero como me es costoso
> programar una FAT o algo parecido, pues me monto mi propio sistema de
> ficheros "cutre" que ya me va bien. Mi sistema de ficheros sera:
> offset 0x00000000: primer fichero.
> offset 0x01000000: segundo fichero.
> offset ox02000000: tercer fichero.
> y así hasta que se acabe el disco.
>
> Cada fichero:
> offset 0: tamano del fichero en 4 bytes (big endian)
> offset 512: raw del fichero hasta que el tamano diga. (512 porque es el
> tamano del sector)
>
> Es para un cacharro de electrónica. Los ficheros serán unos que se
> determinen y punto. Y si se pierde mucha memoria ... da igual, se copia
> en una SDCard que vale menos 20eur.
>
> Lo que tengo hasta ahora es el siguiente script:
>
> #!/usr/bin/env bash
> GAP=$((0x01000000 / 512))
> INDEX=0
> dd if=/dev/zero of=imagen.iso bs=512 count=1024K
> for file in *.ub ; do
>         echo Aquí tendría que escribir en $((GAP)) el tamano del
> fichero
>         dd if=$file of=imagen.iso bs=512 seek=$((GAP * INDEX + 1))
>         INDEX=$((INDEX+1))
> done
>
>
> Despues:
> dd if=imagen.iso of=/dev/sdb bs=512
>
>
>
> heltena ha escrito:
>
> > Hola,
> >
> > Quiero escribir el tamano de un fichero dentro de otro fichero, pero en
> > binario, osea, los cuatro bytes. Es para preparar un fichero que
> > después leo desde C. Me interesa leer los cuatro bytes y cargarlos
> > directos en un int con un codigo parecido a este:
> >
> > fread(&value, 4, 1, f);  /* solo es un ejemplo */
> >
> > ¿cómo puedo hacerlo?
> >
> > Gracias hasta ahora!
> >
> > PD: necesito que sea así porque el código se ejecutará en un PIC
> > (leyendo una tarjeta SD) y no es que tenga muchas facilidades en ese
> > procesador.
> > 
> > 
> > -- 
> > Saludos
Technical Details
Message-ID: <1153761630.935462.277010@b28g2000cwb.googlegroups.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!b28g2000cwb.googlegroups.com!not-for-mail
References: <1153759345.956147.65760@s13g2000cwa.googlegroups.com> <1153759759.899777.188880@p79g2000cwp.googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,15d891730dc7298
X-Google-Attributes: gidf86c8,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!b28g2000cwb.googlegroups.com!not-for-mail
From: "heltena" <heltena@gmail.com>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: escribir el tamano de un fichero en otro, pero no en ascii
Date: 24 Jul 2006 10:20:31 -0700
Organization: http://groups.google.com
Lines: 93
Message-ID: <1153761630.935462.277010@b28g2000cwb.googlegroups.com>
References: <1153759345.956147.65760@s13g2000cwa.googlegroups.com>
   <1153759759.899777.188880@p79g2000cwp.googlegroups.com>
NNTP-Posting-Host: 193.147.222.244
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1153761636 11146 127.0.0.1 (24 Jul 2006 17:20:36 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Mon, 24 Jul 2006 17:20:36 +0000 (UTC)
In-Reply-To: <1153759759.899777.188880@p79g2000cwp.googlegroups.com>
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060406 Firefox/1.5.0.4 (Debian-1.5.dfsg+1.5.0.4-1),gzip(gfe),gzip(gfe)
Complaints-To: groups-abuse@google.com
Injection-Info: b28g2000cwb.googlegroups.com; posting-host=193.147.222.244;
   posting-account=ljKoDA0AAABEvzHlRrQ7YAIM9PPVxdEL