Article View: es.comp.os.linux.programacion
Article #984Re: escribir el tamano de un fichero en otro, pero no en ascii
From: heltena
Date: Mon, 24 Jul 2006 17:20
Date: Mon, 24 Jul 2006 17:20
92 lines
4055 bytes
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-mailReferences:
<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