diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2008-10-05 10:03:16 +0200 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2008-10-05 10:03:16 +0200 |
| commit | c41d3e7d896492dd70cd1d548ef4fd5b3cbe4954 (patch) | |
| tree | 8fdced2c97e2288c168550c2883b598580962469 /gnome_vfs | |
| parent | ca5f355ad058159edac0eb398d7aa43b57bbddad (diff) | |
| download | tuxcmd-modules-c41d3e7d896492dd70cd1d548ef4fd5b3cbe4954.tar.xz | |
Remove gnome-vfs2 module
Diffstat (limited to 'gnome_vfs')
| -rw-r--r-- | gnome_vfs/COPYING | 339 | ||||
| -rw-r--r-- | gnome_vfs/Makefile | 31 | ||||
| -rw-r--r-- | gnome_vfs/README | 29 | ||||
| -rw-r--r-- | gnome_vfs/gnome_vfs.c | 984 | ||||
| l--------- | gnome_vfs/vfs_types.h | 1 |
5 files changed, 0 insertions, 1384 deletions
diff --git a/gnome_vfs/COPYING b/gnome_vfs/COPYING deleted file mode 100644 index d511905..0000000 --- a/gnome_vfs/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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) <year> <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., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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) year 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 Lesser General -Public License instead of this License. diff --git a/gnome_vfs/Makefile b/gnome_vfs/Makefile deleted file mode 100644 index 915f851..0000000 --- a/gnome_vfs/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# path definitions -DESTDIR = /usr -INSTALL=install -c -INSTALL_DATA = ${INSTALL} -m 644 -LIB_SUFFIX=`if test \`uname -m\` = x86_64; then echo 64; fi` - -# compiler options -CC = gcc -CFLAGS = -Wall -O2 -g \ - -D_GNU_SOURCE \ - -D_FILE_OFFSET_BITS=64 \ - -D_LARGEFILE_SOURCE \ - -DG_DISABLE_DEPRECATED \ - -DGDK_DISABLE_DEPRECATED \ - -DGDK_PIXBUF_DISABLE_DEPRECATED \ - -DGTK_DISABLE_DEPRECATED - - -all shared static: gnome_vfs - - -gnome_vfs: gnome_vfs.c - $(CC) -c gnome_vfs.c -I. -fPIC -I/usr/include $(CFLAGS) `pkg-config gnome-vfs-2.0 --cflags` - $(CC) -shared -Wall -o libgnome_vfs.so gnome_vfs.o `pkg-config gnome-vfs-2.0 --libs` - -install:: - $(INSTALL) ./libgnome_vfs.so $(DESTDIR)/lib$(LIB_SUFFIX)/tuxcmd/ - -clean: - rm -f *.o *.d libgnome_vfs.so - diff --git a/gnome_vfs/README b/gnome_vfs/README deleted file mode 100644 index cc58ed3..0000000 --- a/gnome_vfs/README +++ /dev/null @@ -1,29 +0,0 @@ -gnome-vfs plugin for Tux Commander -version 0.99.2 - -Copyright (c) 2005 Tomas Bzatek <tbzatek@users.sourceforge.net> -http://tuxcmd.sourceforge.net - -To get gnome-vfs library, please see - * http://freshmeat.net/projects/gnome-vfs/ - * ftp://ftp.gnome.org/pub/gnome/sources/gnome-vfs/ - -For glib library, go to http://www.gtk.org/ - - - -This is the gnome-vfs VFS module for Tux Commander, using libgnomevfs-2 library -to access various resources. Currently FTP, SFTP (SSH subsystem) and SMB -protocols are tested and working with gnome-vfs library version 2.8.0. The other -protocols may be working too, depending on the version of gnome-vfs library. The -binary version of gnome-vfs module for Tux Commander is compiled always with the -last stable version of gnome-vfs library, which is 2.18.1 at the moment of this -release. The gnome-vfs library depends also on glib library and this module -requires glib too; the installation process is nearly the same as the -installation of gnome-vfs. - -For successful compilation, the gnome-vfs development files are required (it is -assumed, that the gnome-vfs library is present in your system too). You can get -them by installing the package from your Linux distribution (usually -libgnomevfs2 and libgnomevfs2-dev) or by downloading the source tarball and -compiling by hand. diff --git a/gnome_vfs/gnome_vfs.c b/gnome_vfs/gnome_vfs.c deleted file mode 100644 index 3e6799b..0000000 --- a/gnome_vfs/gnome_vfs.c +++ /dev/null @@ -1,984 +0,0 @@ -/* Gnome-VFS plugin for Tux Commander - * Copyright (C) 2005 Tomas Bzatek <tbzatek@users.sourceforge.net> - * Check for updates on tuxcmd.sourceforge.net - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <stdint.h> -#include <sys/stat.h> -#include <errno.h> - -#include <libgnomevfs/gnome-vfs.h> -#include <glib/gtypes.h> - -#include "vfs_types.h" - - -// Some plugin constants -static const int const_default_bsize = 65536; -static const int const_default_ftp_bsize = 8192; - - -// Declaration of the global plugin object -struct TVFSGlobs { - TVFSLogFunc log_func; - int list_item_id; - GnomeVFSDirectoryHandle *read_handle; - GnomeVFSFileInfo *cached_file_info; - GnomeVFSURI *uri; - int path_require_reread; - int break_get_dir_size; - int block_size; -}; - - - -// Basic initialization functions -int VFSAllocNeeded() -{ - return sizeof(struct TVFSGlobs); -} - -void VFSInit(struct TVFSGlobs *globs, TVFSLogFunc log_func) -{ - - globs->log_func = log_func; - globs->log_func("Gnome-VFS plugin: VFSInit"); - - globs->path_require_reread = 1; - - globs->break_get_dir_size = 0; - globs->block_size = const_default_bsize; - - /* remember to initialize GnomeVFS! */ - if (!gnome_vfs_init ()) { - printf ("Could not initialize GnomeVFS\n"); - } - -} - -void VFSDestroy(struct TVFSGlobs *globs) -{ - -// gnome_vfs_shutdown(); - - globs->log_func("Gnome-VFS plugin: VFSDestroy"); - -} - -int VFSVersion() -{ - return cVFSVersion; -} - -struct TVFSInfo VFSGetInfo() -{ - - static const struct TVFSInfo info = - { - "Gnome-VFS plugin", - "Gnome-VFS interconnection plugin", - "version 0.99.5\nBuild date: 2008-05-17", - "Copyright © 2005 Tomáš Bžatek", - }; - - return info; -} - -char *VFSGetExts() -{ - return ""; -} - -char *VFSGetServices() -{ - return "http;https;ftp;sftp;smb;network"; -} - -char *VFSGetPrefix(struct TVFSGlobs *globs) -{ - return gnome_vfs_uri_to_string(gnome_vfs_uri_resolve_relative(globs->uri, "/"), GNOME_VFS_URI_HIDE_NONE); -} - -TVFSResult VFSOpen(struct TVFSGlobs *globs, char *sName) -{ - - if (strlen(sName) > 0) { - globs->uri = gnome_vfs_uri_new(sName); - if (globs->uri != NULL) return cVFS_OK; - else return cVFS_Failed; - } - else { - // Auto Fallback - globs->uri = gnome_vfs_uri_new("file:///"); - return cVFS_Not_Supported; - } - -} - -TVFSResult VFSClose(struct TVFSGlobs *globs) -{ - if (globs->uri != NULL) gnome_vfs_uri_unref(globs->uri); - return cVFS_OK; -} - -char *VFSGetPath(struct TVFSGlobs *globs) -{ - return (char*)gnome_vfs_uri_get_path(globs->uri); -} - -guint64 VFSGetFileSystemFree(struct TVFSGlobs *globs, char *APath) -{ - int result; - GnomeVFSFileSize size; - result = gnome_vfs_get_volume_free_space(gnome_vfs_uri_resolve_relative(globs->uri, APath), &size); - if (result != 0) return 0; - else return size; -} - -guint64 VFSGetFileSystemSize(struct TVFSGlobs *globs, char *APath) -{ - return 1024; -} - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////// - -TVFSResult VFSChangeDir(struct TVFSGlobs *globs, char *NewPath) -{ - - GnomeVFSURI *uri; - - globs->path_require_reread = 1; - uri = gnome_vfs_uri_resolve_relative(globs->uri, NewPath); - - GnomeVFSResult result; - printf("Chdir URI is now: %s\n", gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE)); - printf("Opening directory...\n"); - - result = gnome_vfs_directory_open_from_uri(&globs->read_handle, uri, GNOME_VFS_FILE_INFO_DEFAULT); - /* if the operation was not successful, print the error and abort */ - printf("open result = %i = %s\n", result, gnome_vfs_result_to_string(result)); - if (result != GNOME_VFS_OK) return cVFS_Failed; - - globs->path_require_reread = 0; - - - // Try to retrieve first item to determine correct access permissions - int i=0; - while (i == 0) { - globs->cached_file_info = gnome_vfs_file_info_new(); - result = gnome_vfs_directory_read_next(globs->read_handle, globs->cached_file_info); - - if (result == GNOME_VFS_ERROR_EOF) { - i = 1; - gnome_vfs_file_info_unref(globs->cached_file_info); - globs->cached_file_info = NULL; - printf("EOF.\n"); - // No more files in this directory and no error occured - break; - } - - if (result && result != GNOME_VFS_ERROR_EOF) { - gnome_vfs_file_info_unref(globs->cached_file_info); - globs->cached_file_info = NULL; - printf("no permission\n"); - return cVFS_Failed; - } else - - if ((strcmp(globs->cached_file_info->name, ".") == 0) || - (strcmp(globs->cached_file_info->name, "..") == 0)) - { gnome_vfs_file_info_unref(globs->cached_file_info); } - else { i = 1; }; - } - - - // Copy the URI if everything goes OK - gnome_vfs_uri_unref(globs->uri); - globs->uri = uri; - - return cVFS_OK; -} - -int VFSLogin(struct TVFSGlobs *globs, char *user, char *pass) -{ - printf("*** begin login: %s/%s\n", user, pass); - gnome_vfs_uri_set_user_name(globs->uri, user); - gnome_vfs_uri_set_password(globs->uri, pass); - - GnomeVFSResult result; - GnomeVFSFileInfo *file_info; - // Test if we can open the new location - result = gnome_vfs_directory_open_from_uri(&globs->read_handle, globs->uri, GNOME_VFS_FILE_INFO_DEFAULT); - printf("gnome_vfs_directory_open_from_uri result = %i = %s\n", result, gnome_vfs_result_to_string(result)); - if (result != GNOME_VFS_OK) return cVFS_Failed; - - // Try to retrieve first item to determine correct access permissions - file_info = gnome_vfs_file_info_new(); - result = gnome_vfs_directory_read_next(globs->read_handle, file_info); - gnome_vfs_file_info_unref(file_info); - - if (result && result != GNOME_VFS_ERROR_EOF) return cVFS_Failed; - - gnome_vfs_directory_close(globs->read_handle); - - return cVFS_OK; -} - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////// - -void ProcessDirItem(GnomeVFSFileInfo *file_info, struct TVFSItem *VFSItem) -{ - - VFSItem->sFileName = strdup(file_info->name); - switch (file_info->type) { - case GNOME_VFS_FILE_TYPE_UNKNOWN: - case GNOME_VFS_FILE_TYPE_REGULAR: VFSItem->ItemType = vRegular; break; - case GNOME_VFS_FILE_TYPE_DIRECTORY: VFSItem->ItemType = vDirectory; break; - case GNOME_VFS_FILE_TYPE_FIFO: VFSItem->ItemType = vFifo; break; - case GNOME_VFS_FILE_TYPE_SOCKET: VFSItem->ItemType = vSock; break; - case GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE: VFSItem->ItemType = vChardev; break; - case GNOME_VFS_FILE_TYPE_BLOCK_DEVICE: VFSItem->ItemType = vBlockdev; break; - case GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK: VFSItem->ItemType = vSymlink; break; - } - VFSItem->iMode = (u_int64_t)file_info->permissions; - VFSItem->iUID = file_info->uid; - VFSItem->iGID = file_info->gid; - VFSItem->iSize = file_info->size; - VFSItem->a_time = file_info->atime; - VFSItem->m_time = file_info->mtime; - VFSItem->c_time = file_info->ctime; - - // Hack for special items - if (file_info->mime_type != NULL) - if ((strcmp(file_info->mime_type, "application/x-desktop") == 0)) { - VFSItem->ItemType = vDirectory; - VFSItem->iMode = S_IRWXU | S_IRWXG | S_IRWXO; - } - - if ((file_info->flags == GNOME_VFS_FILE_FLAGS_SYMLINK) && (file_info->symlink_name != NULL)) - VFSItem->sLinkTo = strdup(file_info->symlink_name); - else { VFSItem->sLinkTo = NULL; } - - printf("name = %s, type = %i, perm = %i, flags = %i, MIME = %s\n", file_info->name, file_info->type, file_info->permissions, file_info->flags, file_info->mime_type); - -} - - -TVFSResult VFSListFirst(struct TVFSGlobs *globs, char *sDir, struct TVFSItem *Item) -{ - printf("List URI is now: %s\n", gnome_vfs_uri_to_string(globs->uri, GNOME_VFS_URI_HIDE_NONE)); - - if (globs->path_require_reread != 0) VFSChangeDir(globs, sDir); - - if (globs->cached_file_info == NULL) return cVFS_No_More_Files; - - // We should have the first item cached - ProcessDirItem(globs->cached_file_info, Item); - gnome_vfs_file_info_unref(globs->cached_file_info); - - return cVFS_OK; -} - -TVFSResult VFSListNext(struct TVFSGlobs *globs, char *sDir, struct TVFSItem *Item) -{ - GnomeVFSResult result; - GnomeVFSFileInfo *file_info; - -// fprintf(stderr, "(II) Entering VFSListNext(sDir = %s; Item = %d)...\n", sDir, Item, NULL); - gboolean b = 1; - while (b) { - file_info = gnome_vfs_file_info_new(); - result = gnome_vfs_directory_read_next(globs->read_handle, file_info); - - if (result == GNOME_VFS_ERROR_EOF) return cVFS_No_More_Files; - - if (result && result != GNOME_VFS_ERROR_EOF) { - gnome_vfs_file_info_unref(file_info); - return cVFS_Failed; - } - - if ((strcmp(file_info->name, ".") == 0) || (strcmp(file_info->name, "..") == 0)) - gnome_vfs_file_info_unref(file_info); - else b = 0; - } -// fprintf(stderr, "(II) Processing VFSListNext...\n"); - - ProcessDirItem(file_info, Item); - gnome_vfs_file_info_unref(file_info); - - globs->path_require_reread = 1; -// fprintf(stderr, "(II) Leaving VFSListNext...\n"); - return cVFS_OK; -} - -TVFSResult VFSListClose(struct TVFSGlobs *globs) -{ - GnomeVFSResult result; - result = gnome_vfs_directory_close(globs->read_handle); - if (result != GNOME_VFS_OK) return cVFS_Failed; - - return cVFS_OK; -} - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////// -long VFSFileExists(struct TVFSGlobs *globs, const char *FileName, const long Use_lstat) -{ - GnomeVFSURI *uri; - long res; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, FileName); - if (uri == NULL) return FALSE; - res = gnome_vfs_uri_exists(uri); - gnome_vfs_uri_unref(uri); - - return res; -} - -TVFSResult VFSFileInfo(struct TVFSGlobs *globs, char *AFileName, struct TVFSItem *Item) -{ - GnomeVFSURI *uri; - GnomeVFSResult res; - GnomeVFSFileInfo *file_info; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, AFileName); - if (uri == NULL) return cVFS_Failed; - - file_info = gnome_vfs_file_info_new(); - res = gnome_vfs_get_file_info_uri(uri, file_info, GNOME_VFS_FILE_INFO_DEFAULT); - gnome_vfs_uri_unref(uri); - - if (res) { - gnome_vfs_file_info_unref(file_info); - printf("gnome_vfs_get_file_info_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - - ProcessDirItem(file_info, Item); - free(Item->sFileName); - - Item->sFileName = strdup(AFileName); - - gnome_vfs_file_info_unref(file_info); - - return cVFS_OK; -} - -TVFSResult VFSMkDir(struct TVFSGlobs *globs, const char *sDirName) -{ - GnomeVFSURI *uri; - GnomeVFSResult res; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, sDirName); - if (uri == NULL) return cVFS_Failed; - res = gnome_vfs_make_directory_for_uri(uri, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); - gnome_vfs_uri_unref(uri); - - if (res) { - printf("gnome_vfs_make_directory_for_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - - return cVFS_OK; -} - -TVFSResult VFSRemove(struct TVFSGlobs *globs, const char *APath) -{ - GnomeVFSURI *uri; - GnomeVFSResult res; - GnomeVFSFileInfo *file_info; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, APath); - if (uri == NULL) return cVFS_Failed; - - file_info = gnome_vfs_file_info_new(); - res = gnome_vfs_get_file_info_uri(uri, file_info, GNOME_VFS_FILE_INFO_DEFAULT); - - if (res) { - gnome_vfs_uri_unref(uri); - printf("VFSRemove: gnome_vfs_get_file_info_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - - // Determine if we have to remove the directory or unlink the file - if (file_info->type == GNOME_VFS_FILE_TYPE_DIRECTORY) { - gnome_vfs_file_info_unref(file_info); - res = gnome_vfs_remove_directory_from_uri(uri); - gnome_vfs_uri_unref(uri); - - if (res) { - printf("VFSRemove: gnome_vfs_remove_directory_from_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - } else { - gnome_vfs_file_info_unref(file_info); - res = gnome_vfs_unlink_from_uri(uri); - gnome_vfs_uri_unref(uri); - - if (res) { - printf("VFSRemove: gnome_vfs_unlink_from_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - } - - return cVFS_OK; -} - -TVFSResult VFSRename(struct TVFSGlobs *globs, const char *sSrcName, const char *sDstName) -{ - GnomeVFSURI *srcuri, *dsturi; - GnomeVFSResult res; - - srcuri = gnome_vfs_uri_resolve_relative(globs->uri, sSrcName); - if (srcuri == NULL) return cVFS_Failed; - dsturi = gnome_vfs_uri_resolve_relative(globs->uri, sDstName); - if (dsturi == NULL) return cVFS_Failed; - - res = gnome_vfs_move_uri(srcuri, dsturi, 1); - gnome_vfs_uri_unref(srcuri); - gnome_vfs_uri_unref(dsturi); - - if (res) { - printf("gnome_vfs_move_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - - return cVFS_OK; -} - -TVFSResult VFSMakeSymLink(struct TVFSGlobs *globs, const char *NewFileName, const char *PointTo) -{ - GnomeVFSURI *uri; - GnomeVFSResult res; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, NewFileName); - if (uri == NULL) return cVFS_Failed; - res = gnome_vfs_create_symbolic_link(uri, PointTo); - gnome_vfs_uri_unref(uri); - - if (res) { - printf("gnome_vfs_create_symbolic_link result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - - return cVFS_OK; -} - -TVFSResult VFSChmod(struct TVFSGlobs *globs, const char *FileName, const uint Mode) -{ - GnomeVFSURI *uri; - GnomeVFSResult res; - GnomeVFSFileInfo *file_info; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, FileName); - if (uri == NULL) return cVFS_Failed; - file_info = gnome_vfs_file_info_new(); - if (file_info == NULL) return cVFS_Failed; - file_info->permissions = (GnomeVFSFilePermissions)Mode; - - res = gnome_vfs_set_file_info_uri(uri, file_info, GNOME_VFS_SET_FILE_INFO_PERMISSIONS); - gnome_vfs_file_info_unref(file_info); - gnome_vfs_uri_unref(uri); - - if (res) { - printf("gnome_vfs_set_file_info_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - - return cVFS_OK; -} - -TVFSResult VFSChown(struct TVFSGlobs *globs, const char *FileName, const uint UID, const uint GID) -{ - GnomeVFSURI *uri; - GnomeVFSResult res; - GnomeVFSFileInfo *file_info; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, FileName); - if (uri == NULL) return cVFS_Failed; - file_info = gnome_vfs_file_info_new(); - if (file_info == NULL) return cVFS_Failed; - file_info->uid = UID; - file_info->gid = GID; - - res = gnome_vfs_set_file_info_uri(uri, file_info, GNOME_VFS_SET_FILE_INFO_OWNER); - gnome_vfs_file_info_unref(file_info); - gnome_vfs_uri_unref(uri); - - if (res) { - printf("gnome_vfs_set_file_info_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - - return cVFS_OK; -} - -TVFSResult VFSChangeTimes(struct TVFSGlobs *globs, char *APath, long mtime, long atime) -{ - GnomeVFSURI *uri; - GnomeVFSResult res; - GnomeVFSFileInfo *file_info; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, APath); - if (uri == NULL) return cVFS_Failed; - file_info = gnome_vfs_file_info_new(); - if (file_info == NULL) return cVFS_Failed; - file_info->atime = atime; - file_info->mtime = mtime; - - res = gnome_vfs_set_file_info_uri(uri, file_info, GNOME_VFS_SET_FILE_INFO_TIME); - gnome_vfs_file_info_unref(file_info); - gnome_vfs_uri_unref(uri); - - if (res) { - printf("gnome_vfs_set_file_info_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_Failed; - } - - return cVFS_OK; -} - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////// - - -void VFSGetDirSize_recurse(struct TVFSGlobs *globs, char *APath, guint64 *Size) -{ - - GnomeVFSURI *uri; - GnomeVFSResult result; - GnomeVFSDirectoryHandle *dir_handle; - GnomeVFSFileInfo *file_info; - - // First change dir... - uri = gnome_vfs_uri_resolve_relative(globs->uri, APath); - result = gnome_vfs_directory_open_from_uri(&dir_handle, uri, GNOME_VFS_FILE_INFO_DEFAULT); - if (result != GNOME_VFS_OK) return; - - // Get file info... - while (1) { - if (globs->break_get_dir_size == 1) return; - file_info = gnome_vfs_file_info_new(); - result = gnome_vfs_directory_read_next(dir_handle, file_info); - - if (result) { - gnome_vfs_file_info_unref(file_info); - // Some error occured... - break; - } - - if ((file_info == NULL) || (file_info->name == NULL)) break; - - if ((strcmp(file_info->name, ".") != 0) && (strcmp(file_info->name, "..") != 0)) - { - // Process the file -// printf("Found file: %s\n", file_info->name); - if (file_info->type == GNOME_VFS_FILE_TYPE_DIRECTORY) { - char *NewPath; - NewPath = (char*)malloc(strlen(APath) + 2 + strlen(file_info->name)); - strcpy(NewPath, APath); - strcat(NewPath, "/"); - strcat(NewPath, file_info->name); -// printf("Entering directory %s\n", NewPath); - VFSGetDirSize_recurse(globs, NewPath, Size); - free(NewPath); - } else *Size += file_info->size; - } - gnome_vfs_file_info_unref(file_info); - } - - gnome_vfs_directory_close(dir_handle); - gnome_vfs_uri_unref(uri); -} - -guint64 VFSGetDirSize(struct TVFSGlobs *globs, char *APath) -{ - if (globs == NULL) return 0; - - guint64 Size = 0; - - globs->break_get_dir_size = 0; - VFSGetDirSize_recurse(globs, APath, &Size); - globs->break_get_dir_size = 0; - return Size; -} - - -void VFSBreakGetDirSize(struct TVFSGlobs *globs) -{ - printf("################################### calling Break\n"); - if (globs != NULL) globs->break_get_dir_size = 1; -} - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////// - -TVFSFileDes VFSOpenFile(struct TVFSGlobs *globs, const char *APath, int Mode, int *Error) -{ - - GnomeVFSResult res = GNOME_VFS_OK; - GnomeVFSHandle *handle; - GnomeVFSURI *uri; - - uri = gnome_vfs_uri_resolve_relative(globs->uri, APath); - - switch (Mode) { - case cVFS_OpenRead: - res = gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ); - if (res == GNOME_VFS_ERROR_INTERNAL) { - printf("buggy implementation in gnome_vfs_open_uri\n"); - } - if (res != GNOME_VFS_OK) - printf("gnome_vfs_open_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - break; - - case cVFS_OpenWrite: - res = gnome_vfs_create_uri(&handle, uri, GNOME_VFS_OPEN_WRITE, 0, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ); - if (res != GNOME_VFS_OK) - printf("gnome_vfs_create_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - break; - - case cVFS_OpenAppend: - res = gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_WRITE); - if (res != GNOME_VFS_OK) - printf("gnome_vfs_open_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - if (res == GNOME_VFS_OK) { - res = gnome_vfs_seek(handle, GNOME_VFS_SEEK_END, 0); - if (res != GNOME_VFS_OK) - printf("gnome_vfs_seek result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - } - break; - } - - gnome_vfs_uri_unref(uri); - *Error = res; - return (TVFSFileDes)handle; - -} - -TVFSResult VFSCloseFile(struct TVFSGlobs *globs, TVFSFileDes FileDescriptor) -{ - GnomeVFSResult res; - - // Preventive seek to 0 when closing file to avoid some bugs in FTP protocol implementation - if (strcmp(gnome_vfs_uri_get_scheme(globs->uri), "ftp") == 0) { - res = gnome_vfs_seek((GnomeVFSHandle*)FileDescriptor, GNOME_VFS_SEEK_START, 0); - if (res != GNOME_VFS_OK) printf("gnome_vfs_seek result = %i = %s; ignore this please\n", res, gnome_vfs_result_to_string(res)); - } - - res = gnome_vfs_close((GnomeVFSHandle*)FileDescriptor); - if (res != GNOME_VFS_OK) printf("gnome_vfs_close result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - -// return res; - return cVFS_OK; -} - -guint64 VFSFileSeek(struct TVFSGlobs *globs, TVFSFileDes FileDescriptor, guint64 AbsoluteOffset, int *Error) -{ - GnomeVFSResult res; - GnomeVFSFileSize offset_return = 0; - - res = gnome_vfs_seek((GnomeVFSHandle*)FileDescriptor, GNOME_VFS_SEEK_START, AbsoluteOffset); - if (res != GNOME_VFS_OK) printf("gnome_vfs_seek result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - if (res == GNOME_VFS_OK) { - res = gnome_vfs_tell((GnomeVFSHandle*)FileDescriptor, &offset_return); - if (res != GNOME_VFS_OK) printf("gnome_vfs_tell result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - } - - *Error = res; - return offset_return; -} - -int VFSReadFile(struct TVFSGlobs *globs, TVFSFileDes FileDescriptor, gpointer Buffer, int ABlockSize, int *Error) -{ - GnomeVFSResult res; - GnomeVFSFileSize bytes_read; - - res = gnome_vfs_read((GnomeVFSHandle*)FileDescriptor, Buffer, ABlockSize, &bytes_read); - if (res != GNOME_VFS_OK) printf("gnome_vfs_read result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - if (res == GNOME_VFS_ERROR_EOF) res = (GnomeVFSResult)0; - *Error = res; - return bytes_read; -} - -int VFSWriteFile(struct TVFSGlobs *globs, TVFSFileDes FileDescriptor, gpointer Buffer, int BytesCount, int *Error) -{ - GnomeVFSResult res; - GnomeVFSFileSize bytes_written; - - res = gnome_vfs_write((GnomeVFSHandle*)FileDescriptor, Buffer, BytesCount, &bytes_written); - if (res != GNOME_VFS_OK) printf("gnome_vfs_write result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - *Error = res; - return bytes_written; -} - -void VFSSetBlockSize(struct TVFSGlobs *globs, int Value) -{ - printf("VFSSetBlockSize: scheme = %s\n", gnome_vfs_uri_get_scheme(globs->uri)); - if ((strcmp(gnome_vfs_uri_get_scheme(globs->uri), "ftp") == 0) || - (strcmp(gnome_vfs_uri_get_scheme(globs->uri), "sftp") == 0)) - globs->block_size = const_default_ftp_bsize; - else globs->block_size = Value; -} - -gboolean VFSIsOnSameFS(struct TVFSGlobs *globs, const char *Path1, const char *Path2) -{ - GnomeVFSResult res; - gboolean same_fs_return = 0; - GnomeVFSURI *uri1, *uri2; - - // Prepare the correct URIs - uri1 = gnome_vfs_uri_resolve_relative(globs->uri, Path1); - uri2 = gnome_vfs_uri_resolve_relative(globs->uri, Path2); - - res = gnome_vfs_check_same_fs_uris(uri1, uri2, &same_fs_return); - if (res != GNOME_VFS_OK) printf("gnome_vfs_check_same_fs result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - - gnome_vfs_uri_unref(uri1); - gnome_vfs_uri_unref(uri2); - return same_fs_return; -} - -gboolean VFSTwoSameFiles(struct TVFSGlobs *globs, const char *Path1, const char *Path2) -{ - GnomeVFSURI *uri1, *uri2; - gboolean same = 0; - - uri1 = gnome_vfs_uri_resolve_relative(globs->uri, Path1); - uri2 = gnome_vfs_uri_resolve_relative(globs->uri, Path2); - - same = gnome_vfs_uri_equal(uri1, uri2); - - gnome_vfs_uri_unref(uri1); - gnome_vfs_uri_unref(uri2); - - return same; -} - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////// - -void internal_close_seek(struct TVFSGlobs *globs, GnomeVFSHandle *file) -{ - GnomeVFSResult res; - - // Preventive seek to 0 when closing file to avoid some bugs in FTP protocol implementation - if (strcmp(gnome_vfs_uri_get_scheme(globs->uri), "ftp") == 0) { - res = gnome_vfs_seek(file, GNOME_VFS_SEEK_START, 0); - if (res != GNOME_VFS_OK) printf("gnome_vfs_seek result = %i = %s; ignore this please\n", res, gnome_vfs_result_to_string(res)); - } - gnome_vfs_close(file); -} - - -TVFSResult VFSCopyOut(struct TVFSGlobs *globs, const char *sSrcName, const char *sDstName, TVFSCopyCallBackFunc pCallBackProgress, void *data, gboolean Append) -{ - - void *buffer; - GnomeVFSFileSize bytes_read; - uint bytes_written = 0; - guint64 bytes_done; - GnomeVFSResult res; - GnomeVFSHandle *read_handle; - GnomeVFSURI *uri; - FILE *dest_file; - - - // Open the source file for reading - uri = gnome_vfs_uri_resolve_relative(globs->uri, sSrcName); - res = gnome_vfs_open_uri(&read_handle, uri, GNOME_VFS_OPEN_READ); - gnome_vfs_uri_unref(uri); - if (res != GNOME_VFS_OK) { - printf("VFSCopyOut: gnome_vfs_open_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_ReadErr; - } - - // Open the destination file for writing - if (! Append) dest_file = fopen(sDstName, "w"); - else dest_file = fopen(sDstName, "a"); - if (dest_file == NULL) { - printf("VFSCopyOut: fopen result = %i = %s\n", errno, strerror(errno)); - return cVFS_WriteErr; - } - - // Alloc the memory space... - buffer = (void*)malloc(globs->block_size); - if (buffer == NULL) { - printf("VFSCopyOut: malloc failed = %i = %s\n", errno, strerror(errno)); - return cVFS_mallocFailed; - } - - bytes_done = 0; - - // Read each block and write it - do { - res = gnome_vfs_read(read_handle, buffer, globs->block_size, &bytes_read); - if ((bytes_read == 0) && (res != GNOME_VFS_OK) && (res != GNOME_VFS_ERROR_EOF)) { - printf("VFSCopyOut: gnome_vfs_read result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - fclose(dest_file); - internal_close_seek(globs, read_handle); - free(buffer); - return cVFS_ReadErr; - } - if (bytes_read > 0) { - bytes_written = fwrite(buffer, 1, bytes_read, dest_file); - if (bytes_written < bytes_read) { - printf("VFSCopyOut: fwrite result = %i = %s\n", errno, strerror(errno)); - fclose(dest_file); - internal_close_seek(globs, read_handle); - free(buffer); - return cVFS_WriteErr; - } - } - bytes_done += bytes_read; - - // Call the progress function and break the processing if needed - if ((pCallBackProgress != NULL) && (!pCallBackProgress(bytes_done, 0, data))) { - internal_close_seek(globs, read_handle); - fclose(dest_file); - free(buffer); - return cVFS_Cancelled; - } - } while ((bytes_read > 0) && (bytes_written == bytes_read)); - - - // Close the files and free the objects - internal_close_seek(globs, read_handle); - fclose(dest_file); - free(buffer); - - return cVFS_OK; -} - - - - -TVFSResult VFSCopyIn(struct TVFSGlobs *globs, const char *sSrcName, const char *sDstName, TVFSCopyCallBackFunc pCallBackProgress, void *data, gboolean Append) -{ - - void *buffer; - uint bytes_read; - GnomeVFSFileSize bytes_written; - guint64 bytes_done; - GnomeVFSResult res; - GnomeVFSHandle *write_handle; - GnomeVFSURI *uri; - FILE *src_file; - int err; - - - // Open the source file for reading - src_file = fopen(sSrcName, "r"); - if (src_file == NULL) { - printf("VFSCopyIn: fopen result = %i = %s\n", errno, strerror(errno)); - return cVFS_ReadErr; - } - - // Open the destination file for writing - uri = gnome_vfs_uri_resolve_relative(globs->uri, sDstName); - if (! Append) { - res = gnome_vfs_create_uri(&write_handle, uri, GNOME_VFS_OPEN_WRITE, 0, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ); - gnome_vfs_uri_unref(uri); - if (res != GNOME_VFS_OK) { - printf("VFSCopyIn: gnome_vfs_create_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_WriteErr; - } - } else { - res = gnome_vfs_open_uri(&write_handle, uri, GNOME_VFS_OPEN_WRITE); - gnome_vfs_uri_unref(uri); - if (res != GNOME_VFS_OK) { - printf("VFSCopyIn: gnome_vfs_open_uri result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_WriteErr; - } - if (res == GNOME_VFS_OK) { - res = gnome_vfs_seek(write_handle, GNOME_VFS_SEEK_END, 0); - if (res != GNOME_VFS_OK) { - printf("VFSCopyIn: gnome_vfs_seek result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - return cVFS_WriteErr; - } - } - } - - // Alloc the memory space... - buffer = (void*)malloc(globs->block_size); - if (buffer == NULL) { - printf("VFSCopyIn: malloc failed = %i = %s\n", errno, strerror(errno)); - return cVFS_mallocFailed; - } - - bytes_done = 0; - - // Read each block and write it - do { - bytes_read = fread(buffer, 1, globs->block_size, src_file); - err = errno; - if ((bytes_read == 0) && (err != 0) && (feof(src_file) == 0)) { - printf("VFSCopyIn: fread result = %i = %s\n", err, strerror(err)); - fclose(src_file); - gnome_vfs_close(write_handle); - free(buffer); - return cVFS_ReadErr; - } - if (bytes_read > 0) { - res = gnome_vfs_write(write_handle, buffer, bytes_read, &bytes_written); - if (bytes_written < bytes_read) { - printf("VFSCopyIn: gnome_vfs_write result = %i = %s\n", res, gnome_vfs_result_to_string(res)); - fclose(src_file); - gnome_vfs_close(write_handle); - free(buffer); - return cVFS_WriteErr; - } - } - bytes_done += bytes_read; - - // Call the progress function and break the processing if needed - if ((pCallBackProgress != NULL) && (!pCallBackProgress(bytes_done, 0, data))) { - fclose(src_file); - gnome_vfs_close(write_handle); - free(buffer); - return cVFS_Cancelled; - } - } while ((bytes_read > 0) && (bytes_written == bytes_read)); - - - // Close the files and free the objects - fclose(src_file); - gnome_vfs_close(write_handle); - free(buffer); - - return cVFS_OK; -} - -//////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - diff --git a/gnome_vfs/vfs_types.h b/gnome_vfs/vfs_types.h deleted file mode 120000 index c2235a2..0000000 --- a/gnome_vfs/vfs_types.h +++ /dev/null @@ -1 +0,0 @@ -../common/vfs_types.h
\ No newline at end of file |
