[ kunalagon @ 07.01.2007. 13:06 ] @
Izgleda da je nemoguce napraviti iso od fajla veceg od 4 GB (4294967296 bajtova ), jer kako sam video i procitao mkisofs koristi 32bitan broj za duzino fajla i naravno ni jedan bajt veci fajl ne moze da stavi za pravljenje isofs-a. Autor cdrtools-a redovno izbacuje nove verzije a ne pada mu napamet da se pozabavi sa ovim problemom. Kaze da ima neka opcija deljenja fajla pa da ga onda cdrecord sklapa i sl. ali to naravno ne moze da radi u vecini GUI-a za cdrtools. ISO fajl sistem kako sam video ima ogranicenje velicine fajla u njenu na 2 GB, ali pomocu UDF strukture (ili fajls sitema) moguce je napraviti i od mnogo vecih fajlova, u mountovati normalno. Ovo je moguce uraditi jer znam da nero moze da napravi iso i od fajlova vecih od 6-7 GB (koliko sam probao). evo tog fajla gde mkisofs proverava velicinu fajla (getnum.c): Code: /* @(#)getnum.c 1.3 06/09/13 Copyright 1984-2002, 2004 J. Schilling */ #ifndef lint static char sccsid[] = "@(#)getnum.c 1.3 06/09/13 Copyright 1984-2002, 2004 J. Schilling"; #endif /* * Number conversion routines to implement 'dd' like options. * * Copyright (c) 1984-2002, 2004 J. Schilling */ /* * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * See the file CDDL.Schily.txt in this distribution for details. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file CDDL.Schily.txt from this distribution. */ #include <schily/mconfig.h> #include <schily/standard.h> #include <schily/utypes.h> #include <schily/schily.h> LOCAL Llong number __PR((char *arg, int *retp)); EXPORT int getnum __PR((char *arg, long *valp)); EXPORT int getllnum __PR((char *arg, Llong *lvalp)); LOCAL Llong number(arg, retp) register char *arg; int *retp; { Llong val = 0; if (*retp != 1) return (val); if (*arg == '\0') { *retp = -1; } else if (*(arg = astoll(arg, &val))) { if (*arg == 'p' || *arg == 'P') { val *= (1024*1024); val *= (1024*1024*1024); arg++; } else if (*arg == 't' || *arg == 'T') { val *= (1024*1024); val *= (1024*1024); arg++; } else if (*arg == 'g' || *arg == 'G') { val *= (1024*1024*1024); arg++; } else if (*arg == 'm' || *arg == 'M') { val *= (1024*1024); arg++; } else if (*arg == 'f' || *arg == 'F') { val *= 2352; arg++; } else if (*arg == 's' || *arg == 'S') { val *= 2048; arg++; } else if (*arg == 'k' || *arg == 'K') { val *= 1024; arg++; } else if (*arg == 'b' || *arg == 'B') { val *= 512; arg++; } else if (*arg == 'w' || *arg == 'W') { val *= 2; arg++; } if (*arg == '*' || *arg == 'x') val *= number(++arg, retp); else if (*arg != '\0') *retp = -1; } return (val); } EXPORT int getnum(arg, valp) char *arg; long *valp; { Llong llval; int ret = 1; llval = number(arg, &ret); *valp = llval; if (*valp != llval) { errmsgno(EX_BAD, "Value %lld is too large for data type 'long'.\n", llval); ret = -1; } return (ret); } EXPORT int getllnum(arg, lvalp) char *arg; Llong *lvalp; { int ret = 1; *lvalp = number(arg, &ret); return (ret); } |