You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(98) |
Sep
(138) |
Oct
(100) |
Nov
(49) |
Dec
(131) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(94) |
Feb
(65) |
Mar
(100) |
Apr
(83) |
May
(72) |
Jun
(29) |
Jul
(167) |
Aug
(127) |
Sep
(131) |
Oct
(269) |
Nov
(122) |
Dec
(100) |
2005 |
Jan
(228) |
Feb
(266) |
Mar
(63) |
Apr
(135) |
May
(157) |
Jun
(52) |
Jul
(25) |
Aug
(49) |
Sep
(184) |
Oct
(159) |
Nov
(75) |
Dec
(37) |
2006 |
Jan
(60) |
Feb
(129) |
Mar
(110) |
Apr
(34) |
May
(31) |
Jun
(42) |
Jul
(72) |
Aug
(90) |
Sep
(57) |
Oct
(66) |
Nov
(42) |
Dec
(90) |
2007 |
Jan
(106) |
Feb
(54) |
Mar
(93) |
Apr
(27) |
May
(21) |
Jun
(17) |
Jul
(19) |
Aug
(22) |
Sep
(25) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
2008 |
Jan
(65) |
Feb
(70) |
Mar
(29) |
Apr
(45) |
May
(91) |
Jun
(20) |
Jul
(11) |
Aug
(24) |
Sep
(23) |
Oct
(13) |
Nov
(23) |
Dec
(39) |
2009 |
Jan
(23) |
Feb
(39) |
Mar
(15) |
Apr
(56) |
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
Update of /cvsroot/krusader/krusader_kde3/iso/libisofs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25536/krusader_kde3/iso/libisofs Added Files: COPYING ChangeLog Makefile.am README bswap.h el_torito.h iso_fs.h isofs.c isofs.h rock.h Log Message: ADDED: ISO KIO slave --- NEW FILE: README --- This is the 0.2 release of libisofs. For changes, see the ChangeLog. Libisofs implements the reading of the famous ISO-9660 (ECMA-119) file system, found on CD-ROM media. It also supports the Rock Ridge Interchange Protocol and Microsoft Joliet extensions. It allows user-mode programs to query the filesystem volume descriptors and traverse through the directory structure. Preliminary support for El-Torito boot CDs are added in version 0.2. To use it in your project, I recommend to copy bswap.h, isofs.h, iso_fs.h, el_torito.h rock.h and isofs.c to your sources, and include isofs.h in the appropriate places. Currently only the directory tables are parsed, the path tables are not. (The path tables contain redundant information.) Also a sample program can be compiled with the supplied Makefile. Simply execute 'make', it should create the executable file isofs. On big-endian systems, you need to define WORDS_BIGENDIAN (either in the compiler command-line, or if you defined HAVE_CONFIG_H, in config.h) György Szombathelyi <gy...@us...> http://libcdrom.sourceforge.net/libisofs.html --- NEW FILE: bswap.h --- /* From the mplayer project (www.mplayerhq.hu) */ #ifndef __BSWAP_H__ #define __BSWAP_H__ #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_BYTESWAP_H #include <byteswap.h> #else #ifdef ARCH_X86 inline static unsigned short ByteSwap16(unsigned short x) { __asm("xchgb %b0,%h0" : "=q" (x) : "0" (x)); return x; } #define bswap_16(x) ByteSwap16(x) inline static unsigned int ByteSwap32(unsigned int x) { #if __CPU__ > 386 __asm("bswap %0": "=r" (x) : #else __asm("xchgb %b0,%h0\n" " rorl $16,%0\n" " xchgb %b0,%h0": "=q" (x) : #endif "0" (x)); return x; } #define bswap_32(x) ByteSwap32(x) inline static unsigned long long int ByteSwap64(unsigned long long int x) { register union { __extension__ unsigned long long int __ll; unsigned int __l[2]; } __x; asm("xchgl %0,%1": "=r"(__x.__l[0]),"=r"(__x.__l[1]): "0"(bswap_32((unsigned long)x)),"1"(bswap_32((unsigned long)(x>>32)))); return __x.__ll; } #define bswap_64(x) ByteSwap64(x) #else #define bswap_16(x) (((x) & 0x00ff) << 8 | ((x) & 0xff00) >> 8) /* code from bits/byteswap.h (C) 1997, 1998 Free Software Foundation, Inc. */ #define bswap_32(x) \ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) #define bswap_64(x) \ (__extension__ \ ({ union { __extension__ unsigned long long int __ll; \ unsigned int __l[2]; } __w, __r; \ __w.__ll = (x); \ __r.__l[0] = bswap_32 (__w.__l[1]); \ __r.__l[1] = bswap_32 (__w.__l[0]); \ __r.__ll; })) #endif /* !ARCH_X86 */ #endif /* !HAVE_BYTESWAP_H */ /* be2me ... BigEndian to MachineEndian le2me ... LittleEndian to MachineEndian */ #ifdef WORDS_BIGENDIAN #define be2me_16(x) (x) #define be2me_32(x) (x) #define be2me_64(x) (x) #define le2me_16(x) bswap_16(x) #define le2me_32(x) bswap_32(x) #define le2me_64(x) bswap_64(x) #else #define be2me_16(x) bswap_16(x) #define be2me_32(x) bswap_32(x) #define be2me_64(x) bswap_64(x) #define le2me_16(x) (x) #define le2me_32(x) (x) #define le2me_64(x) (x) #endif #endif --- NEW FILE: Makefile.am --- noinst_LTLIBRARIES = libisofs.la INCLUDES = $(all_includes) LDFLAGS = libisofs_la_METASOURCES=AUTO libisofs_la_SOURCES = isofs.c libisofs_la_LIBADD = $(LIB_KIO) $(LIB_KDECORE) $(LIB_QT) libisofs_la_LDFLAGS = -module $(all_libraries) $(KDE_PLUGIN) EXTRA_DIST = bswap.h el_torito.h iso_fs.h isofs.h rock.h isofs.c --- NEW FILE: isofs.c --- /*************************************************************************** isofs.c - libisofs implementation ------------------- begin : Oct 25 2002 copyright : (C) 2002 by Szombathelyi Gy�gy email : gy...@us... ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include <errno.h> #include <stdlib.h> #include <string.h> #include "isofs.h" /**************************************************************/ /* internal function from the linux kernel (isofs fs) */ static time_t getisotime(int year,int month,int day,int hour, int minute,int second,int tz) { int days, i; time_t crtime; year-=1970; if (year < 0) { crtime = 0; } else { int monlen[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; days = year * 365; if (year > 2) days += (year+1) / 4; for (i = 1; i < month; i++) days += monlen[i-1]; if (((year+2) % 4) == 0 && month > 2) days++; days += day - 1; crtime = ((((days * 24) + hour) * 60 + minute) * 60) + second; /* sign extend */ if (tz & 0x80) tz |= (-1 << 8); /* * The timezone offset is unreliable on some disks, * so we make a sanity check. In no case is it ever * more than 13 hours from GMT, which is 52*15min. * The time is always stored in localtime with the * timezone offset being what get added to GMT to * get to localtime. Thus we need to subtract the offset * to get to true GMT, which is what we store the time * as internally. On the local system, the user may set * their timezone any way they wish, of course, so GMT * gets converted back to localtime on the receiving * system. * * NOTE: mkisofs in versions prior to mkisofs-1.10 had * the sign wrong on the timezone offset. This has now * been corrected there too, but if you are getting screwy * results this may be the explanation. If enough people * complain, a user configuration option could be added * to add the timezone offset in with the wrong sign * for 'compatibility' with older discs, but I cannot see how * it will matter that much. * * Thanks to ku...@el... (Volker Kuhlmann) * for pointing out the sign error. */ if (-52 <= tz && tz <= 52) crtime -= tz * 15 * 60; } return crtime; } /** * Returns the Unix from the ISO9660 9.1.5 time format */ time_t isodate_915(char * p, int hs) { return getisotime(1900+p[0],p[1],p[2],p[3],p[4],p[5],hs==0 ? p[6] : 0); } /** * Returns the Unix from the ISO9660 8.4.26.1 time format * BUG: hundredth of seconds are ignored, because Unix time_t has one second * resolution (I think it's no problem at all) */ time_t isodate_84261(char * p, int hs) { int year,month,day,hour,minute,second; year=(p[0]-'0')*1000 + (p[1]-'0')*100 + (p[2]-'0')*10 + p[3]-'0'; month=(p[4]-'0')*10 + (p[5]-'0'); day=(p[6]-'0')*10 + (p[7]-'0'); hour=(p[8]-'0')*10 + (p[9]-'0'); minute=(p[10]-'0')*10 + (p[11]-'0'); second=(p[12]-'0')*10 + (p[13]-'0'); return getisotime(year,month,day,hour,minute,second,hs==0 ? p[16] : 0); } void FreeBootTable(boot_head *boot) { boot_entry *be,*next; be=boot->defentry; while (be) { next=be->next; free(be); be=next; } boot->defentry=NULL; } int BootImageSize(int media,int len) { int ret; switch(media & 0xf) { case 0: ret=len; /* No emulation */ break; case 1: ret=80*2*15; /* 1.2 MB */ break; case 2: ret=80*2*18; /* 1.44 MB */ break; case 3: ret=80*2*36; /* 2.88 MB */ break; case 4: /* FIXME!!! */ ret=len; /* Hard Disk */ break; default: ret=len; } return ret; } static boot_entry *CreateBootEntry(char *be) { boot_entry *entry; entry = (boot_entry*) malloc(sizeof(boot_entry)); if (!entry) return NULL; memset(entry, 0, sizeof(boot_entry)); memcpy(entry->data,be,0x20); return entry; } int ReadBootTable(readfunc *read,int sector, boot_head *head, void *udata) { char buf[2048], *c, *be; int i,end=0; unsigned short sum; boot_entry *defcur=NULL,*deflast=NULL; register struct validation_entry *ventry=NULL; head->sections=NULL; head->defentry=NULL; while (1) { be = (char*) &buf; if ( read(be, sector, 1, udata) != 1 ) goto err; /* first entry needs to be a validation entry */ if (!ventry) { ventry=(struct validation_entry *) be; if ( isonum_711(ventry->type) !=1 ) goto err; sum=0; c = (char*) ventry; for (i=0;i<16;i++) { sum += isonum_721(c); c+=2; } if (sum) goto err; memcpy(&head->ventry,be,0x20); be += 0x20; } while (!end && (be < (char *)(&buf+1))) { switch (isonum_711(be)) { case 0x88: defcur=CreateBootEntry(be); if (!defcur) goto err; if (deflast) deflast->next=defcur; else head->defentry=defcur; defcur->prev=deflast; deflast=defcur; break; case 0x90: case 0x91: break; default: end=1; break; } be += 0x20; } if (end) break; sector ++; } return 0; err: FreeBootTable(head); return -1; } /** * Creates the linked list of the volume descriptors */ iso_vol_desc *ReadISO9660(readfunc *read,int sector,void *udata) { int i; struct iso_volume_descriptor buf; iso_vol_desc *first=NULL,*current=NULL,*prev=NULL; for (i=0;i<100;i++) { if (read( (char*) &buf, sector+i+16, 1, udata) != 1 ) { FreeISO9660(first); return NULL; } if (!memcmp(ISO_STANDARD_ID,&buf.id,5)) { switch ( isonum_711(&buf.type[0]) ) { case ISO_VD_BOOT: case ISO_VD_PRIMARY: case ISO_VD_SUPPLEMENTARY: current=(iso_vol_desc*) malloc(sizeof(iso_vol_desc)); if (!current) { FreeISO9660(first); return NULL; } current->prev=prev; current->next=NULL; if (prev) prev->next=current; memcpy(&(current->data),&buf,2048); if (!first) first=current; prev=current; break; case ISO_VD_END: return first; break; } } else if (!memcmp(HS_STANDARD_ID,(struct hs_volume_descriptor*) &buf,5)) { /* High Sierra format not supported (yet) */ } } return first; } /** * Frees the linked list of volume descriptors */ void FreeISO9660(iso_vol_desc *data) { iso_vol_desc *current; while (data) { current=data; data=current->next; free(current); } } /** * Frees the strings in 'rrentry' */ void FreeRR(rr_entry *rrentry) { if (rrentry->name) { free(rrentry->name); rrentry->name=NULL; } if (rrentry->sl) { free(rrentry->sl); rrentry->name=NULL; } } static int str_nappend(char **d,char *s,int n) { int i=0; char *c; /* i=strnlen(s,n)+1; */ while (i<n && s[i]) i++; i++; if (*d) i+=(strlen(*d)+1); c=(char*) malloc(i); if (!c) return -ENOMEM; if (*d) { strcpy(c,*d); strncat(c,s,n); free(*d); } else strncpy(c,s,n); c[i-1]=0; *d=c; return 0; } static int str_append(char **d,char *s) { int i; char *c; i=strlen(s)+1; if (*d) i+=(strlen(*d)+1); c=(char*) malloc(i); if (!c) return -ENOMEM; if (*d) { strcpy(c,*d); strcat(c,s); free(*d); } else strcpy(c,s); c[i-1]=0; *d=c; return 0; } #define rrtlen(c) (((unsigned char) c & 0x80) ? 17 : 7) #define rrctime(f,c) ((unsigned char) f & 0x80) ? isodate_84261(c,0) : isodate_915(c,0) /** * Parses the System Use area and fills rr_entry with values */ int ParseRR(struct iso_directory_record *idr, rr_entry *rrentry) { int suspoffs,susplen,i,f,ret=0; char *r, *c; struct rock_ridge *rr; suspoffs=33+isonum_711(idr->name_len); if (!(isonum_711(idr->name_len) & 1)) suspoffs++; susplen=isonum_711(idr->length)-suspoffs; r= & (((char*) idr)[suspoffs]); rr = (struct rock_ridge*) r; memset(rrentry,0,sizeof(rr_entry)); rrentry->len = sizeof(rr_entry); while (susplen > 0) { if (isonum_711(&rr->len) > susplen || rr->len == 0) break; if (rr->signature[0]=='N' && rr->signature[1]=='M') { if (!(rr->u.NM.flags & 0x26) && rr->len>5 && !rrentry->name) { if (str_nappend(&rrentry->name,rr->u.NM.name,isonum_711(&rr->len)-5)) { FreeRR(rrentry); return -ENOMEM; } ret++; } } else if (rr->signature[0]=='P' && rr->signature[1]=='X' && (isonum_711(&rr->len)==44 || isonum_711(&rr->len)==36)) { rrentry->mode=isonum_733(rr->u.PX.mode); rrentry->nlink=isonum_733(rr->u.PX.n_links); rrentry->uid=isonum_733(rr->u.PX.uid); rrentry->gid=isonum_733(rr->u.PX.gid); if (isonum_711(&rr->len)==44) rrentry->serno=isonum_733(rr->u.PX.serno); ret++; } else if (rr->signature[0]=='P' && rr->signature[1]=='N' && isonum_711(&rr->len)==20) { rrentry->dev_major=isonum_733(rr->u.PN.dev_high); rrentry->dev_minor=isonum_733(rr->u.PN.dev_low); ret++; } else if (rr->signature[0]=='P' && rr->signature[1]=='L' && isonum_711(&rr->len)==12) { rrentry->pl=isonum_733(rr->u.PL.location); ret++; } else if (rr->signature[0]=='C' && rr->signature[1]=='L' && isonum_711(&rr->len)==12) { rrentry->cl=isonum_733(rr->u.CL.location); ret++; } else if (rr->signature[0]=='R' && rr->signature[1]=='E' && isonum_711(&rr->len)==4) { rrentry->re=1; ret++; } else if (rr->signature[0]=='S' && rr->signature[1]=='L' && isonum_711(&rr->len)>7) { i = isonum_711(&rr->len)-5; c = (char*) rr; c += 5; while (i>0) { switch(c[0] & ~1) { case 0x2: if (str_append(&rrentry->sl,(char *)".")) { FreeRR(rrentry); return -ENOMEM; } break; case 0x4: if (str_append(&rrentry->sl,(char *)"..")) { FreeRR(rrentry); return -ENOMEM; } break; } if ( (c[0] & 0x08) == 0x08 || (c[1] && rrentry->sl && strlen(rrentry->sl)>1) ) { if (str_append(&rrentry->sl,(char *)"/")) { FreeRR(rrentry); return -ENOMEM; } } if ((unsigned char)c[1]>0) { if (str_nappend(&rrentry->sl,c+2,(unsigned char)c[1])) { FreeRR(rrentry); return -ENOMEM; } } i -= ((unsigned char)c[1] + 2); c += ((unsigned char)c[1] + 2); } ret++; } else if (rr->signature[0]=='T' && rr->signature[1]=='F' && isonum_711(&rr->len)>5) { i = isonum_711(&rr->len)-5; f = rr->u.TF.flags; c = (char*) rr; c += 5; while (i >= rrtlen(f)) { if (f & 1) { rrentry->t_creat=rrctime(f,c); f &= ~1; } else if (f & 2) { rrentry->t_mtime=rrctime(f,c); f &= ~2; } else if (f & 4) { rrentry->t_atime=rrctime(f,c); f &= ~4; } else if (f & 8) { rrentry->t_ctime=rrctime(f,c); f &= ~8; } else if (f & 16) { rrentry->t_backup=rrctime(f,c); f &= ~16; } else if (f & 32) { rrentry->t_expire=rrctime(f,c); f &= ~32; } else if (f & 64) { rrentry->t_effect=rrctime(f,c); f &= ~64; } i -= rrtlen(f); c += rrtlen(f); } ret++; } else if (rr->signature[0]=='Z' && rr->signature[1]=='F' && isonum_711(&rr->len)==16) { /* Linux-specific extension: transparent decompression */ rrentry->z_algo[0]=rr->u.ZF.algorithm[0]; rrentry->z_algo[1]=rr->u.ZF.algorithm[1]; rrentry->z_params[0]=rr->u.ZF.parms[0]; rrentry->z_params[1]=rr->u.ZF.parms[1]; rrentry->z_size=isonum_733(rr->u.ZF.real_size); ret++; } else { /* printf("SUSP sign: %c%c\n",rr->signature[0],rr->signature[1]); */ } susplen -= isonum_711(&rr->len); r += isonum_711(&rr->len); rr = (struct rock_ridge*) r; } return ret; } /** * Iterates over the directory entries. The directory is in 'buf', * the size of the directory is 'size'. 'callback' is called for each * directory entry with the parameter 'udata'. */ int ProcessDir(readfunc *read,int extent,int size,dircallback *callback,void *udata) { int pos=0,ret=0,siz; char *buf; struct iso_directory_record *idr; if (size & 2047) { siz=((size>>11)+1)<<11; } else { siz=size; } buf=(char*) malloc(siz); if (!buf) return -ENOMEM; if (read(buf,extent,siz>>11,udata)!=siz>>11) { free(buf); return -EIO; } while (size>0) { idr=(struct iso_directory_record*) &buf[pos]; if (isonum_711(idr->length)==0) { size-=(2048 - (pos & 0x7ff)); if (size<=2) break; pos+=0x800; pos&=0xfffff800; idr=(struct iso_directory_record*) &buf[pos]; } pos+=isonum_711(idr->length); pos+=isonum_711(idr->ext_attr_length); size-=isonum_711(idr->length); size-=isonum_711(idr->ext_attr_length); if (size<0) break; if (isonum_711(idr->length) <33 || isonum_711(idr->length)<33+isonum_711(idr->name_len)) { /* Invalid directory entry */ continue; } if ((ret=callback(idr,udata))) break; } free(buf); return ret; } /** * returns the joliet level from the volume descriptor */ int JolietLevel(struct iso_volume_descriptor *ivd) { int ret=0; register struct iso_supplementary_descriptor *isd; isd = (struct iso_supplementary_descriptor *) ivd; if (isonum_711(ivd->type)==ISO_VD_SUPPLEMENTARY) { if (isd->escape[0]==0x25 && isd->escape[1]==0x2f) { switch (isd->escape[2]) { case 0x40: ret=1; break; case 0x43: ret=2; break; case 0x45: ret=3; break; } } } return ret; } /********************************************************************/ #ifdef ISOFS_MAIN #include <time.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <iconv.h> int level=0,joliet=0,dirs,files; iconv_t iconv_d; int fd; int readf(char *buf, int start, int len,void *udata) { int ret; if ((ret=lseek(fd, start << 11, SEEK_SET))<0) return ret; ret=read(fd, buf, len << 11); if (ret<0) return ret; return (ret >> 11); } void dumpchars(char *c,int len) { while (len>0) { printf("%c",*c); len--; c++; } } void sp(int num) { int i; for (i=0;i<num*5;i++) { printf(" "); }; } void dumpflags(char flags) { if (flags & 1) printf("HIDDEN "); if (flags & 2) printf("DIR "); if (flags & 4) printf("ASF "); } void dumpjoliet(char *c,int len) { char outbuf[255]; size_t out; int ret; char *outptr; outptr=(char*) &outbuf; out=255; if ((iconv(iconv_d,&c,&len,&outptr,&out))<0) { printf("conversion error=%d",errno); return; } ret=255-out; dumpchars((char*) &outbuf,ret); } void dumpchardesc(char *c,int len) { if (joliet) dumpjoliet(c,len); else { dumpchars(c,len); } } void dumpiso915time(char *t, int hs) { time_t time; char *c; time=isodate_915(t,hs); c=(char*) ctime(&time); if (c && c[strlen(c)-1]==0x0a) c[strlen(c)-1]=0; if (c) printf("%s",c); } void dumpiso84261time(char *t, int hs) { time_t time; char *c; time=isodate_84261(t,hs); c=(char*) ctime(&time); if (c && c[strlen(c)-1]==0x0a) c[strlen(c)-1]=0; if (c) printf("%s",c); } void dumpdirrec(struct iso_directory_record *dir) { if (isonum_711(dir->name_len)==1) { switch (dir->name[0]) { case 0: printf("."); break; case 1: printf(".."); break; default: printf("%c",dir->name[0]); break; } } dumpchardesc(dir->name,isonum_711(dir->name_len)); printf(" size=%d",isonum_733(dir->size)); printf(" extent=%d ",isonum_733(dir->extent)); dumpflags(isonum_711(dir->flags)); dumpiso915time((char*) &(dir->date),0); } void dumprrentry(rr_entry *rr) { printf(" NM=[%s] uid=%d gid=%d nlink=%d mode=%o ", rr->name,rr->uid,rr->gid,rr->nlink,rr->mode); if (S_ISCHR(rr->mode) || S_ISBLK(rr->mode)) printf("major=%d minor=%d ",rr->dev_major,rr->dev_minor); if (rr->mode & S_IFLNK && rr->sl) printf("slink=%s ",rr->sl); /* printf("\n"); if (rr->t_creat) printf("t_creat: %s",ctime(&rr->t_creat)); if (rr->st_mtime) printf("st_mtime: %s",ctime(&rr->st_mtime)); if (rr->st_atime) printf("st_atime: %s",ctime(&rr->st_atime)); if (rr->st_ctime) printf("st_ctime: %s",ctime(&rr->st_ctime)); if (rr->t_backup) printf("t_backup: %s",ctime(&rr->t_backup)); if (rr->t_expire) printf("t_expire: %s",ctime(&rr->t_expire)); if (rr->t_effect) printf("t_effect: %s",ctime(&rr->t_effect)); */ } void dumpsusp(char *c, int len) { dumpchars(c,len); } void dumpboot(struct el_torito_boot_descriptor *ebd) { printf("version: %d\n",isonum_711(ebd->version)); printf("system id: ");dumpchars(ebd->system_id,ISODCL(8,39));printf("\n"); printf("boot catalog start: %d\n",isonum_731(ebd->boot_catalog)); } void dumpdefentry(struct default_entry *de) { printf("Default entry: \n"); printf(" bootid=%x\n",isonum_711(de->bootid)); printf(" media emulation=%d (",isonum_711(de->media)); switch(isonum_711(de->media) & 0xf) { case 0: printf("No emulation"); break; case 1: printf("1.2 Mb floppy"); break; case 2: printf("1.44 Mb floppy"); break; case 3: printf("2.88 Mb floppy"); break; case 4: printf("Hard Disk"); break; default: printf("Unknown/Invalid"); break; } printf(")\n"); printf(" loadseg=%d\n",isonum_721(de->loadseg)); printf(" systype=%d\n",isonum_711(de->systype)); printf(" start lba=%d count=%d\n",isonum_731(de->start), isonum_721(de->seccount)); } void dumpbootcat(boot_head *bh) { boot_entry *be; printf("System id: ");dumpchars(bh->ventry.id,ISODCL(28,5));printf("\n"); be=bh->defentry; while (be) { dumpdefentry(be->data); be=be->next; } } void dumpdesc(struct iso_primary_descriptor *ipd) { printf("system id: ");dumpchardesc(ipd->system_id,ISODCL(9,40));printf("\n"); printf("volume id: ");dumpchardesc(ipd->volume_id,ISODCL(41,72));printf("\n"); printf("volume space size: %d\n",isonum_733(ipd->volume_space_size)); printf("volume set size: %d\n",isonum_723(ipd->volume_set_size)); printf("volume seq num: %d\n",isonum_723(ipd->volume_set_size)); printf("logical block size: %d\n",isonum_723(ipd->logical_block_size)); printf("path table size: %d\n",isonum_733(ipd->path_table_size)); printf("location of type_l path table: %d\n",isonum_731(ipd->type_l_path_table)); printf("location of optional type_l path table: %d\n",isonum_731(ipd->opt_type_l_path_table)); printf("location of type_m path table: %d\n",isonum_732(ipd->type_m_path_table)); printf("location of optional type_m path table: %d\n",isonum_732(ipd->opt_type_m_path_table)); /* printf("Root dir record:\n");dumpdirrec((struct iso_directory_record*) &ipd->root_directory_record); */ printf("Volume set id: ");dumpchardesc(ipd->volume_set_id,ISODCL(191,318));printf("\n"); printf("Publisher id: ");dumpchardesc(ipd->publisher_id,ISODCL(319,446));printf("\n"); printf("Preparer id: ");dumpchardesc(ipd->preparer_id,ISODCL(447,574));printf("\n"); printf("Application id: ");dumpchardesc(ipd->application_id,ISODCL(575,702));printf("\n"); printf("Copyright id: ");dumpchardesc(ipd->copyright_file_id,ISODCL(703,739));printf("\n"); printf("Abstract file id: ");dumpchardesc(ipd->abstract_file_id,ISODCL(740,776));printf("\n"); printf("Bibliographic file id: ");dumpchardesc(ipd->bibliographic_file_id,ISODCL(777,813));printf("\n"); printf("Volume creation date: ");dumpiso84261time(ipd->creation_date,0);printf("\n"); printf("Volume modification date: ");dumpiso84261time(ipd->modification_date,0);printf("\n"); printf("Volume expiration date: ");dumpiso84261time(ipd->expiration_date,0);printf("\n"); printf("Volume effective date: ");dumpiso84261time(ipd->effective_date,0);printf("\n"); printf("File structure version: %d\n",isonum_711(ipd->file_structure_version)); } int mycallb(struct iso_directory_record *idr,void *udata) { rr_entry rrentry; sp(level);dumpdirrec(idr); if (level==0) printf(" (Root directory) "); printf("\n"); if (ParseRR(idr,&rrentry)>0) { sp(level);printf(" ");dumprrentry(&rrentry);printf("\n"); } FreeRR(&rrentry); if ( !(idr->flags[0] & 2) ) files++; if ( (idr->flags[0] & 2) && (level==0 || isonum_711(idr->name_len)>1) ) { level++; dirs++; ProcessDir(&readf,isonum_733(idr->extent),isonum_733(idr->size),&mycallb,udata); level--; } return 0; } /************************************************/ int main(int argc, char *argv[]) { int i=1,sector=0; iso_vol_desc *desc; boot_head boot; if (argc<2) { fprintf(stderr,"\nUsage: %s iso-file-name or device [starting sector]\n\n",argv[0]); return 0; } if (argc>=3) { sector=atoi(argv[2]); printf("Using starting sector number %d\n",sector); } fd=open(argv[1],O_RDONLY); if (fd<0) { fprintf(stderr,"open error\n"); return -1; } iconv_d=iconv_open("ISO8859-2","UTF16BE"); if (iconv_d==0) { fprintf(stderr,"iconv open error\n"); return -1; } desc=ReadISO9660(&readf,sector,NULL); if (!desc) { printf("No volume descriptors\n"); return -1; } while (desc) { printf("\n\n--------------- Volume descriptor (%d.) type %d: ---------------\n\n", i,isonum_711(desc->data.type)); switch (isonum_711(desc->data.type)) { case ISO_VD_BOOT: { struct el_torito_boot_descriptor* bootdesc; bootdesc=&(desc->data); dumpboot(bootdesc); if ( !memcmp(EL_TORITO_ID,bootdesc->system_id,ISODCL(8,39)) ) { if (ReadBootTable(&readf,isonum_731(bootdesc->boot_catalog),&boot,NULL)) { printf("Boot Catalog Error\n"); } else { dumpbootcat(&boot); FreeBootTable(&boot); } } } break; case ISO_VD_PRIMARY: case ISO_VD_SUPPLEMENTARY: joliet=0; joliet = JolietLevel(&desc->data); printf("Joliet level: %d\n",joliet); dumpdesc((struct iso_primary_descriptor*) &desc->data); printf("\n\n--------------- Directory structure: -------------------\n\n"); dirs=0;files=0; mycallb( &( ((struct iso_primary_descriptor*) &desc->data)->root_directory_record), NULL ); printf("\nnumber of directories: %d\n",dirs); printf("\nnumber of files: %d\n",files); break; } desc=desc->next; i++; } iconv_close(iconv_d); close(fd); FreeISO9660(desc); return 0; } #endif /* ISOFS_MAIN */ --- NEW FILE: COPYING --- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS --- NEW FILE: ChangeLog --- 0.1 -> 0.2 - Critical directory parsing bug fixed - Call backs only if some sanity checks on the directory entry succeeds (length checks to avoid buffer overrun if received corrupt data) - Preliminary El Torito boot specification support (No multiple boot entries yet) --- NEW FILE: el_torito.h --- #ifndef ELTORITO_H #define ELTORITO_H 1 #include "iso_fs.h" #define EL_TORITO_ID "EL TORITO SPECIFICATION\0\0\0\0\0\0\0\0\0" struct el_torito_boot_descriptor { char type [ISODCL ( 1, 1)]; /* 711 */ char id [ISODCL ( 2, 6)]; char version [ISODCL ( 7, 7)]; /* 711 */ char system_id [ISODCL ( 8, 39)]; /* achars */ char unused [ISODCL ( 40, 71)]; char boot_catalog [ISODCL ( 72, 75)]; /* 731 */ }; struct validation_entry { char type [ISODCL ( 1, 1)]; /* 1 */ char platform [ISODCL ( 2, 2)]; char unused [ISODCL ( 3, 4)]; char id [ISODCL ( 5, 28)]; char cheksum [ISODCL ( 29, 30)]; char key [ISODCL ( 31, 31)]; /* 0x55 */ char key2 [ISODCL ( 32, 32)]; /* 0xaa */ }; struct default_entry { char bootid [ISODCL ( 1, 1)]; char media [ISODCL ( 2, 2)]; char loadseg [ISODCL ( 3, 4)]; char systype [ISODCL ( 5, 5)]; char unused [ISODCL ( 6, 6)]; char seccount [ISODCL ( 7, 8)]; char start [ISODCL ( 9, 12)]; char unused2 [ISODCL ( 13, 32)]; }; struct section_header { char headerid [ISODCL ( 1, 1)]; char platform [ISODCL ( 2, 2)]; char entries [ISODCL ( 3, 4)]; char id [ISODCL ( 5, 32)]; }; struct section_entry { char bootid [ISODCL ( 1, 1)]; char media [ISODCL ( 2, 2)]; char loadseg [ISODCL ( 3, 4)]; char systype [ISODCL ( 5, 5)]; char unused [ISODCL ( 6, 6)]; char seccount [ISODCL ( 7, 8)]; char start [ISODCL ( 9, 12)]; char selcrit [ISODCL ( 13, 13)]; char vendor_selcrit [ISODCL ( 14, 32)]; }; struct section_entry_ext { char extid [ISODCL ( 1, 1)]; char extrec [ISODCL ( 2, 2)]; char vendor_selcrit [ISODCL ( 3, 32)]; }; #endif --- NEW FILE: rock.h --- /* this header is from the linux kernel */ #ifndef ROCK_H #define ROCK_H 1 /* These structs are used by the system-use-sharing protocol, in which the Rock Ridge extensions are embedded. It is quite possible that other extensions are present on the disk, and this is fine as long as they all use SUSP */ struct SU_SP{ unsigned char magic[2]; unsigned char skip; }; struct SU_CE{ char extent[8]; char offset[8]; char size[8]; }; struct SU_ER{ unsigned char len_id; unsigned char len_des; unsigned char len_src; unsigned char ext_ver; char data[1]; }; struct RR_RR{ char flags[1]; }; struct RR_PX{ char mode[8]; char n_links[8]; char uid[8]; char gid[8]; char serno[8]; }; struct RR_PN{ char dev_high[8]; char dev_low[8]; }; struct SL_component{ unsigned char flags; unsigned char len; char text[1]; }; struct RR_SL{ unsigned char flags; struct SL_component link; }; struct RR_NM{ unsigned char flags; char name[1]; }; struct RR_CL{ char location[8]; }; struct RR_PL{ char location[8]; }; struct stamp{ char time[7]; }; struct RR_TF{ char flags; struct stamp times[1]; /* Variable number of these beasts */ }; /* Linux-specific extension for transparent decompression */ struct RR_ZF{ char algorithm[2]; char parms[2]; char real_size[8]; }; /* These are the bits and their meanings for flags in the TF structure. */ #define TF_CREATE 1 #define TF_MODIFY 2 #define TF_ACCESS 4 #define TF_ATTRIBUTES 8 #define TF_BACKUP 16 #define TF_EXPIRATION 32 #define TF_EFFECTIVE 64 #define TF_LONG_FORM 128 struct rock_ridge{ char signature[2]; char len; /* 711 */ char version; /* 711 */ union{ struct SU_SP SP; struct SU_CE CE; struct SU_ER ER; struct RR_RR RR; struct RR_PX PX; struct RR_PN PN; struct RR_SL SL; struct RR_NM NM; struct RR_CL CL; struct RR_PL PL; struct RR_TF TF; struct RR_ZF ZF; } u; }; #define RR_PX 1 /* POSIX attributes */ #define RR_PN 2 /* POSIX devices */ #define RR_SL 4 /* Symbolic link */ #define RR_NM 8 /* Alternate Name */ #define RR_CL 16 /* Child link */ #define RR_PL 32 /* Parent link */ #define RR_RE 64 /* Relocation directory */ #define RR_TF 128 /* Timestamps */ #endif /* ROCK_H */ --- NEW FILE: iso_fs.h --- /* From the linux kernel */ #ifndef _ISO_FS_H #define _ISO_FS_H 1 #include "bswap.h" /* * The isofs filesystem constants/structures */ /* This part borrowed from the bsd386 isofs */ #define ISODCL(from, to) (to - from + 1) struct iso_volume_descriptor { char type[ISODCL(1,1)]; /* 711 */ char id[ISODCL(2,6)]; char version[ISODCL(7,7)]; char data[ISODCL(8,2048)]; }; /* volume descriptor types */ #define ISO_VD_BOOT 0 #define ISO_VD_PRIMARY 1 #define ISO_VD_SUPPLEMENTARY 2 #define ISO_VD_END 255 #define ISO_STANDARD_ID "CD001" struct iso_primary_descriptor { char type [ISODCL ( 1, 1)]; /* 711 */ char id [ISODCL ( 2, 6)]; char version [ISODCL ( 7, 7)]; /* 711 */ char unused1 [ISODCL ( 8, 8)]; char system_id [ISODCL ( 9, 40)]; /* achars */ char volume_id [ISODCL ( 41, 72)]; /* dchars */ char unused2 [ISODCL ( 73, 80)]; char volume_space_size [ISODCL ( 81, 88)]; /* 733 */ char unused3 [ISODCL ( 89, 120)]; char volume_set_size [ISODCL (121, 124)]; /* 723 */ char volume_sequence_number [ISODCL (125, 128)]; /* 723 */ char logical_block_size [ISODCL (129, 132)]; /* 723 */ char path_table_size [ISODCL (133, 140)]; /* 733 */ char type_l_path_table [ISODCL (141, 144)]; /* 731 */ char opt_type_l_path_table [ISODCL (145, 148)]; /* 731 */ char type_m_path_table [ISODCL (149, 152)]; /* 732 */ char opt_type_m_path_table [ISODCL (153, 156)]; /* 732 */ char root_directory_record [ISODCL (157, 190)]; /* 9.1 */ char volume_set_id [ISODCL (191, 318)]; /* dchars */ char publisher_id [ISODCL (319, 446)]; /* achars */ char preparer_id [ISODCL (447, 574)]; /* achars */ char application_id [ISODCL (575, 702)]; /* achars */ char copyright_file_id [ISODCL (703, 739)]; /* 7.5 dchars */ char abstract_file_id [ISODCL (740, 776)]; /* 7.5 dchars */ char bibliographic_file_id [ISODCL (777, 813)]; /* 7.5 dchars */ char creation_date [ISODCL (814, 830)]; /* 8.4.26.1 */ char modification_date [ISODCL (831, 847)]; /* 8.4.26.1 */ char expiration_date [ISODCL (848, 864)]; /* 8.4.26.1 */ char effective_date [ISODCL (865, 881)]; /* 8.4.26.1 */ char file_structure_version [ISODCL (882, 882)]; /* 711 */ char unused4 [ISODCL (883, 883)]; char application_data [ISODCL (884, 1395)]; char unused5 [ISODCL (1396, 2048)]; }; /* Almost the same as the primary descriptor but two fields are specified */ struct iso_supplementary_descriptor { char type [ISODCL ( 1, 1)]; /* 711 */ char id [ISODCL ( 2, 6)]; char version [ISODCL ( 7, 7)]; /* 711 */ char flags [ISODCL ( 8, 8)]; /* 853 */ char system_id [ISODCL ( 9, 40)]; /* achars */ char volume_id [ISODCL ( 41, 72)]; /* dchars */ char unused2 [ISODCL ( 73, 80)]; char volume_space_size [ISODCL ( 81, 88)]; /* 733 */ char escape [ISODCL ( 89, 120)]; /* 856 */ char volume_set_size [ISODCL (121, 124)]; /* 723 */ char volume_sequence_number [ISODCL (125, 128)]; /* 723 */ char logical_block_size [ISODCL (129, 132)]; /* 723 */ char path_table_size [ISODCL (133, 140)]; /* 733 */ char type_l_path_table [ISODCL (141, 144)]; /* 731 */ char opt_type_l_path_table [ISODCL (145, 148)]; /* 731 */ char type_m_path_table [ISODCL (149, 152)]; /* 732 */ char opt_type_m_path_table [ISODCL (153, 156)]; /* 732 */ char root_directory_record [ISODCL (157, 190)]; /* 9.1 */ char volume_set_id [ISODCL (191, 318)]; /* dchars */ char publisher_id [ISODCL (319, 446)]; /* achars */ char preparer_id [ISODCL (447, 574)]; /* achars */ char application_id [ISODCL (575, 702)]; /* achars */ char copyright_file_id [ISODCL (703, 739)]; /* 7.5 dchars */ char abstract_file_id [ISODCL (740, 776)]; /* 7.5 dchars */ char bibliographic_file_id [ISODCL (777, 813)]; /* 7.5 dchars */ char creation_date [ISODCL (814, 830)]; /* 8.4.26.1 */ char modification_date [ISODCL (831, 847)]; /* 8.4.26.1 */ char expiration_date [ISODCL (848, 864)]; /* 8.4.26.1 */ char effective_date [ISODCL (865, 881)]; /* 8.4.26.1 */ char file_structure_version [ISODCL (882, 882)]; /* 711 */ char unused4 [ISODCL (883, 883)]; char application_data [ISODCL (884, 1395)]; char unused5 [ISODCL (1396, 2048)]; }; #define HS_STANDARD_ID "CDROM" struct hs_volume_descriptor { char foo [ISODCL ( 1, 8)]; /* 733 */ char type [ISODCL ( 9, 9)]; /* 711 */ char id [ISODCL ( 10, 14)]; char version [ISODCL ( 15, 15)]; /* 711 */ char data[ISODCL(16,2048)]; }; struct hs_primary_descriptor { char foo [ISODCL ( 1, 8)]; /* 733 */ char type [ISODCL ( 9, 9)]; /* 711 */ char id [ISODCL ( 10, 14)]; char version [ISODCL ( 15, 15)]; /* 711 */ char unused1 [ISODCL ( 16, 16)]; /* 711 */ char system_id [ISODCL ( 17, 48)]; /* achars */ char volume_id [ISODCL ( 49, 80)]; /* dchars */ char unused2 [ISODCL ( 81, 88)]; /* 733 */ char volume_space_size [ISODCL ( 89, 96)]; /* 733 */ char unused3 [ISODCL ( 97, 128)]; /* 733 */ char volume_set_size [ISODCL (129, 132)]; /* 723 */ char volume_sequence_number [ISODCL (133, 136)]; /* 723 */ char logical_block_size [ISODCL (137, 140)]; /* 723 */ char path_table_size [ISODCL (141, 148)]; /* 733 */ char type_l_path_table [ISODCL (149, 152)]; /* 731 */ char unused4 [ISODCL (153, 180)]; /* 733 */ char root_directory_record [ISODCL (181, 214)]; /* 9.1 */ }; /* We use this to help us look up the parent inode numbers. */ struct iso_path_table{ char name_len[1]; /* 711 */ char ext_attr_length[1]; /* 711 */ char extent[4]; /* 731 */ char parent[2]; /* 721 */ char name[1]; }; /* high sierra is identical to iso, except that the date is only 6 bytes, and there is an extra reserved byte after the flags */ struct iso_directory_record { char length [ISODCL (1, 1)]; /* 711 */ char ext_attr_length [ISODCL (2, 2)]; /* 711 */ char extent [ISODCL (3, 10)]; /* 733 */ char size [ISODCL (11, 18)]; /* 733 */ char date [ISODCL (19, 25)]; /* 7 by 711 */ char flags [ISODCL (26, 26)]; char file_unit_size [ISODCL (27, 27)]; /* 711 */ char interleave [ISODCL (28, 28)]; /* 711 */ char volume_sequence_number [ISODCL (29, 32)]; /* 723 */ char name_len [ISODCL (33, 33)]; /* 711 */ char name [1]; }; /* 8 bit numbers */ __inline unsigned char isonum_711(char *p); __inline char isonum_712(char *p); /* 16 bit numbers */ __inline unsigned short isonum_721(char *p); __inline unsigned short isonum_722(char *p); __inline unsigned short isonum_723(char *p); /* 32 bit numbers */ __inline unsigned int isonum_731(char *p); __inline unsigned int isonum_732(char *p); __inline unsigned int isonum_733(char *p); /* 8 bit numbers */ __inline unsigned char isonum_711(char *p) { return *(unsigned char *)p; } __inline char isonum_712(char *p) { return *p; } /* 16 bit numbers */ __inline unsigned short isonum_721(char *p) { return le2me_16(*(unsigned short *)p); } __inline unsigned short isonum_722(char *p) { return be2me_16(*(unsigned short *)p); } __inline unsigned short isonum_723(char *p) { /* Ignore bigendian datum due to broken mastering programs */ return le2me_16(*(unsigned short *)p); } /* 32 bit numbers */ __inline unsigned int isonum_731(char *p) { return le2me_32(*(unsigned int *)p); } __inline unsigned int isonum_732(char *p) { return be2me_32(*(unsigned int *)p); } __inline unsigned int isonum_733(char *p) { /* Ignore bigendian datum due to broken mastering programs */ return le2me_32(*(unsigned int *)p); } #endif /*_ISOFS_H*/ --- NEW FILE: isofs.h --- (This appears to be a binary file; contents omitted.) |
From: Karai C. <ck...@us...> - 2004-08-23 22:10:42
|
Update of /cvsroot/krusader/krusader_kde3/iso In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25536/krusader_kde3/iso Added Files: Makefile.am iso.cpp iso.h iso.protocol isoservice.desktop kio_isorc kiso.cpp kiso.h kisodirectory.cpp kisodirectory.h kisofile.cpp kisofile.h qfilehack.cpp qfilehack.h Log Message: ADDED: ISO KIO slave --- NEW FILE: kisofile.cpp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: kisodirectory.h --- (This appears to be a binary file; contents omitted.) --- NEW FILE: kisofile.h --- (This appears to be a binary file; contents omitted.) --- NEW FILE: kio_isorc --- showhidden=false showrr=true --- NEW FILE: kisodirectory.cpp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: iso.h --- (This appears to be a binary file; contents omitted.) --- NEW FILE: qfilehack.cpp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: kiso.h --- (This appears to be a binary file; contents omitted.) --- NEW FILE: kiso.cpp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: isoservice.desktop --- [Desktop Entry] Actions=OpenISO ServiceTypes=inode/blockdevice,application/x-iso [Desktop Action OpenISO] Comment=ISO9660 View Comment[hu]=ISO9660 Nézet Comment[fr]=Lecteur ISO9660 Exec=kfmclient exec iso:%f Icon=cd Name=ISO9660 View Name[hu]=ISO9660 Nézet Name[fr]=Lecteur ISO9660 --- NEW FILE: Makefile.am --- kde_module_LTLIBRARIES = kio_iso.la INCLUDES = $(all_includes) LDFLAGS = kio_iso_la_METASOURCES=AUTO kio_iso_la_SOURCES = kisodirectory.cpp kisofile.cpp qfilehack.cpp kiso.cpp iso.cpp kio_iso_la_LIBADD = $(LIB_KIO) $(LIB_KDECORE) $(LIB_QT) libisofs/libisofs.la kio_iso_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) SUBDIRS = libisofs EXTRA_DIST = iso.cpp iso.h iso.protocol kiso.cpp kiso.h qfilehack.cpp qfilehack.h kisofile.cpp kisofile.h kisodirectory.cpp kisodirectory.h isoservice.desktop install-data-local: $(mkinstalldirs) $(kde_servicesdir)/ $(INSTALL_DATA) $(srcdir)/iso.protocol $(kde_servicesdir)/iso.protocol $(mkinstalldirs) $(kde_datadir)/konqueror/servicemenus/ $(INSTALL_DATA) $(srcdir)/isoservice.desktop $(kde_datadir)/konqueror/servicemenus/isoservice.desktop $(mkinstalldirs) $(kde_confdir)/ $(INSTALL_DATA) $(srcdir)/kio_isorc $(kde_confdir)/kio_isorc uninstall-local: -rm -f $(kde_servicesdir)/iso.protocol -rm -f $(kde_datadir)/konqueror/servicemenus/isoservice.desktop -rm -f $(kde_confdir)/kio_isorc # These paths are KDE specific. Use them: # kde_appsdir Where your application's menu entry (.desktop) should go to. # kde_icondir Where your icon should go to - better use KDE_ICON. # kde_sounddir Where your sounds should go to. # kde_htmldir Where your docs should go to. (contains lang subdirs) # kde_datadir Where you install application data. (Use a subdir) # kde_locale Where translation files should go to. (contains lang subdirs) # kde_cgidir Where cgi-bin executables should go to. # kde_confdir Where config files should go to (system-wide ones with default values). # kde_mimedir Where mimetypes .desktop files should go to. # kde_servicesdir Where services .desktop files should go to. # kde_servicetypesdir Where servicetypes .desktop files should go to. # kde_toolbardir Where general toolbar icons should go to (deprecated, use KDE_ICON). # kde_wallpaperdir Where general wallpapers should go to. # kde_templatesdir Where templates for the "New" menu (Konqueror/KDesktop) should go to. # kde_bindir Where executables should go to. Use bin_PROGRAMS or bin_SCRIPTS. # kde_libdir Where shared libraries should go to. Use lib_LTLIBRARIES. # kde_moduledir Where modules (e.g. parts) should go to. Use kde_module_LTLIBRARIES. # kde_styledir Where Qt/KDE widget styles should go to (new in KDE 3). # kde_designerdir Where Qt Designer plugins should go to (new in KDE 3). # make messages.po. Move this one to ../po/ and "make merge" in po # the -x is for skipping messages already translated in kdelibs messages: LIST=`find . -name \*.h -o -name \*.hh -o -name \*.H -o -name \*.hxx -o -name \*.hpp -o -name \*.cpp -o -name \*.cc -o -name \*.cxx -o -name \*.ecpp -o -name \*.C`; \ if test -n "$$LIST"; then \ $(XGETTEXT) -C -ki18n -x $(kde_includes)/kde.pot $$LIST -o ../po/iso.pot; \ fi --- NEW FILE: iso.cpp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: qfilehack.h --- (This appears to be a binary file; contents omitted.) --- NEW FILE: iso.protocol --- [Protocol] exec=kio_iso protocol=iso listing=Name,Type,Size,Date,AccessDate,CreationDate,Access,Owner,Group,Link input=filesystem output=filesystem reading=true source=true Icon=cd Description=A kioslave for ISO9660 filesystems MimeType=application/x-iso |
From: Karai C. <ck...@us...> - 2004-08-23 22:10:42
|
Update of /cvsroot/krusader/krusader_kde3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25536/krusader_kde3 Modified Files: ChangeLog Makefile.am krusader.kdevprj Log Message: ADDED: ISO KIO slave Index: ChangeLog =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/ChangeLog,v retrieving revision 1.284 retrieving revision 1.285 diff -C2 -d -r1.284 -r1.285 *** ChangeLog 20 Aug 2004 18:47:56 -0000 1.284 --- ChangeLog 23 Aug 2004 22:10:27 -0000 1.285 *************** *** 1,3 **** --- 1,5 ---- ====================== + ADDED: iso protocol for viewing .iso cd/dvd images + (thanks to Szombathelyi György) ADDED: full handling of arj and lha packers ADDED: useraction: new Placeholder %_Sync("synchronizer-profile")% Index: Makefile.am =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Makefile.am 5 Jul 2003 16:48:46 -0000 1.3 --- Makefile.am 23 Aug 2004 22:10:27 -0000 1.4 *************** *** 1,5 **** ####### kdevelop will overwrite this part!!! (begin)########## ! SUBDIRS = krusader po pics doc krArc EXTRA_DIST = krusader.kdevprj admin AUTHORS COPYING ChangeLog INSTALL README TODO krusader.lsm krusader.spec --- 1,5 ---- ####### kdevelop will overwrite this part!!! (begin)########## ! SUBDIRS = krusader po pics doc krArc iso EXTRA_DIST = krusader.kdevprj admin AUTHORS COPYING ChangeLog INSTALL README TODO krusader.lsm krusader.spec Index: krusader.kdevprj =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader.kdevprj,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** krusader.kdevprj 12 Apr 2004 11:37:52 -0000 1.54 --- krusader.kdevprj 23 Aug 2004 22:10:27 -0000 1.55 *************** *** 63,67 **** [Makefile.am] files=krusader.kdevprj,admin,AUTHORS,COPYING,ChangeLog,INSTALL,README,TODO,krusader.lsm,krusader.spec ! sub_dirs=krusader,po,pics,doc,krArc type=normal --- 63,67 ---- [Makefile.am] files=krusader.kdevprj,admin,AUTHORS,COPYING,ChangeLog,INSTALL,README,TODO,krusader.lsm,krusader.spec ! sub_dirs=krusader,po,pics,doc,krArc,iso type=normal |
From: Karai C. <ck...@us...> - 2004-08-23 21:59:57
|
Update of /cvsroot/krusader/krusader_kde3/iso/libisofs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23197/libisofs Log Message: Directory /cvsroot/krusader/krusader_kde3/iso/libisofs added to the repository |
From: Karai C. <ck...@us...> - 2004-08-23 21:58:59
|
Update of /cvsroot/krusader/krusader_kde3/iso In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22872/iso Log Message: Directory /cvsroot/krusader/krusader_kde3/iso added to the repository |
From: Dirk E. <des...@us...> - 2004-08-22 12:09:34
|
Update of /cvsroot/krusader/krusader_kde3/krusader/GUI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1293/krusader/GUI Modified Files: krusaderstatus.cpp Log Message: removed old comment Index: krusaderstatus.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/GUI/krusaderstatus.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** krusaderstatus.cpp 21 Aug 2004 11:59:22 -0000 1.3 --- krusaderstatus.cpp 22 Aug 2004 12:09:23 -0000 1.4 *************** *** 37,43 **** KrusaderStatus::KrusaderStatus(QWidget *parent, const char *name ): KStatusBar(parent,name){ ! //insertItem(i18n(S_READY.local8Bit()),S_READY_ID); ! insertItem(S_READY,S_READY_ID); ! setMaximumHeight(QFontMetrics(font()).height()+2); } --- 37,42 ---- KrusaderStatus::KrusaderStatus(QWidget *parent, const char *name ): KStatusBar(parent,name){ ! insertItem(S_READY,S_READY_ID); ! setMaximumHeight(QFontMetrics(font()).height()+2); } *************** *** 46,49 **** #include "krusaderstatus.moc" - - --- 45,46 ---- |
From: Dirk E. <des...@us...> - 2004-08-22 12:05:51
|
Update of /cvsroot/krusader/krusader_kde3/po In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32649/po Modified Files: pl.po Log Message: krusader-1.50-cvs Index: pl.po =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/po/pl.po,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** pl.po 7 Aug 2004 13:48:33 -0000 1.9 --- pl.po 22 Aug 2004 12:05:39 -0000 1.10 *************** *** 6,10 **** # Marcin Szafran <jm...@po...>, 2002, 2003. # Lukasz Janyst <lj...@wp...>, 2002, 2003. ! # Marcin Garski <ga...@po...>, 2004. # msgid "" --- 6,10 ---- # Marcin Szafran <jm...@po...>, 2002, 2003. # Lukasz Janyst <lj...@wp...>, 2002, 2003. ! # Marcin Garski <mg...@po...>, 2004. # [...3699 lines suppressed...] --- 4203,4208 ---- #: Splitter/splittergui.cpp:72 msgid "User Defined" ! msgstr "Użytkownika" #: Splitter/splittergui.cpp:79 *************** *** 4279,4282 **** --- 4306,4315 ---- msgstr "BÅÄ d podczas odczytu pliku %1!" + #~ msgid "Failed to pack" + #~ msgstr "Spakowanie niemożliwe" + + #~ msgid "History" + #~ msgstr "Historia" + #, fuzzy #~ msgid "Close this window" |
From: Dirk E. <des...@us...> - 2004-08-21 11:59:34
|
Update of /cvsroot/krusader/krusader_kde3/krusader/GUI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6028/krusader/GUI Modified Files: krusaderstatus.cpp Log Message: fixed double usage of i18n() Index: krusaderstatus.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/GUI/krusaderstatus.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** krusaderstatus.cpp 2 Nov 2002 23:31:14 -0000 1.2 --- krusaderstatus.cpp 21 Aug 2004 11:59:22 -0000 1.3 *************** *** 1,4 **** /*************************************************************************** ! krusaderstatus.cpp ------------------- copyright : (C) 2000 by Shie Erlich & Rafi Yanai --- 1,4 ---- /*************************************************************************** ! krusaderstatus.cpp ------------------- copyright : (C) 2000 by Shie Erlich & Rafi Yanai *************** *** 37,41 **** KrusaderStatus::KrusaderStatus(QWidget *parent, const char *name ): KStatusBar(parent,name){ ! insertItem(i18n(S_READY.local8Bit()),S_READY_ID); setMaximumHeight(QFontMetrics(font()).height()+2); } --- 37,42 ---- KrusaderStatus::KrusaderStatus(QWidget *parent, const char *name ): KStatusBar(parent,name){ ! //insertItem(i18n(S_READY.local8Bit()),S_READY_ID); ! insertItem(S_READY,S_READY_ID); setMaximumHeight(QFontMetrics(font()).height()+2); } |
From: Karai C. <ck...@us...> - 2004-08-20 18:48:08
|
Update of /cvsroot/krusader/krusader_kde3/krusader/VFS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31753/krusader_kde3/krusader/VFS Modified Files: krarchandler.cpp Log Message: ADDED: full handling of arj and lha packers Index: krarchandler.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/VFS/krarchandler.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** krarchandler.cpp 17 Aug 2004 17:03:39 -0000 1.10 --- krarchandler.cpp 20 Aug 2004 18:47:58 -0000 1.11 *************** *** 52,58 **** --- 52,60 ---- if ( KrServices::cmdExist( "zip" ) ) packers.append( "zip" ); if ( KrServices::cmdExist( "rpm" ) ) packers.append( "rpm" ); + if ( KrServices::cmdExist( "lha" ) ) packers.append( "lha" ); if ( KrServices::cmdExist( "cpio" ) ) packers.append( "cpio" ); if ( KrServices::cmdExist( "unrar" ) ) packers.append( "unrar" ); if ( KrServices::cmdExist( "rar" ) ) packers.append( "rar" ); + if ( KrServices::cmdExist( "arj" ) ) packers.append( "arj" ); if ( KrServices::cmdExist( "unarj" ) ) packers.append( "unarj" ); if ( KrServices::cmdExist( "unace" ) ) packers.append( "unace" ); *************** *** 85,93 **** else if ( type == "zip2" && lst.contains( "bzip2" ) ) return true; ! else if ( type == "-rar" && lst.contains( "unrar" ) ) return true; else if ( type == "-ace" && lst.contains( "unace" ) ) return true; ! else if ( type == "-arj" && lst.contains( "unarj" ) ) return true; else if ( type == "-rpm" && lst.contains( "cpio" ) ) --- 87,97 ---- else if ( type == "zip2" && lst.contains( "bzip2" ) ) return true; ! else if ( type == "-lha" && lst.contains( "lha" ) ) ! return true; ! else if ( type == "-rar" && ( lst.contains( "unrar" ) || lst.contains( "rar" ) ) ) return true; else if ( type == "-ace" && lst.contains( "unace" ) ) return true; ! else if ( type == "-arj" && ( lst.contains( "unarj" ) || lst.contains( "arj" ) ) ) return true; else if ( type == "-rpm" && lst.contains( "cpio" ) ) *************** *** 110,113 **** --- 114,118 ---- ( type == "zip2" && krConfig->readBoolEntry( "Do BZip2", _DoBZip2 ) ) || ( type == "-zip" && krConfig->readBoolEntry( "Do UnZip", _DoUnZip ) ) || + ( type == "-lha" && krConfig->readBoolEntry( "Do Lha", _DoUnZip ) ) || ( type == "-rar" && krConfig->readBoolEntry( "Do UnRar", _DoUnRar ) ) || ( type == "-arj" && krConfig->readBoolEntry( "Do UnArj", _DoUnarj ) ) || *************** *** 136,142 **** else if ( type == "tarz" ) lister = KrServices::fullPathName( "tar" ) + " -tvzf"; else if ( type == "-tbz" ) lister = KrServices::fullPathName( "tar" ) + " -tjvf"; ! else if ( type == "-rar" ) lister = KrServices::fullPathName( "unrar" ) + " l"; else if ( type == "-ace" ) lister = KrServices::fullPathName( "unace" ) + " l"; ! else if ( type == "-arj" ) lister = KrServices::fullPathName( "unarj" ) + " l"; else return 0L; --- 141,148 ---- else if ( type == "tarz" ) lister = KrServices::fullPathName( "tar" ) + " -tvzf"; else if ( type == "-tbz" ) lister = KrServices::fullPathName( "tar" ) + " -tjvf"; ! else if ( type == "-lha" ) lister = KrServices::fullPathName( "lha" ) + " l"; ! else if ( type == "-rar" ) lister = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " l"; else if ( type == "-ace" ) lister = KrServices::fullPathName( "unace" ) + " l"; ! else if ( type == "-arj" ) lister = KrServices::fullPathName( KrServices::cmdExist( "arj" ) ? "arj" : "unarj" ) + " l"; else return 0L; *************** *** 186,192 **** else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -cd"; else if ( type == "zip2" ) packer = KrServices::fullPathName( "bzip2" ) + " -cdk"; ! else if ( type == "-rar" ) packer = KrServices::fullPathName( "unrar" ) + " x"; else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " x"; ! else if ( type == "-arj" ) packer = KrServices::fullPathName( "unarj" ) + " x"; else return false; --- 192,201 ---- else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -cd"; else if ( type == "zip2" ) packer = KrServices::fullPathName( "bzip2" ) + " -cdk"; ! else if ( type == "-lha" ) packer = KrServices::fullPathName( "lha" ) + " xf"; ! else if ( type == "-rar" ) packer = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " -y x"; else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " x"; ! else if ( type == "-arj" ) packer = KrServices::cmdExist( "arj" ) ? ! KrServices::fullPathName( "arj" ) + " -y x" : ! KrServices::fullPathName( "unarj" ) + " x"; else return false; *************** *** 239,245 **** else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -tv"; else if ( type == "zip2" ) packer = KrServices::fullPathName( "bzip2" ) + " -tv"; ! else if ( type == "-rar" ) packer = KrServices::fullPathName( "unrar" ) + " t"; else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " t"; ! else if ( type == "-arj" ) packer = KrServices::fullPathName( "unarj" ) + " t"; else if ( type == "cpio" ) packer = KrServices::fullPathName( "cpio" ) + " --only-verify-crc -tvF" ; else return false; --- 248,255 ---- else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -tv"; else if ( type == "zip2" ) packer = KrServices::fullPathName( "bzip2" ) + " -tv"; ! else if ( type == "-rar" ) packer = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " t"; else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " t"; ! else if ( type == "-lha" ) packer = KrServices::fullPathName( "lha" ) + " t"; ! else if ( type == "-arj" ) packer = KrServices::fullPathName( KrServices::cmdExist( "arj" ) ? "arj" : "unarj" ) + " t"; else if ( type == "cpio" ) packer = KrServices::fullPathName( "cpio" ) + " --only-verify-crc -tvF" ; else return false; *************** *** 277,281 **** // set the right packer to do the job QString packer; ! if ( type == "zip" ) { packer = KrServices::fullPathName( "zip" ) + " -ry"; type = "-zip"; } else if ( type == "tar" ) { packer = KrServices::fullPathName( "tar" ) + " -cvf"; type = "-tar"; } else if ( type == "tar.gz" ) { packer = KrServices::fullPathName( "tar" ) + " -cvzf"; type = "-tgz"; } else if ( type == "tar.bz2" ) { packer = KrServices::fullPathName( "tar" ) + " -cvjf"; type = "-tbz"; } else if ( type == "rar" ) { packer = KrServices::fullPathName( "rar" ) + " -r a"; type = "-rar"; } else return false; // prepare to pack --- 287,298 ---- // set the right packer to do the job QString packer; ! if ( type == "zip" ) { packer = KrServices::fullPathName( "zip" ) + " -ry"; type = "-zip"; } ! else if ( type == "tar" ) { packer = KrServices::fullPathName( "tar" ) + " -cvf"; type = "-tar"; } ! else if ( type == "tar.gz" ) { packer = KrServices::fullPathName( "tar" ) + " -cvzf"; type = "-tgz"; } ! else if ( type == "tar.bz2" ) { packer = KrServices::fullPathName( "tar" ) + " -cvjf"; type = "-tbz"; } ! else if ( type == "rar" ) { packer = KrServices::fullPathName( "rar" ) + " -r a"; type = "-rar"; } ! else if ( type == "lha" ) { packer = KrServices::fullPathName( "lha" ) + " a"; type = "-lha"; } ! else if ( type == "arj" ) { packer = KrServices::fullPathName( "arj" ) + " -r a"; type = "-arj"; } ! else return false; // prepare to pack |
From: Karai C. <ck...@us...> - 2004-08-20 18:48:08
|
Update of /cvsroot/krusader/krusader_kde3/krusader/Konfigurator In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31753/krusader_kde3/krusader/Konfigurator Modified Files: kgarchives.cpp kgdependencies.cpp Log Message: ADDED: full handling of arj and lha packers Index: kgarchives.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/Konfigurator/kgarchives.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** kgarchives.cpp 24 Apr 2004 09:32:41 -0000 1.9 --- kgarchives.cpp 20 Aug 2004 18:47:57 -0000 1.10 *************** *** 66,72 **** {"Archives","Do Unarj", _DoArj, i18n( "Arj" ), false, ""}, {"Archives","Do RPM", _DoRPM, i18n( "Rpm" ), false, ""}, ! {"Archives","Do UnAce", _DoUnAce, i18n( "Ace" ), false, ""}}; ! cbs = createCheckBoxGroup( 3, 0, packers, 8, generalGrp ); generalGrid->addWidget( cbs, 1, 0 ); --- 66,73 ---- {"Archives","Do Unarj", _DoArj, i18n( "Arj" ), false, ""}, {"Archives","Do RPM", _DoRPM, i18n( "Rpm" ), false, ""}, ! {"Archives","Do UnAce", _DoUnAce, i18n( "Ace" ), false, ""}, ! {"Archives","Do Lha", _DoLha, i18n( "Lha" ), false, ""}}; ! cbs = createCheckBoxGroup( 3, 0, packers, 9, generalGrp ); generalGrid->addWidget( cbs, 1, 0 ); *************** *** 120,132 **** if (PS("zip")) info+=i18n("zip: found, packing enabled.\n"); else info+=i18n("zip: NOT found, packing DISABLED.\n==> zip can be obtained at www.info-zip.org\n"); if (PS("rpm") && PS("cpio")) info+=i18n("rpm: found, unpacking enabled.\n"); else if (PS("rpm") && !PS("cpio")) info+=i18n("rpm found but cpio NOT found: unpacking DISABLED.\n==>cpio can be obtained at www.gnu.org\n"); else info+=i18n("rpm: NOT found, unpacking is DISABLED.\n==> rpm can be obtained at www.gnu.org\n"); if (PS("unrar")) info+=i18n("unrar: found, unpacking is enabled.\n"); ! else info+=i18n("unrar: NOT found, unpacking is DISABLED.\n==> unrar can be obtained at www.rarsoft.com\n"); ! if (PS("rar")) info+=i18n("rar: found, packing is enabled.\n"); else info+=i18n("rar: NOT found, packing is DISABLED.\n==> rar can be obtained at www.rarsoft.com\n"); if (PS("unarj")) info+=i18n("unarj: found, unpacking is enabled.\n"); ! else info+=i18n("unarj: NOT found, unpacking is DISABLED.\n==> unarj can be obtained at www.arjsoft.com\n"); if (PS("unace")) info+=i18n("unace: found, unpacking is enabled.\n"); else info+=i18n("unace: NOT found, unpacking is DISABLED.\n==> unace can be obtained at www.winace.com\n"); --- 121,143 ---- if (PS("zip")) info+=i18n("zip: found, packing enabled.\n"); else info+=i18n("zip: NOT found, packing DISABLED.\n==> zip can be obtained at www.info-zip.org\n"); + if (PS("lha")) info+=i18n("lha: found, packing and unpacking enabled.\n"); + else info+=i18n("lha: NOT found, packing and unpacking DISABLED.\n==> lha can be obtained at www.gnu.org\n"); if (PS("rpm") && PS("cpio")) info+=i18n("rpm: found, unpacking enabled.\n"); else if (PS("rpm") && !PS("cpio")) info+=i18n("rpm found but cpio NOT found: unpacking DISABLED.\n==>cpio can be obtained at www.gnu.org\n"); else info+=i18n("rpm: NOT found, unpacking is DISABLED.\n==> rpm can be obtained at www.gnu.org\n"); if (PS("unrar")) info+=i18n("unrar: found, unpacking is enabled.\n"); ! else { ! if( PS("rar")) info+=i18n("unrar: NOT found.\n"); ! else info+=i18n("unrar: NOT found, unpacking is DISABLED.\n==> unrar can be obtained at www.rarsoft.com\n"); ! } ! if (PS("rar")) info+=i18n("rar: found, packing and unpacking is enabled.\n"); else info+=i18n("rar: NOT found, packing is DISABLED.\n==> rar can be obtained at www.rarsoft.com\n"); if (PS("unarj")) info+=i18n("unarj: found, unpacking is enabled.\n"); ! else { ! if( PS("arj")) info+=i18n("unarj: NOT found.\n"); ! else info+=i18n("unarj: NOT found, unpacking is DISABLED.\n==> unarj can be obtained at www.arjsoft.com\n"); ! } ! if (PS("arj")) info+=i18n("arj: found, packing and unpacking is enabled.\n"); ! else info+=i18n("arj: NOT found, packing is DISABLED.\n==> arj can be obtained at www.arjsoft.com\n"); if (PS("unace")) info+=i18n("unace: found, unpacking is enabled.\n"); else info+=i18n("unace: NOT found, unpacking is DISABLED.\n==> unace can be obtained at www.winace.com\n"); *************** *** 148,155 **** cbs->find( "Do BZip2" )->setEnabled(PS("bzip2")); cbs->find( "Do UnZip" )->setEnabled(PS("unzip")); cbs->find( "Do RPM" )->setEnabled(PS("rpm") || PS("cpio")); ! cbs->find( "Do UnRar" )->setEnabled(PS("unrar")); cbs->find( "Do UnAce" )->setEnabled(PS("unace")); ! cbs->find( "Do Unarj" )->setEnabled(PS("unarj")); krConfig->setGroup( "Archives" ); --- 159,167 ---- cbs->find( "Do BZip2" )->setEnabled(PS("bzip2")); cbs->find( "Do UnZip" )->setEnabled(PS("unzip")); + cbs->find( "Do Lha" )->setEnabled(PS("lha")); cbs->find( "Do RPM" )->setEnabled(PS("rpm") || PS("cpio")); ! cbs->find( "Do UnRar" )->setEnabled(PS("unrar") || PS("rar") ); cbs->find( "Do UnAce" )->setEnabled(PS("unace")); ! cbs->find( "Do Unarj" )->setEnabled(PS("unarj") || PS("arj") ); krConfig->setGroup( "Archives" ); Index: kgdependencies.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/Konfigurator/kgdependencies.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** kgdependencies.cpp 16 Aug 2004 06:19:32 -0000 1.8 --- kgdependencies.cpp 20 Aug 2004 18:47:57 -0000 1.9 *************** *** 77,90 **** archGrid->setAlignment( Qt::AlignTop ); ! addApplication( "bzip2", archGrid, 0, packers_tab ); ! addApplication( "cpio", archGrid, 1, packers_tab ); ! addApplication( "gzip", archGrid, 2, packers_tab ); ! addApplication( "rar", archGrid, 3, packers_tab ); ! addApplication( "tar", archGrid, 4, packers_tab ); ! addApplication( "unace", archGrid, 5, packers_tab ); ! addApplication( "unarj", archGrid, 6, packers_tab ); ! addApplication( "unrar", archGrid, 7, packers_tab ); ! addApplication( "unzip", archGrid, 8, packers_tab ); ! addApplication( "zip", archGrid, 9, packers_tab ); kgDependenciesLayout->addWidget( tabWidget, 0, 0 ); --- 77,92 ---- archGrid->setAlignment( Qt::AlignTop ); ! addApplication( "arj", archGrid, 0, packers_tab ); ! addApplication( "bzip2", archGrid, 1, packers_tab ); ! addApplication( "cpio", archGrid, 2, packers_tab ); ! addApplication( "gzip", archGrid, 3, packers_tab ); ! addApplication( "lha", archGrid, 4, packers_tab ); ! addApplication( "rar", archGrid, 5, packers_tab ); ! addApplication( "tar", archGrid, 6, packers_tab ); ! addApplication( "unace", archGrid, 7, packers_tab ); ! addApplication( "unarj", archGrid, 8, packers_tab ); ! addApplication( "unrar", archGrid, 9, packers_tab ); ! addApplication( "unzip", archGrid,10, packers_tab ); ! addApplication( "zip", archGrid,11, packers_tab ); kgDependenciesLayout->addWidget( tabWidget, 0, 0 ); |
From: Karai C. <ck...@us...> - 2004-08-20 18:48:07
|
Update of /cvsroot/krusader/krusader_kde3/krusader/Dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31753/krusader_kde3/krusader/Dialogs Modified Files: packgui.cpp Log Message: ADDED: full handling of arj and lha packers Index: packgui.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/Dialogs/packgui.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** packgui.cpp 18 Oct 2003 12:42:39 -0000 1.2 --- packgui.cpp 20 Aug 2004 18:47:57 -0000 1.3 *************** *** 65,68 **** --- 65,70 ---- if (PS("zip")) typeData->insertItem("zip"); if (PS("rar")) typeData->insertItem("rar"); + if (PS("lha")) typeData->insertItem("lha"); + if (PS("arj")) typeData->insertItem("arj"); // set the last used packer as the top one QString tmp=krConfig->readEntry("lastUsedPacker",QString::null); |
From: Karai C. <ck...@us...> - 2004-08-20 18:48:07
|
Update of /cvsroot/krusader/krusader_kde3/krArc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31753/krusader_kde3/krArc Modified Files: krarc.cpp Log Message: ADDED: full handling of arj and lha packers Index: krarc.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krArc/krarc.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** krarc.cpp 19 Aug 2004 21:25:26 -0000 1.21 --- krarc.cpp 20 Aug 2004 18:47:56 -0000 1.22 *************** *** 116,119 **** --- 116,130 ---- } + if( arcType == "arj" || arcType == "lha" ) + { + QString arcDir = url.path().mid(arcFile->url().path().length()); + if( arcDir.right(1) != "/") arcDir = arcDir+"/"; + + if( dirDict.find( arcDir ) == 0 ) + addNewDir( arcDir ); + finished(); + return; + } + //QString tmpDir = arcTempDir+url.path(); QString arcDir = findArcDirectory(url); *************** *** 200,203 **** --- 211,215 ---- void kio_krarcProtocol::get(const KURL& url ){ + bool isArjGet = false; KRDEBUG(url.path()); if( !setArcFile(url.path()) ) return; *************** *** 228,231 **** --- 240,247 ---- if( cpioReady ){ proc << getCmd << arcTempDir+"contents.cpio " << "\"*"+file+"\""; + } else if( arcType == "arj" ) { + proc << getCmd << "\""+arcFile->url().path()+"\" " << "\""+file+"\""; + file = url.fileName(); + isArjGet = true; } else { // Determine the mimetype of the file to be retrieved, and emit it. *************** *** 241,245 **** QDir::setCurrent(arcTempDir); proc.start(KProcess::Block,KProcess::AllOutput); ! if( cpioReady ){ // the follwing block is ripped from KDE file KIO::Slave // $Id$ --- 257,261 ---- QDir::setCurrent(arcTempDir); proc.start(KProcess::Block,KProcess::AllOutput); ! if( cpioReady || isArjGet ){ // the follwing block is ripped from KDE file KIO::Slave // $Id$ *************** *** 316,319 **** --- 332,338 ---- processedSize( buff.st_size ); finished(); + + if( isArjGet ) + QFile(arcTempDir+file).remove(); return; } *************** *** 332,337 **** } if( !findFileEntry(url) ){ ! error(KIO::ERR_DOES_NOT_EXIST,url.path()); ! return; } --- 351,358 ---- } if( !findFileEntry(url) ){ ! if( ( arcType != "arj" && arcType != "lha" ) || isFile ) { ! error(KIO::ERR_DOES_NOT_EXIST,url.path()); ! return; ! } } *************** *** 532,539 **** int lineNo = 0; // the rar list is started with a ------ line. ! if(arcType == "rar"){ while(temp.file()->readLine(buf,1000) != -1){ line = QString::fromLocal8Bit(buf); ! if( line.startsWith("-----------") ) break; } } --- 553,560 ---- int lineNo = 0; // the rar list is started with a ------ line. ! if(arcType == "rar" || arcType == "arj" || arcType == "lha" ){ while(temp.file()->readLine(buf,1000) != -1){ line = QString::fromLocal8Bit(buf); ! if( line.startsWith("----------") ) break; } } *************** *** 542,551 **** if( arcType == "rar" ) { // the rar list is ended with a ------ line. ! if( line.startsWith("-----------") ) break; else{ temp.file()->readLine(buf,1000); line = line+QString::fromLocal8Bit(buf); } } parseLine(lineNo++,line.stripWhiteSpace(),temp.file()); } --- 563,588 ---- if( arcType == "rar" ) { // the rar list is ended with a ------ line. ! if( line.startsWith("----------") ) break; ! else{ ! temp.file()->readLine(buf,1000); ! line = line+QString::fromLocal8Bit(buf); ! } ! } ! if( arcType == "arj" ) { ! // the arj list is ended with a ------ line. ! if( line.startsWith("----------") ) break; else{ temp.file()->readLine(buf,1000); line = line+QString::fromLocal8Bit(buf); + temp.file()->readLine(buf,1000); + line = line+QString::fromLocal8Bit(buf); + temp.file()->readLine(buf,1000); + line = line+QString::fromLocal8Bit(buf); } } + if( arcType == "lha" ) { + // the arj list is ended with a ------ line. + if( line.startsWith("----------") ) break; + } parseLine(lineNo++,line.stripWhiteSpace(),temp.file()); } *************** *** 733,736 **** --- 770,796 ---- mode = parsePermString(perm); } + if(arcType == "arj"){ + nextWord(line); + // full name + fullName = nextWord(line,'\n'); + // ignore the next 2 fields + nextWord(line); nextWord(line); + // size + size = nextWord(line).toLong(); + // ignore the next 2 fields + nextWord(line); nextWord(line); + // date & time + QString d = nextWord(line); + int year = 1900 + d.mid(0,2).toInt(); + if( year < 1930 ) year+=100; + QDate qdate( year, d.mid(3,2).toInt(), d.mid(6,2).toInt() ); + QString t = nextWord(line); + QTime qtime(t.mid(0,2).toInt(),t.mid(3,2).toInt(),0); + time = QDateTime(qdate,qtime).toTime_t(); + // permissions + perm = nextWord(line); + if(perm.length() != 10) perm = (perm.at(0)=='d')? "drwxr-xr-x" : "-rw-r--r--" ; + mode = parsePermString(perm); + } if(arcType == "rpm"){ // full name *************** *** 774,777 **** --- 834,866 ---- size = arcFile->size(); } + if(arcType == "lha"){ + // permissions + perm = nextWord(line); + if(perm.length() != 10) perm = (perm.at(0)=='d')? "drwxr-xr-x" : "-rw-r--r--" ; + mode = parsePermString(perm); + // ignore the next field + nextWord(line); + // size + size = nextWord(line).toLong(); + // ignore the next field + nextWord(line); + // date & time + int month = (QStringList::split(',', "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec")).findIndex( nextWord(line) ) + 1; + int day = nextWord(line).toInt(); + int year = QDate::currentDate().year(); + QString third = nextWord(line); + QTime qtime; + + if( third.contains(":" ) ) + qtime = QTime::fromString( third ); + else + year = third.toInt(); + + QDate qdate(year, month, day ); + + time = QDateTime(qdate, qtime).toTime_t(); + // full name + fullName = nextWord(line,'\n'); + } if( fullName.right(1) == "/" ) fullName = fullName.left(fullName.length()-1); if( !fullName.startsWith("/") ) fullName = "/"+fullName; *************** *** 850,855 **** listCmd = fullPathName( "unzip" ) + " -ZTs-z-t-h "; getCmd = fullPathName( "unzip" ) + " -p "; ! delCmd = fullPathName( "zip" ) + " -d "; ! putCmd = fullPathName( "zip" ) + " -ry "; if( !getPassword().isEmpty() ) --- 939,950 ---- listCmd = fullPathName( "unzip" ) + " -ZTs-z-t-h "; getCmd = fullPathName( "unzip" ) + " -p "; ! ! if( KStandardDirs::findExe( "zip" ).isEmpty() ) { ! delCmd = QString::null; ! putCmd = QString::null; ! } else { ! delCmd = fullPathName( "zip" ) + " -d "; ! putCmd = fullPathName( "zip" ) + " -ry "; ! } if( !getPassword().isEmpty() ) *************** *** 859,867 **** } } else if (arcType == "rar"){ ! cmd = fullPathName( "unrar" ); ! listCmd = fullPathName( "unrar" ) + " -c- v "; ! getCmd = fullPathName( "unrar" ) + " p -ierr -idp -c- -y "; ! delCmd = fullPathName( "rar" ) + " d "; ! putCmd = fullPathName( "rar" ) + " -r a "; } else if(arcType == "rpm"){ cmd = fullPathName( "rpm" ); --- 954,973 ---- } } else if (arcType == "rar"){ ! if( KStandardDirs::findExe( "rar" ).isEmpty() ) ! { ! cmd = fullPathName( "unrar" ); ! listCmd = fullPathName( "unrar" ) + " -c- v "; ! getCmd = fullPathName( "unrar" ) + " p -ierr -idp -c- -y "; ! delCmd = QString::null; ! putCmd = QString::null; ! } ! else ! { ! cmd = fullPathName( "rar" ); ! listCmd = fullPathName( "rar" ) + " -c- v "; ! getCmd = fullPathName( "rar" ) + " p -ierr -idp -c- -y "; ! delCmd = fullPathName( "rar" ) + " d "; ! putCmd = fullPathName( "rar" ) + " -r a "; ! } } else if(arcType == "rpm"){ cmd = fullPathName( "rpm" ); *************** *** 882,885 **** --- 988,1003 ---- delCmd = QString::null; putCmd = QString::null; + } else if(arcType == "arj"){ + cmd = fullPathName( "arj" ); + listCmd = fullPathName( "arj" ) + " v "; + getCmd = fullPathName( "arj" ) + " -jyo e "; + delCmd = fullPathName( "arj" ) + " d "; + putCmd = fullPathName( "arj" ) + " -r a "; + } else if(arcType == "lha"){ + cmd = fullPathName( "lha" ); + listCmd = fullPathName( "lha" ) + " l "; + getCmd = fullPathName( "lha" ) + " pq "; + delCmd = fullPathName( "lha" ) + " d "; + putCmd = fullPathName( "lha" ) + " a "; } else { cmd = QString::null; |
From: Karai C. <ck...@us...> - 2004-08-20 18:48:06
|
Update of /cvsroot/krusader/krusader_kde3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31753/krusader_kde3 Modified Files: ChangeLog Log Message: ADDED: full handling of arj and lha packers Index: ChangeLog =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/ChangeLog,v retrieving revision 1.283 retrieving revision 1.284 diff -C2 -d -r1.283 -r1.284 *** ChangeLog 19 Aug 2004 16:38:13 -0000 1.283 --- ChangeLog 20 Aug 2004 18:47:56 -0000 1.284 *************** *** 1,3 **** --- 1,4 ---- ====================== + ADDED: full handling of arj and lha packers ADDED: useraction: new Placeholder %_Sync("synchronizer-profile")% ADDED: synchronizer: profile handling |
From: Karai C. <ck...@us...> - 2004-08-20 18:48:06
|
Update of /cvsroot/krusader/krusader_kde3/krusader In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31753/krusader_kde3/krusader Modified Files: defaults.h Log Message: ADDED: full handling of arj and lha packers Index: defaults.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/defaults.h,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** defaults.h 7 Aug 2004 11:17:11 -0000 1.14 --- defaults.h 20 Aug 2004 18:47:57 -0000 1.15 *************** *** 166,169 **** --- 166,171 ---- // Do RPM ///////////// ====> new #define _DoRPM true + // Do Lha ///////////// ====> new + #define _DoLha true // Allow Move Into Archive // #define _MoveIntoArchive false |
From: Dirk E. <des...@us...> - 2004-08-20 14:49:48
|
Update of /cvsroot/krusader/krusader_kde3/po In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17348/po Modified Files: de.po krusader.pot Log Message: krusader-1.50-cvs Index: krusader.pot =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/po/krusader.pot,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** krusader.pot 7 Aug 2004 13:48:33 -0000 1.17 --- krusader.pot 20 Aug 2004 14:49:38 -0000 1.18 *************** *** 11,15 **** "Project-Id-Version: krusader-1.50-cvs\n" "Report-Msgid-Bugs-To: \n" ! "POT-Creation-Date: 2004-08-07 15:42+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" --- 11,15 ---- "Project-Id-Version: krusader-1.50-cvs\n" "Report-Msgid-Bugs-To: \n" ! "POT-Creation-Date: 2004-08-20 16:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" [...1746 lines suppressed...] msgid "The %1 path is incorrect, no valid path found." msgstr "" ! #: Konfigurator/kgdependencies.cpp:119 msgid "The %1 path is incorrect, %2 used instead." msgstr "" --- 2908,2920 ---- msgstr "" ! #: Konfigurator/kgdependencies.cpp:72 msgid "Packers" msgstr "" ! #: Konfigurator/kgdependencies.cpp:117 msgid "The %1 path is incorrect, no valid path found." msgstr "" ! #: Konfigurator/kgdependencies.cpp:120 msgid "The %1 path is incorrect, %2 used instead." msgstr "" Index: de.po =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/po/de.po,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** de.po 7 Aug 2004 13:48:31 -0000 1.18 --- de.po 20 Aug 2004 14:49:37 -0000 1.19 *************** *** 11,16 **** "Project-Id-Version: krusader-1.50-cvs\n" "Report-Msgid-Bugs-To: \n" ! "POT-Creation-Date: 2004-08-07 15:42+0200\n" ! "PO-Revision-Date: 2004-08-07 14:09+0200\n" "Last-Translator: Dirk Eschler <des...@us...>\n" "Language-Team: German\n" --- 11,16 ---- "Project-Id-Version: krusader-1.50-cvs\n" "Report-Msgid-Bugs-To: \n" ! "POT-Creation-Date: 2004-08-20 16:13+0200\n" [...2226 lines suppressed...] *************** *** 4163,4168 **** #: Splitter/combiner.cpp:138 ! msgid "" ! "Validity checking is impossible without a good CRC file. Continue combining?" msgstr "" "Eine Gültigkeitsüberprüfung ist ohne eine gültige CRC-Datei unmöglich. Mit " --- 4218,4222 ---- #: Splitter/combiner.cpp:138 ! msgid "Validity checking is impossible without a good CRC file. Continue combining?" msgstr "" "Eine Gültigkeitsüberprüfung ist ohne eine gültige CRC-Datei unmöglich. Mit " *************** *** 4205,4206 **** --- 4259,4261 ---- msgid "Error at reading file %1!" msgstr "Fehler beim Lesen der Datei %1!" + |
From: Dirk E. <des...@us...> - 2004-08-20 14:46:23
|
Update of /cvsroot/krusader/krusader_kde3/krusader In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16861/krusader Modified Files: krusader.cpp Log Message: i18n fix for left/right history Index: krusader.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/krusader.cpp,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** krusader.cpp 18 Aug 2004 15:20:44 -0000 1.80 --- krusader.cpp 20 Aug 2004 14:46:13 -0000 1.81 *************** *** 497,503 **** new KAction( i18n( "Left bookmarks" ), ALT + Key_Left, SLOTS, SLOT( openLeftBookmarks() ), actionCollection(), "left bookmarks" ); ! new KAction( i18n( "History" ), ALT + CTRL + Key_Left, SLOTS, SLOT( openLeftHistory() ), actionCollection(), "left history" ); ! new KAction( i18n( "History" ), ALT + CTRL + Key_Right, SLOTS, SLOT( openRightHistory() ), actionCollection(), "right history" ); actNewTab = new KAction( i18n( "New tab" ), ALT + CTRL + Key_N, SLOTS, --- 497,503 ---- new KAction( i18n( "Left bookmarks" ), ALT + Key_Left, SLOTS, SLOT( openLeftBookmarks() ), actionCollection(), "left bookmarks" ); ! new KAction( i18n( "Left history" ), ALT + CTRL + Key_Left, SLOTS, SLOT( openLeftHistory() ), actionCollection(), "left history" ); ! new KAction( i18n( "Right history" ), ALT + CTRL + Key_Right, SLOTS, SLOT( openRightHistory() ), actionCollection(), "right history" ); actNewTab = new KAction( i18n( "New tab" ), ALT + CTRL + Key_N, SLOTS, |
From: Karai C. <ck...@us...> - 2004-08-19 21:25:35
|
Update of /cvsroot/krusader/krusader_kde3/krArc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26242/krusader_kde3/krArc Modified Files: krarc.cpp Log Message: Time fix for rar Index: krarc.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krArc/krarc.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** krarc.cpp 19 Aug 2004 20:27:58 -0000 1.20 --- krarc.cpp 19 Aug 2004 21:25:26 -0000 1.21 *************** *** 726,730 **** QDate qdate( year, d.mid(3,2).toInt(), d.mid(0,2).toInt() ); QString t = nextWord(line); ! QTime qtime(t.mid(0,2).toInt(),t.mid(4,2).toInt(),0); time = QDateTime(qdate,qtime).toTime_t(); // permissions --- 726,730 ---- QDate qdate( year, d.mid(3,2).toInt(), d.mid(0,2).toInt() ); QString t = nextWord(line); ! QTime qtime(t.mid(0,2).toInt(),t.mid(3,2).toInt(),0); time = QDateTime(qdate,qtime).toTime_t(); // permissions |
From: Karai C. <ck...@us...> - 2004-08-19 20:28:06
|
Update of /cvsroot/krusader/krusader_kde3/krArc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15935/krusader_kde3/krArc Modified Files: krarc.cpp Log Message: sanity fix Index: krarc.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krArc/krarc.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** krarc.cpp 19 Aug 2004 16:38:14 -0000 1.19 --- krarc.cpp 19 Aug 2004 20:27:58 -0000 1.20 *************** *** 940,943 **** --- 940,945 ---- { QString supposedName = krConfig->readEntry( name, name ); + if( supposedName.isEmpty() ) + supposedName = name; supposedName.replace( "\\", "\\\\" ); supposedName.replace( " ", "\\ " ); |
From: Karai C. <ck...@us...> - 2004-08-19 16:38:25
|
Update of /cvsroot/krusader/krusader_kde3/krArc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6916/krusader_kde3/krArc Modified Files: krarc.cpp krarc.h Log Message: FIXED: krarc ignores the dependencies, viewer size in maximized mode Index: krarc.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krArc/krarc.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** krarc.cpp 18 Aug 2004 19:43:09 -0000 1.18 --- krarc.cpp 19 Aug 2004 16:38:14 -0000 1.19 *************** *** 78,81 **** --- 78,84 ---- : SlaveBase("kio_krarc", pool_socket, app_socket), archiveChanged(true), arcFile(0L),cpioReady(false), password(QString::null) { + krConfig = new KConfig( "krusaderrc" ); + krConfig->setGroup( "Dependencies" ); + dirDict.setAutoDelete(true); *************** *** 844,852 **** if(arcType == "zip"){ ! cmd = "unzip"; ! listCmd = "unzip -ZTs-z-t-h "; ! getCmd = "unzip -p "; ! delCmd = "zip -d "; ! putCmd = "zip -ry "; if( !getPassword().isEmpty() ) --- 847,855 ---- if(arcType == "zip"){ ! cmd = fullPathName( "unzip" ); ! listCmd = fullPathName( "unzip" ) + " -ZTs-z-t-h "; ! getCmd = fullPathName( "unzip" ) + " -p "; ! delCmd = fullPathName( "zip" ) + " -d "; ! putCmd = fullPathName( "zip" ) + " -ry "; if( !getPassword().isEmpty() ) *************** *** 856,880 **** } } else if (arcType == "rar"){ ! cmd = "unrar" ; ! listCmd = "unrar -c- v "; ! getCmd = "unrar p -ierr -idp -c- -y "; ! delCmd = "rar d "; ! putCmd = "rar -r a "; } else if(arcType == "rpm"){ ! cmd = "rpm"; ! listCmd = "rpm --dump -lpq "; ! getCmd = "cpio --force-local --no-absolute-filenames -ivdF"; delCmd = QString::null; putCmd = QString::null; } else if(arcType == "gzip"){ ! cmd = "gzip"; ! listCmd = "gzip -l"; ! getCmd = "gzip -dc"; delCmd = QString::null; putCmd = QString::null; } else if(arcType == "bzip2"){ ! cmd = "bzip2" ; ! listCmd = "bzip2"; ! getCmd = "bzip2 -dc"; delCmd = QString::null; putCmd = QString::null; --- 859,883 ---- } } else if (arcType == "rar"){ ! cmd = fullPathName( "unrar" ); ! listCmd = fullPathName( "unrar" ) + " -c- v "; ! getCmd = fullPathName( "unrar" ) + " p -ierr -idp -c- -y "; ! delCmd = fullPathName( "rar" ) + " d "; ! putCmd = fullPathName( "rar" ) + " -r a "; } else if(arcType == "rpm"){ ! cmd = fullPathName( "rpm" ); ! listCmd = fullPathName( "rpm" ) + " --dump -lpq "; ! getCmd = fullPathName( "cpio" ) + " --force-local --no-absolute-filenames -ivdF"; delCmd = QString::null; putCmd = QString::null; } else if(arcType == "gzip"){ ! cmd = fullPathName( "gzip" ); ! listCmd = fullPathName( "gzip" ) + " -l"; ! getCmd = fullPathName( "gzip" ) + " -dc"; delCmd = QString::null; putCmd = QString::null; } else if(arcType == "bzip2"){ ! cmd = fullPathName( "bzip2" ); ! listCmd = fullPathName( "bzip2" ); ! getCmd = fullPathName( "bzip2" ) + " -dc"; delCmd = QString::null; putCmd = QString::null; *************** *** 934,936 **** --- 937,947 ---- } + QString kio_krarcProtocol::fullPathName( QString name ) + { + QString supposedName = krConfig->readEntry( name, name ); + supposedName.replace( "\\", "\\\\" ); + supposedName.replace( " ", "\\ " ); + return supposedName; + } + #include "krarc.moc" Index: krarc.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krArc/krarc.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** krarc.h 13 Aug 2004 17:21:13 -0000 1.5 --- krarc.h 19 Aug 2004 16:38:15 -0000 1.6 *************** *** 73,77 **** /** add a new directory (file list container). */ KIO::UDSEntryList* addNewDir(QString path); ! QDict<KIO::UDSEntryList> dirDict; //< the directoris data structure. bool archiveChanged; //< true if the archive was changed. --- 73,78 ---- /** add a new directory (file list container). */ KIO::UDSEntryList* addNewDir(QString path); ! QString fullPathName( QString name ); ! QDict<KIO::UDSEntryList> dirDict; //< the directoris data structure. bool archiveChanged; //< true if the archive was changed. *************** *** 83,86 **** --- 84,88 ---- bool cpioReady; //< Used for RPM files. QString password; //< Password for the archives + KConfig *krConfig; //< The configuration file for krusader }; |
From: Karai C. <ck...@us...> - 2004-08-19 16:38:24
|
Update of /cvsroot/krusader/krusader_kde3/krusader/KViewer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6916/krusader_kde3/krusader/KViewer Modified Files: krviewer.cpp Log Message: FIXED: krarc ignores the dependencies, viewer size in maximized mode Index: krviewer.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/KViewer/krviewer.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** krviewer.cpp 17 Aug 2004 17:03:38 -0000 1.23 --- krviewer.cpp 19 Aug 2004 16:38:15 -0000 1.24 *************** *** 46,49 **** --- 46,62 ---- setXMLFile("krviewerui.rc"); setHelpMenuEnabled(false); + + // KDE HACK START: Viewer fails to resize at maximized mode + int scnum = QApplication::desktop()->screenNumber(parentWidget()); + QRect desk = QApplication::desktop()->screenGeometry(scnum); + KGlobal::config()->setGroup( "KrViewerWindow" ); + QSize size( KGlobal::config()->readNumEntry( QString::fromLatin1("Width %1").arg(desk.width()), 0 ), + KGlobal::config()->readNumEntry( QString::fromLatin1("Height %1").arg(desk.height()), 0 ) ); + if( size.width() > desk.width() ) + KGlobal::config()->writeEntry( QString::fromLatin1("Width %1").arg(desk.width()), desk.width() ); + if( size.height() > desk.height() ) + KGlobal::config()->writeEntry( QString::fromLatin1("Height %1").arg(desk.height()), desk.height() ); + // KDE HACK END + setAutoSaveSettings("KrViewerWindow",true); tmpFile.setAutoDelete(true); |
From: Karai C. <ck...@us...> - 2004-08-19 16:38:24
|
Update of /cvsroot/krusader/krusader_kde3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6916/krusader_kde3 Modified Files: ChangeLog Log Message: FIXED: krarc ignores the dependencies, viewer size in maximized mode Index: ChangeLog =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/ChangeLog,v retrieving revision 1.282 retrieving revision 1.283 diff -C2 -d -r1.282 -r1.283 *** ChangeLog 18 Aug 2004 19:43:08 -0000 1.282 --- ChangeLog 19 Aug 2004 16:38:13 -0000 1.283 *************** *** 26,30 **** --- 26,32 ---- REACTIVATED: usermenu (now using the new useraction-system) + FIXED: the viewer size is forgotten in maximized mode (KDE hack) FIXED: internationalization bugs, illegal usage of QString::latin1() + FIXED: krarc, ignores the packer dependencies FIXED: krarc, rar: mkdir does not work, illegal time and permission info FIXED: krarc, problem with copying / moving inside the archive |
From: Karai C. <ck...@us...> - 2004-08-18 19:43:19
|
Update of /cvsroot/krusader/krusader_kde3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25088/krusader_kde3 Modified Files: ChangeLog Log Message: FIXED: krarc, rar: mkdir does not work, illegal time and permission info Index: ChangeLog =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/ChangeLog,v retrieving revision 1.281 retrieving revision 1.282 diff -C2 -d -r1.281 -r1.282 *** ChangeLog 18 Aug 2004 12:28:23 -0000 1.281 --- ChangeLog 18 Aug 2004 19:43:08 -0000 1.282 *************** *** 27,30 **** --- 27,31 ---- FIXED: internationalization bugs, illegal usage of QString::latin1() + FIXED: krarc, rar: mkdir does not work, illegal time and permission info FIXED: krarc, problem with copying / moving inside the archive FIXED: krarc, problem with international characters in put/mkdir |
From: Karai C. <ck...@us...> - 2004-08-18 19:43:19
|
Update of /cvsroot/krusader/krusader_kde3/krArc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25088/krusader_kde3/krArc Modified Files: krarc.cpp Log Message: FIXED: krarc, rar: mkdir does not work, illegal time and permission info Index: krarc.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krArc/krarc.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** krarc.cpp 13 Aug 2004 17:21:13 -0000 1.17 --- krarc.cpp 18 Aug 2004 19:43:09 -0000 1.18 *************** *** 123,126 **** --- 123,129 ---- } + if( tmpDir.endsWith( "/" ) ) + tmpDir.truncate( tmpDir.length() - 1 ); + // pack the directory KShellProcess proc; *************** *** 716,721 **** // date & time QString d = nextWord(line); ! QDate qdate(d.mid(6,2).toInt(),d.mid(3,2).toInt(),d.mid(0,2).toInt()); ! if( qdate.year() < 1930 ) qdate.addYears(100); QString t = nextWord(line); QTime qtime(t.mid(0,2).toInt(),t.mid(4,2).toInt(),0); --- 719,725 ---- // date & time QString d = nextWord(line); ! int year = 1900 + d.mid(6,2).toInt(); ! if( year < 1930 ) year+=100; ! QDate qdate( year, d.mid(3,2).toInt(), d.mid(0,2).toInt() ); QString t = nextWord(line); QTime qtime(t.mid(0,2).toInt(),t.mid(4,2).toInt(),0); *************** *** 805,809 **** --- 809,838 ---- dirDict.insert(fullName,new UDSEntryList()); else + { + // try to overwrite an existing entry + UDSEntryList::iterator entryIt; + UDSEntry::iterator atomIt; + + for ( entryIt = dir->begin(); entryIt != dir->end(); ++entryIt ) + for( atomIt = (*entryIt).begin(); atomIt != (*entryIt).end(); ++atomIt ) + if( (*atomIt).m_uds == UDS_NAME ) + if((*atomIt).m_str == name) + { + for( atomIt = (*entryIt).begin(); atomIt != (*entryIt).end(); ++atomIt ) + { + switch( (*atomIt).m_uds ) + { + case UDS_MODIFICATION_TIME: + (*atomIt).m_long = time; + break; + case UDS_ACCESS: + (*atomIt).m_long = mode & 07777; + break; + } + } + return; + } return; // there is alreay an entry for this directory + } } |
From: Karai C. <ck...@us...> - 2004-08-18 15:20:55
|
Update of /cvsroot/krusader/krusader_kde3/krusader In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1052/krusader_kde3/krusader Modified Files: krusader.cpp panelmanager.cpp panelmanager.h Log Message: ADDED: saving and restoring the active tabs Index: panelmanager.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/panelmanager.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** panelmanager.cpp 29 Jul 2004 20:52:32 -0000 1.13 --- panelmanager.cpp 18 Aug 2004 15:20:46 -0000 1.14 *************** *** 150,153 **** --- 150,167 ---- } + int PanelManager::activeTab() + { + return _tabbar->indexOf( _tabbar->currentTab() ); + } + + void PanelManager::setActiveTab( int panelIndex ) + { + QTab *current = _tabbar->tabAt( panelIndex ); + if( current == 0 ) + return; + _tabbar->setCurrentTab( current ); + slotChangePanel ( dynamic_cast<PanelTab*>( _tabbar->tabAt( panelIndex ) )->panel ); + } + void PanelManager::recreatePanels() { int panelCount = _tabbar->count(), identifier = 0; Index: krusader.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/krusader.cpp,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** krusader.cpp 10 Aug 2004 21:21:06 -0000 1.79 --- krusader.cpp 18 Aug 2004 15:20:44 -0000 1.80 *************** *** 255,258 **** --- 255,263 ---- for ( it = ++(l2.begin()); it != l2.end(); ++it ) mainView->rightMng->slotNewTab( *it ); + + krConfig->setGroup( "Startup" ); + mainView->leftMng->setActiveTab( krConfig->readNumEntry( "Left Active Tab", 0 ) ); + krConfig->setGroup( "Startup" ); + mainView->rightMng->setActiveTab( krConfig->readNumEntry( "Right Active Tab", 0 ) ); } } *************** *** 540,543 **** --- 545,550 ---- toolBar() ->saveSettings( krConfig, "Private" ); config->setGroup( "Startup" ); + config->writeEntry( "Left Active Tab", mainView->leftMng->activeTab() ); + config->writeEntry( "Right Active Tab", mainView->rightMng->activeTab() ); mainView->leftMng->saveSettings( krConfig, "Left Tab Bar" ); mainView->rightMng->saveSettings( krConfig, "Right Tab Bar" ); Index: panelmanager.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/panelmanager.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** panelmanager.h 29 Jul 2004 20:51:30 -0000 1.8 --- panelmanager.h 18 Aug 2004 15:20:46 -0000 1.9 *************** *** 42,46 **** */ void swapPanels() {_left = !_left;} ! void saveSettings(KConfig *config, const QString& key); public slots: --- 42,49 ---- */ void swapPanels() {_left = !_left;} ! ! void saveSettings(KConfig *config, const QString& key); ! int activeTab(); ! void setActiveTab( int ); public slots: |
From: Jonas B. <jb...@us...> - 2004-08-18 12:28:34
|
Update of /cvsroot/krusader/krusader_kde3/krusader/GUI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27625/krusader/GUI Modified Files: addplaceholderpopup.cpp addplaceholderpopup.h Log Message: ADDED: useraction: new Placeholder %_Sync("synchronizer-profile")% Index: addplaceholderpopup.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/GUI/addplaceholderpopup.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** addplaceholderpopup.cpp 27 Jul 2004 22:41:12 -0000 1.2 --- addplaceholderpopup.cpp 18 Aug 2004 12:28:23 -0000 1.3 *************** *** 152,155 **** --- 152,157 ---- else if ( currentPlaceholder->parameter[ i ].preset == "__bookmark" ) _parameter.append( new ParameterBookmark( ¤tPlaceholder->parameter[ i ], plainPage() ) ); + else if ( currentPlaceholder->parameter[ i ].preset == "__syncprofile" ) + _parameter.append( new ParameterSyncprofile( ¤tPlaceholder->parameter[ i ], plainPage() ) ); else _parameter.append( new ParameterText( ¤tPlaceholder->parameter[ i ], plainPage() ) ); *************** *** 455,457 **** --- 457,488 ---- } + ///////////// ParameterSyncprofile + ParameterSyncprofile::ParameterSyncprofile( Expander::Parameter* parameter, QWidget* parent ) : ParameterBase( parameter, parent ) { + QVBoxLayout* layout = new QVBoxLayout( this ); + layout->setAutoAdd( true ); + layout->setSpacing( 6 ); + + new QLabel( parameter->description, this ); + _combobox = new KComboBox( this ); + + krConfig->setGroup("Synchronize"); + + int profileNum = krConfig->readNumEntry( "Profile Number", 0 ); + int i; + for( i = 0; i != profileNum; i++ ) + _combobox->insertItem( (krConfig->readListEntry(QString("Profile%1").arg(i+1)))[0] ); + } + + QString ParameterSyncprofile::text() { + return _combobox->currentText(); + } + QString ParameterSyncprofile::preset() { + return _combobox->text( 0 ); + } + void ParameterSyncprofile::reset() { + _combobox->setCurrentItem( 0 ); + } + bool ParameterSyncprofile::valid() { + return true; + } Index: addplaceholderpopup.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/GUI/addplaceholderpopup.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** addplaceholderpopup.h 23 Jul 2004 00:03:18 -0000 1.1 --- addplaceholderpopup.h 18 Aug 2004 12:28:23 -0000 1.2 *************** *** 226,229 **** --- 226,243 ---- }; + /** + * A ComboBox with all profiles available for the Synchronizer + * used with default = "__syncprofile" + */ + class ParameterSyncprofile : public ParameterBase { + public: + ParameterSyncprofile( Expander::Parameter* parameter, QWidget* parent ); + QString text(); + QString preset(); + void reset(); + bool valid(); + private: + KComboBox * _combobox; + }; //////////////////////////////////////////////////////////////////////////////////////////// |