personaje, el 18 de enero a las 13:53 me escribiste:
> Hola gente,
>
> Existe una funcion C++ portable para reservar espacio de disco para
> un archivo?
Definí "reservar" y "portable" =)
> Estoy usando std::ostream::seekp para llevar el puntero al final
> del archivo, escribo 1 byte y luego lo llevo al inicio. Es una
> cabezonada o una solución elegante?
Ampliamente cabeza, o no portable, o ambas =)
Mirá:
[EMAIL PROTECTED]:/tmp$ cat t.cpp
#include <iostream>
#include <fstream>
int main()
{
std::ofstream fo("/tmp/salida");
fo.seekp(1 << 20);
fo << 'c';
return 0;
}
[EMAIL PROTECTED]:/tmp$ make t
g++ t.cpp -o t
[EMAIL PROTECTED]:/tmp$ ./t
[EMAIL PROTECTED]:/tmp$ ls -l salida
-rw-rw-r-- 1 luca luca 1048577 2008-01-18 14:30 salida
[EMAIL PROTECTED]:/tmp$ # ^^^^^^^ ohhh! muchos bytes!
[EMAIL PROTECTED]:/tmp$ du salida
4 salida
[EMAIL PROTECTED]:/tmp$ # En realidad no. du nos tira la papa.
Qué pachó?! Sparse files[1].
Tal vez deberías escribir todos ceros para que eso funcione y sea
"portable".
[1] http://en.wikipedia.org/wiki/Sparse_file
--
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
There is no such thing as right or wrong
Only consequences
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion