diff options
author | Yves Duret <yduret@mandriva.com> | 2001-06-11 09:21:55 +0000 |
---|---|---|
committer | Yves Duret <yduret@mandriva.com> | 2001-06-11 09:21:55 +0000 |
commit | 158453b5af2da4d8ba4bd026035817b4a192efb5 (patch) | |
tree | 69ca37d4bee8aa770d4eabf95b3390820c7d025b | |
parent | cf0a868b0026cf4c18f5aa9fa2a0da9fffeee813 (diff) | |
download | transfugdrake-158453b5af2da4d8ba4bd026035817b4a192efb5.tar transfugdrake-158453b5af2da4d8ba4bd026035817b4a192efb5.tar.gz transfugdrake-158453b5af2da4d8ba4bd026035817b4a192efb5.tar.bz2 transfugdrake-158453b5af2da4d8ba4bd026035817b4a192efb5.tar.xz transfugdrake-158453b5af2da4d8ba4bd026035817b4a192efb5.zip |
added some files...
-rw-r--r-- | COPYING | 340 | ||||
-rw-r--r-- | Makefile | 41 | ||||
-rw-r--r-- | README | 5 | ||||
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | transfug_oe.c | 484 | ||||
-rw-r--r-- | transfugdrake.pm | 94 | ||||
-rw-r--r-- | transfugdrake.spec | 87 |
7 files changed, 1053 insertions, 0 deletions
@@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c7b3b75 --- /dev/null +++ b/Makefile @@ -0,0 +1,41 @@ +VERSION = $(shell awk '/define version/ { print $$3 }' $(NAME).spec) +NAME = transfugdrake +SUBDIRS = po +localedir = $(prefix)/usr/share/locale +RPM=$(HOME)/rpm + +override CFLAGS += -DPACKAGE=\"$(NAME)\" -DLOCALEDIR=\"$(localedir)\" + +all: transfugdrake + for d in $(SUBDIRS); do ( cd $$d ; make $@ ) ; done + +clean: + $(MAKE) -C po $@ + rm -f smbdrake core .#*[0-9] + for d in $(SUBDIRS); do ( cd $$d ; make $@ ) ; done + +install: all + $(MAKE) -C po $@ + install -d $(RPM_BUILD_ROOT)/usr/{X11R6/bin/,share/icons} + install -d $(RPM_BUILD_ROOT)/usr/sbin + install -s -m755 $(NAME) $(RPM_BUILD_ROOT)/usr/X11R6/bin/ + install -m644 pixmaps/*.xpm $(RPM_BUILD_ROOT)/usr/share/icons/ + install -m644 pixmaps/*.png $(RPM_BUILD_ROOT)/usr/share/icons/ + for d in $(SUBDIRS); do ( cd $$d ; make $@ ) ; done + +dis: clean + rm -rf $(NAME)-$(VERSION) ../$(NAME)-$(VERSION).tar* +# cvs commit + mkdir -p $(NAME)-$(VERSION) + find . -not -name "$(NAME)-$(VERSION)"|cpio -pd $(NAME)-$(VERSION)/ + find $(NAME)-$(VERSION) -type d -name CVS -o -name .cvsignore -o -name unused |xargs rm -rf + tar cf ../$(NAME)-$(VERSION).tar $(NAME)-$(VERSION) + bzip2 -9f ../$(NAME)-$(VERSION).tar + rm -rf $(NAME)-$(VERSION) + +rpm: dis ../$(NAME)-$(VERSION).tar.bz2 $(RPM) + cp -f ../$(NAME)-$(VERSION).tar.bz2 $(RPM)/SOURCES + cp -f *.xpm.bz2 $(RPM)/SOURCES + cp -f $(NAME).spec $(RPM)/SPECS/ + -rpm -ba --clean --rmsource $(NAME).spec + rm -f ../$(NAME)-$(VERSION).tar.bz2 @@ -0,0 +1,5 @@ +* transfugdrake + - a wizard to move from windows to linux + - works in two ways : standalone or embedded. + - works in two layout : gtk and newt +
\ No newline at end of file @@ -0,0 +1,2 @@ +* Wed, May 16 2001 +- Beginning conception of the modules. diff --git a/transfug_oe.c b/transfug_oe.c new file mode 100644 index 0000000..ee2eaaf --- /dev/null +++ b/transfug_oe.c @@ -0,0 +1,484 @@ +/* transfugdrake + * (c) 2001 Yves DUret <yduret@mandrakesof.com> + */ + +/* based on LIBOE 0.92 - STABLE + Copyright (C) 2000 Stephan B. Nedregård (stephan@micropop.com) */ + +/* 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#ifndef WINDOWS +#include <unistd.h> +#endif +#include <sys/stat.h> + +#define OE_CANNOTREAD 1 +#define OE_NOTOEBOX 2 +#define OE_POSITION 3 +#define OE_NOBODY 4 +#define OE_PANIC 5 + +/* #define DEBUG -- uncomment to get some DEBUG output to stdout */ + + +/* TABLE STRUCTURES + -- tables store pointers to message headers and other tables also + containing pointers to message headers and other tables -- */ + +struct oe_table_header { /* At the beginning of each table */ + int self, /* Pointer to self (filepos) */ + unknown1, /* Unknown */ + list, /* Pointer to list */ + next, /* Pointer to next */ + unknown3, /* Unknown */ + unknown4; /* Unknown */ +}; +typedef struct oe_table_header oe_table_header; + +struct oe_table_node { /* Actual table entries */ + int message, /* Pointer to message | 0 */ + list, /* Pointer to another table | 0 */ + unknown; /* Unknown */ +}; +typedef struct oe_table_node oe_table_node; + +struct oe_list { /* Internal use only */ + long pos; + struct oe_list *next; +}; +typedef struct oe_list oe_list; + + + +/* MESSAGE STRUCTURES + -- OE uses 16-byte segment headers inside the actual messages. These + are meaningful, as described below, but were not very easy to hack + correctly -- note that a message may be composed of segments located + anywhere in the mailbox file, some times far from each other. */ + +struct oe_msg_segmentheader { + int self, /* Pointer to self (filepos) */ + increase, /* Increase to next segment header (not in msg, in file!) */ + include, /* Number of bytes to include from this segment */ + next, /* Pointer to next message segment (in msg) (filepos) */ + usenet; /* Only used with usenet posts */ +}; +typedef struct oe_msg_segmentheader oe_msg_segmentheader; + + + + +/* INTERAL STRUCTURES */ +struct oe_internaldata{ + void (*oput)(char*); + FILE *oe; + oe_list *used; + int success, justheaders, failure; + int errcode; + struct stat *stat; +}; +typedef struct oe_internaldata oe_data; + + + +/* LIST OF USED TABLES */ + +void oe_posused(oe_data *data, long pos) { + oe_list *n = malloc(sizeof(oe_list)); + n->pos = pos; + n->next = data->used; + data->used = n; +} + +int oe_isposused(oe_data *data, long pos) { + oe_list *n = data->used; + while (n!=NULL) { + if (pos==n->pos) return 1; + n = n->next; + } + return 0; +} + +void oe_freeposused(oe_data *data) { + oe_list *n; + while (data->used!=NULL) {n=data->used->next; free(data->used); data->used=n;} +} + + +/* ACTUAL MESSAGE PARSER */ + +int oe_readmessage(oe_data *data, + long pos, + int newsarticle) { + int segheadsize = sizeof(oe_msg_segmentheader)-4; /*+(newsarticle<<2);*/ + oe_msg_segmentheader *sgm = malloc(sizeof(oe_msg_segmentheader)); + char buff[16], *ss = malloc(2048), *s = ss; + int nextsegment, endofsegment, i, headerwritten = 0; + fseek(data->oe,pos, SEEK_SET); + while (1) { + fread(sgm,segheadsize,1,data->oe); + if (pos!=sgm->self) { /* No body found*/ +#ifdef DEBUG + printf("- Fail reported at %.8x (%.8x)\n",pos,sgm->self); +#endif + free(sgm); + free(ss); + data->failure++; + return OE_NOBODY; + } + pos+=segheadsize; + nextsegment = pos+sgm->increase; + endofsegment = pos+sgm->include; + if (!headerwritten) { +#ifdef DEBUG + printf("%.8x : \n",pos-segheadsize); +#endif + data->oput("From liboe@linux Sun Jun 11 19:48:24 2000\n"); + headerwritten = 1; + } + while (pos<endofsegment) { + fread(&buff,1,16,data->oe); + for (i=0;i<16;i++,pos++) + if ((pos<endofsegment) && (buff[i]!=0x0d)) { /* rm extra DOS newline */ + *(s++)=buff[i]; + if (buff[i]==0x0a) { *s='\0'; data->oput(ss); s=ss; } + } + } + fseek(data->oe,sgm->next, SEEK_SET); + pos = sgm->next; + if (pos==0) break; + } + if (s!=ss) { + strcpy(s,"\n"); + data->oput(s); + } + data->oput("\n"); + + data->success++; + free(sgm); + free(ss); + return 0; +} + + +/* PARSES MESSAGE HEADERS */ + +int oe_readmessageheader(oe_data *data, long pos) { + int segheadsize = sizeof(oe_msg_segmentheader)-4; + oe_msg_segmentheader *sgm; + int self=1, msgpos = 0, newsarticle = 0; + + if (oe_isposused(data,pos)) return 0; else oe_posused(data,pos); + fseek(data->oe,pos, SEEK_SET); + sgm = malloc(sizeof(oe_msg_segmentheader)); + fread(sgm,segheadsize,1,data->oe); + if (pos!=sgm->self) { free(sgm); return OE_POSITION; /* ERROR */ } + free(sgm); + + fread(&self,4,1,data->oe); self=1; + while ((self & 0x7F)>0) { + fread(&self,4,1,data->oe); + if ((self & 0xFF) == 0x84) /* 0x80 = Set, 04 = Index */ + if (msgpos==0) + msgpos = self >> 8; + if ((self & 0xFF) == 0x83) /* 0x80 = Set, 03 = News */ + newsarticle = 1; + } + if (msgpos) oe_readmessage(data,msgpos,newsarticle); else { + fread(&self,4,1,data->oe); + fread(&msgpos,4,1,data->oe); + if (oe_readmessage(data,msgpos,newsarticle)) { + if (newsarticle) { + data->justheaders++; + data->failure--; + } + } + } + return 0; +} + + +/* PARSES MAILBOX TABLES */ + +int oe_readtable(oe_data *data, long pos) { + oe_table_header thead; + oe_table_node tnode; + int quit = 0; + + if (oe_isposused(data,pos)) return 0; + + fseek(data->oe,pos, SEEK_SET); + + fread(&thead,sizeof(oe_table_header),1,data->oe); + if (thead.self != pos) return OE_POSITION; + oe_posused(data,pos); + pos+=sizeof(oe_table_header); + + oe_readtable(data,thead.next); + oe_readtable(data,thead.list); + fseek(data->oe,pos, SEEK_SET); + + while (!quit) { + fread(&tnode,sizeof(oe_table_node),1,data->oe); + pos+=sizeof(oe_table_node); + if ( (tnode.message > data->stat->st_size) && + (tnode.list > data->stat->st_size) ) + return 0xF0; /* PANIC */ + if ( (tnode.message == tnode.list) && /* Neither message nor list==quit */ + (tnode.message == 0) ) quit = 1; else { + oe_readmessageheader(data,tnode.message); + oe_readtable(data,tnode.list); + } + fseek(data->oe,pos, SEEK_SET); + } + + return 0; +} + +void oe_readdamaged(oe_data *data) { + /* If nothing else works (needed this to get some mailboxes + that even OE couldn't read to work. Should generally not + be needed, but is nice to have in here */ + long pos = 0x7C; + int i,check, lastID; +#ifdef DEBUG + printf(" Trying to construct internal mailbox structure\n"); +#endif + fseek(data->oe,pos, SEEK_SET); + fread(&pos,sizeof(int),1,data->oe); + if (pos==0) return; /* No, sorry, didn't work */ + fseek(data->oe,pos, SEEK_SET); + fread(&i,sizeof(int),1,data->oe); + if (i!=pos) return; /* Sorry */ + fread(&pos,sizeof(int),1,data->oe); + i+=pos+8; + pos = i+4; + fseek(data->oe,pos, SEEK_SET); +#ifdef DEBUG + printf(" Searching for %.8x\n",i); +#endif + lastID=0; + while (pos<data->stat->st_size) { + /* Read through file, notice markers, look for message (gen. 2BD4)*/ + fread(&check,sizeof(int),1,data->oe); + if (check==pos) lastID=pos; + pos+=4; + if ((check==i) && (lastID)) { +#ifdef DEBUG + printf("Trying possible table at %.8x\n",lastID); +#endif + oe_readtable(data,lastID); + fseek(data->oe,pos, SEEK_SET); + } + } +} + +void oe_readbox_oe4(oe_data *data) { + long pos = 0x54, endpos=0, i; + oe_msg_segmentheader *header=malloc(sizeof(oe_msg_segmentheader)); + char *cb = malloc(4), *sfull = malloc(65536), *s = sfull; + fseek(data->oe,pos, SEEK_SET); + while (pos<data->stat->st_size) { + fseek(data->oe,pos, SEEK_SET); + fread(header,16,1,data->oe); + data->oput("From liboe@linux Sat Jun 17 01:08:25 2000\n"); + endpos = pos + header->include; + if (endpos>data->stat->st_size) endpos=data->stat->st_size; + pos+=4; + while (pos<endpos) { + fread(cb,1,4,data->oe); + for (i=0;i<4;i++,pos++) + if (*(cb+i)!=0x0d) { + *s++ = *(cb+i); + if (*(cb+i) == 0x0a) { + *s = '\0'; + data->oput(sfull); + s = sfull; + } + } + } + data->success++; + if (s!=sfull) { *s='\0'; data->oput(sfull); s=sfull; } + data->oput("\n"); + pos=endpos; + } + free(header); + free(sfull); + free(cb); +} + +/* CALL THIS ONE */ + +oe_data* oe_readbox(char* filename,void (*oput)(char*)) { + int signature[4], i; + oe_data *data = malloc(sizeof(oe_data)); + data->success=data->failure=data->justheaders=data->errcode=0; + data->used = NULL; + data->oput = oput; + data->oe = fopen(filename,"rb"); + if (data->oe==NULL) { + fclose(data->oe); + data->errcode = OE_CANNOTREAD; + return data; + } + + /* SECURITY (Yes, we need this, just in case) */ + data->stat = malloc(sizeof(struct stat)); + stat(filename,data->stat); + + /* SIGNATURE */ + fread(&signature,16,1,data->oe); + if ((signature[0]!=0xFE12ADCF) || /* OE 5 & OE 5 BETA SIGNATURE */ + (signature[1]!=0x6F74FDC5) || + (signature[2]!=0x11D1E366) || + (signature[3]!=0xC0004E9A)) { + if ((signature[0]==0x36464D4A) && + (signature[1]==0x00010003)) /* OE4 SIGNATURE */ { + oe_readbox_oe4(data); + fclose(data->oe); + free(data->stat); + return data; + } + fclose(data->oe); + free(data->stat); + data->errcode = OE_NOTOEBOX; + return data; + } + + /* ACTUAL WORK */ + i = 0x30; + fseek(data->oe,i, SEEK_SET); + fread(&i,4,1,data->oe); + if (!i) i=0x1e254; + i = oe_readtable(data,i); /* Reads the box */ + if (i & 0xF0) { + oe_readdamaged(data); + data->errcode=OE_PANIC; + } + oe_freeposused(data); + + /* CLOSE DOWN */ + fclose(data->oe); + free(data->stat); + return data; +} + +#define buffsize 65536 + +/* Just a function to provide the same kind of stream + for ordinary mailboxes. */ +oe_data* oe_readmbox(char* filename,void (*oput)(char*)) { + oe_data *data = malloc(sizeof(oe_data)); + char *s = malloc(buffsize); + data->success=data->failure=data->justheaders=0; + data->used=NULL; + data->oe=fopen(filename,"rb"); + for (;;) { + s=fgets(s,buffsize,data->oe); + if (s==NULL) break; else oput(s); + } + fclose(data->oe); + return data; +} +/* OE2MBX 1.21 + Copyright (C) 2000 Stephan B. Nedregaard (stephan@micropop.com) */ + +/* 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#ifdef WINDOWS +#define SLASH '\\' +#else +#define SLASH '/' +#endif + +FILE *mbox = NULL; +char *filename = NULL, *fn; + +void msgandquit(int h) { + if (h==0) + printf("transfug_oe\nSyntax: transfug_oe [oe_mbox] based on OE2MBX 1.21 (c) 2000 Stephan B. Nedregaard - stephan@micropop.com"); + else if (h==1) + printf("OE2MBX cannot run on this platform. Please consult the Web site at http://www.micropop.com/code/"); + exit(h); +} + +void fatal(char *s) { + printf("Fatal error: %s\n\n",s); + exit(1); +} + +void writeit(char *s) { + if (mbox==NULL) { + mbox=fopen(fn,"w"); + if(mbox==NULL) fatal("Cannot create output file"); + } + fprintf(mbox,"%s",s); +} + +int main(int argc, char*argv[]) { + int i; + + /* Handle errors, help and syntax */ + if (argc<2) msgandquit(0); + for (i=1;i<argc;i++) + if ( !strcmp(argv[i],"-h") || !strcmp(argv[i],"--help") ) + msgandquit(0); + + /* Process mailboxes */ + for (i=1;i<argc;i++) { + oe_data *j; + printf("Converting %s...\n",argv[i]); + filename = malloc(strlen(argv[i])+5); + strcpy(filename,argv[i]); + strcpy(filename+strlen(filename),".mbx"); + fn = filename+strlen(filename); + while ((*fn!=SLASH) && (fn!=filename)) fn--; + if (*fn==SLASH) fn++; + printf(" => %s\n",fn); + j = (oe_data*) oe_readbox(argv[i],writeit); + if (j!=NULL) { + if (!j->success) printf(" No messages converted"); else + printf(" %d messages converted",j->success); + if (j->justheaders) printf(" (%d headers w/o bodies)",j->justheaders); + if (j->failure) printf(" (%d messages failed)",j->failure); + printf("\n"); + } else printf(" Empty mailbox\n"); + if (mbox!=NULL) fclose(mbox); + mbox=NULL; + free(filename); + } + return 0; +} diff --git a/transfugdrake.pm b/transfugdrake.pm new file mode 100644 index 0000000..508bc0d --- /dev/null +++ b/transfugdrake.pm @@ -0,0 +1,94 @@ + #!/usr/bin/perl + +# +# Yves Duret (yduret at mandrakesoft.com) +# +# Copyright 2001 MandrakeSoft +# +# This software may be freely redistributed under the terms of the GNU +# public license. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# + +use lib qw(/usr/lib/libDrakX); + +use common qw(:common :system :file); +use interactive; +use standalone; +use log; +#use c; +use netconnect; +use detect_devices; + +$::isInstall and die "Not supported during install.\n"; + + +$::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/; + +local $_ = join '', @ARGV; + +/-h/ and die "usage: transfug [--version]\n"; +/-version/ and die 'transfug '."\n"; +$::isEmbedded or $::isWizard = 1; +$::Wizard_pix_up = "wiz_drakgw.png"; +$::Wizard_title = _("Transfug"); +$::direct = /-direct/; + +my $in = interactive::vnew('su'); + +if (!(-e "/mnt/win_c")) { + print "existe pas !!!!\n"; +} +if (-e "/mnt/win_c") { + print "existe\n"; +} + + +begin: + +#- ********************************** +#- * 0th step: verify if we are already set up + + $::Wizard_no_previous = 1; + +#- ********************************** +#- * 1st step: detect/setup +step_1: + +$::direct or $in->ask_okcancel(_("Transfug"), +_("Pas pour les pdm. + +The next step will be bringing back windows(c)(r)(tm) files"), 1) or quit_global($in, 0); + +#- ********************************** +#- * 2nd step: win files +step_2: + print "step2\n"; + +$wait_configuring = $in->wait_message(_("Configuring..."), + _("Configuring scripts, installing software, starting servers...")); + +undef $wait_configuring; + +if (!(-e "/mnt/win_c")) { + $in->ask_warn(_("No windows(c)(r)(tm) on your system!"), + _("No windows on your system. Please install windows first!")); + quit_global($in); +} + +$::direct or $in->ask_okcancel(_("Transfug"), +_("Pas pour les pdm. +Do you want to copy all the c:\\My Documents to one of your user home ?"), 1) or quit_global($in, 0); + +#- ******************************* +#- * 3rd step: mail from win +step_3: + + print "step3\n"; + $::direct or $in->ask_okcancel(_("Transfug"), + _("Pas pour les pdm. +Tes mails ils viennent d'ou ??"), 1) or quit_global($in, 0); + diff --git a/transfugdrake.spec b/transfugdrake.spec new file mode 100644 index 0000000..000b636 --- /dev/null +++ b/transfugdrake.spec @@ -0,0 +1,87 @@ +# Changed by Makefile of cvs. +%define version 0.1 +%define name transfugdrake + +Summary: A wizard to moves from Windows to MandrakeLinux +Name: %{name} +Version: %{version} +Release: 1mdk +# get the source from our cvs repository (see +# http://www.linuxmandrake.com/en/cvs.php3) +Source0: %{name}-%{version}.tar.bz2 +Source1: %{name}16.xpm.bz2 +Source2: %{name}32.xpm.bz2 +Source3: %{name}48.xpm.bz2 +Copyright: GPL +Group: System/Configuration/Other +Requires: drakxtools >= 1.1.5-97mdk, gtk+mdk, perl-GTK, perl-GTK-GdkImlib, usermode, drakfloppy >= 0.43-1mdk, harddrake >= 0.9.3-17mdk, drakfont >= 0.58-11mdk, XFree86-100dpi-fonts, menudrake >= 0.6-5mdk +BuildRoot: %{_tmppath}/%{name}-buildroot + +%description +Transfugdrake helps you to kick windows out of your life. + +%prep +%setup -q + +%build + +%install +rm -rf $RPM_BUILD_ROOT +make prefix=$RPM_BUILD_ROOT install + +mv ${RPM_BUILD_ROOT}%{_prefix}/X11R6/bin/transfugdrake \ + ${RPM_BUILD_ROOT}%{_prefix}/X11R6/bin/transfugdrake.real +ln -sf %{_bindir}/consolehelper ${RPM_BUILD_ROOT}%{_prefix}/X11R6/bin/transfugdrake +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/{pam.d,security/console.apps} +cp pam.transfugdrake $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/transfugdrake +cp apps.transfugdrake $RPM_BUILD_ROOT%{_sysconfdir}/security/console.apps/transfugdrake + +#install lang +%{find_lang} %{name} + +#install menu +mkdir -p $RPM_BUILD_ROOT%{_menudir} +cat > $RPM_BUILD_ROOT%{_menudir}/smbdrake << EOF +?package(smbdrake): \ +needs="x11" \ +icon="transfugdrake.xpm" \ +section="Configuration/Other" \ +title="Import files from windows to Linux" \ +longtitle="Import files from windows to Linux" \ +command="/usr/X11R6/bin/transfugdrake" +EOF + +#install menu icon +mkdir -p $RPM_BUILD_ROOT%{_miconsdir} +mkdir -p $RPM_BUILD_ROOT%{_liconsdir} +bzcat %{SOURCE1} > $RPM_BUILD_ROOT%{_miconsdir}/%{name}.xpm +bzcat %{SOURCE2} > $RPM_BUILD_ROOT%{_iconsdir}/%{name}.xpm +bzcat %{SOURCE3} > $RPM_BUILD_ROOT%{_liconsdir}/%{name}.xpm + +%post +%{update_menus} + +%postun +%{clean_menus} + +%clean +rm -rf $RPM_BUILD_ROOT + +%files -f %{name}.lang +%defattr(-,root,root) +%doc ChangeLog README TRANSLATORS AUTHORS +%{_prefix}/X11R6/bin/* +%{_menudir}/smbdrake +%{_miconsdir}/*.xpm +%{_iconsdir}/*.xpm +%{_liconsdir}/*.xpm +%config(noreplace) %{_sysconfdir}/pam.d/smbdrake +%config(noreplace) %{_sysconfdir}/security/console.apps/smbdrake + +%changelog +* Sat Jun 9 2001 Yves Duret <yduret@mandrakesoft.com> 0.1-1mdk +- first release + + + +# end of file |