mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-24 09:25:01 +00:00
Repocopy sysutils/linneighborhood to more appropriate category 'net'.
PR: ports/91551
This commit is contained in:
parent
892384b4c2
commit
60c8d96314
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=153183
1
MOVED
1
MOVED
@ -2050,3 +2050,4 @@ misc/gkrellmaflag||2005-12-31|Unfetchable
|
||||
devel/libmusclecard|devel/pcsc-lite|2006-01-02|Reintegrated into pcsc-lite port
|
||||
deskutils/gdesklets-ltvariations||2006-01-04|Deleted; dead and unfetchable
|
||||
editors/vimpart||2006-01-08|As of 3.5.0, vimpart is no longer part of KDE.
|
||||
sysutils/linneighborhood|net/linneighborhood|2006-01-10|Move to a more appropriate category
|
||||
|
@ -300,6 +300,7 @@
|
||||
SUBDIR += limewire
|
||||
SUBDIR += linc
|
||||
SUBDIR += link-monitor-applet
|
||||
SUBDIR += linneighborhood
|
||||
SUBDIR += linphone
|
||||
SUBDIR += linphone-base
|
||||
SUBDIR += linux-agsatellite
|
||||
|
@ -272,7 +272,6 @@
|
||||
SUBDIR += lineak_kdeplugins
|
||||
SUBDIR += lineak_xosdplugin
|
||||
SUBDIR += lineakd
|
||||
SUBDIR += linneighborhood
|
||||
SUBDIR += linux-acu
|
||||
SUBDIR += linux-afaapps
|
||||
SUBDIR += linuxfdisk
|
||||
|
@ -1,38 +0,0 @@
|
||||
# New ports collection makefile for: LinNeighborhood
|
||||
# Date created: 2003/04/06
|
||||
# Whom: Heiner <h.eichmann@gmx.de>
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
PORTNAME= LinNeighborhood
|
||||
PORTVERSION= 0.6.5
|
||||
PORTREVISION= 5
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= http://www.bnro.de/~schmidjo/download/
|
||||
|
||||
MAINTAINER= ports@FreeBSD.org
|
||||
COMMENT= GTK+ gui for browsing and mounting SMB filesystems
|
||||
|
||||
RUN_DEPENDS= smbclient:${PORTSDIR}/net/samba
|
||||
|
||||
GNU_CONFIGURE= yes
|
||||
USE_GMAKE= yes
|
||||
USE_GNOME= gtk12
|
||||
USE_REINPLACE= yes
|
||||
CONFIGURE_ENV= CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS}"\
|
||||
LDFLAGS="${LDFLAGS} -L${LOCALBASE}/lib ${PTHREAD_LIBS}"\
|
||||
CC="${CC} -I${LOCALBASE}/include"
|
||||
# ^
|
||||
# this was done intentionaly in order to make `configure' pick up libintl.h
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
post-patch:
|
||||
${CP} ${FILESDIR}/mntent* ${WRKSRC}/src
|
||||
@${REINPLACE_CMD} -e 's|-lpthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure
|
||||
|
||||
post-install:
|
||||
@${CAT} ${PKGMESSAGE}
|
||||
|
||||
.include <bsd.port.post.mk>
|
@ -1,3 +0,0 @@
|
||||
MD5 (LinNeighborhood-0.6.5.tar.gz) = 5e50c9cef403164aca22be9ade0a7dbf
|
||||
SHA256 (LinNeighborhood-0.6.5.tar.gz) = 6a47c24725468d4913f958feaa7061f78cf68f986176b50fbbfacf1ef1d6d074
|
||||
SIZE (LinNeighborhood-0.6.5.tar.gz) = 399003
|
@ -1,35 +0,0 @@
|
||||
#ifdef HAVE_MNTENT_H
|
||||
#include <mntent.h>
|
||||
#else
|
||||
|
||||
#ifndef mntent_h_
|
||||
#define mntent_h_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/ucred.h>
|
||||
#include <sys/mount.h>
|
||||
|
||||
#define MOUNTED "mounted"
|
||||
#define MNTTYPE_NFS "nfs"
|
||||
|
||||
//#define MOPTSLEN (256 - (MNAMELEN * 2 + MFSNAMELEN + 2 * sizeof(int)))
|
||||
|
||||
struct mntent {
|
||||
char *mnt_fsname; /* file system name */
|
||||
char *mnt_dir; /* file system path prefix */
|
||||
char *mnt_type; /* dbg, efs, nfs */
|
||||
char *mnt_opts; /* ro, hide, etc. */
|
||||
int mnt_freq; /* dump frequency, in days */
|
||||
int mnt_passno; /* pass number on parallel fsck */
|
||||
};
|
||||
|
||||
FILE * setmntent(char * filep, char * type);
|
||||
struct mntent *getmntent(FILE * filep);
|
||||
//char * hasmntopt(struct mntent * mnt, char * opt);
|
||||
int endmntent(FILE * filep);
|
||||
|
||||
#endif /* mntent_h_ */
|
||||
#endif /* not HAVE_MNTENT_H */
|
@ -1,90 +0,0 @@
|
||||
#include "mntent.h"
|
||||
#include <sys/param.h>
|
||||
//#include <sys/ucred.h>
|
||||
#include <sys/mount.h>
|
||||
#include <fstab.h>
|
||||
|
||||
struct statfs *getmntent_mntbufp;
|
||||
int getmntent_mntcount = 0;
|
||||
int getmntent_mntpos = 0;
|
||||
char mntent_global_opts[256];
|
||||
struct mntent mntent_global_mntent;
|
||||
|
||||
FILE * setmntent(char * filep, char * type)
|
||||
{
|
||||
getmntent_mntpos = 0;
|
||||
getmntent_mntcount = getmntinfo(&getmntent_mntbufp, MNT_WAIT);
|
||||
return (FILE *)1; // dummy
|
||||
}
|
||||
|
||||
void getmntent_addopt(char ** c, const char * s)
|
||||
{
|
||||
int i = strlen(s);
|
||||
*(*c)++ = ',';
|
||||
strcpy(*c, s);
|
||||
*c += i;
|
||||
}
|
||||
|
||||
struct mntent *getmntent(FILE * filep)
|
||||
{
|
||||
char *c = mntent_global_opts+2;
|
||||
struct fstab *fst;
|
||||
if (getmntent_mntpos >= getmntent_mntcount)
|
||||
return 0;
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_RDONLY) strcpy(mntent_global_opts, "ro");
|
||||
else strcpy(mntent_global_opts, "rw");
|
||||
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_SYNCHRONOUS) getmntent_addopt(&c, "sync");
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOEXEC) getmntent_addopt(&c, "noexec");
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOSUID) getmntent_addopt(&c, "nosuid");
|
||||
#ifdef MNT_NODEV
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NODEV) getmntent_addopt(&c, "nodev");
|
||||
#endif
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_UNION) getmntent_addopt(&c, "union");
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_ASYNC) getmntent_addopt(&c, "async");
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOATIME) getmntent_addopt(&c, "noatime");
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOCLUSTERR) getmntent_addopt(&c, "noclusterr");
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOCLUSTERW) getmntent_addopt(&c, "noclusterw");
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_NOSYMFOLLOW) getmntent_addopt(&c, "nosymfollow");
|
||||
if (getmntent_mntbufp[getmntent_mntpos].f_flags & MNT_SUIDDIR) getmntent_addopt(&c, "suiddir");
|
||||
|
||||
mntent_global_mntent.mnt_fsname = getmntent_mntbufp[getmntent_mntpos].f_mntfromname;
|
||||
mntent_global_mntent.mnt_dir = getmntent_mntbufp[getmntent_mntpos].f_mntonname;
|
||||
mntent_global_mntent.mnt_type = getmntent_mntbufp[getmntent_mntpos].f_fstypename;
|
||||
mntent_global_mntent.mnt_opts = mntent_global_opts;
|
||||
if ((fst = getfsspec(getmntent_mntbufp[getmntent_mntpos].f_mntfromname)))
|
||||
{
|
||||
mntent_global_mntent.mnt_freq = fst->fs_freq;
|
||||
mntent_global_mntent.mnt_passno = fst->fs_passno;
|
||||
}
|
||||
else if ((fst = getfsfile(getmntent_mntbufp[getmntent_mntpos].f_mntonname)))
|
||||
{
|
||||
mntent_global_mntent.mnt_freq = fst->fs_freq;
|
||||
mntent_global_mntent.mnt_passno = fst->fs_passno;
|
||||
}
|
||||
else if (strcmp(getmntent_mntbufp[getmntent_mntpos].f_fstypename, "ufs") == 0)
|
||||
{
|
||||
if (strcmp(getmntent_mntbufp[getmntent_mntpos].f_mntonname, "/") == 0)
|
||||
{
|
||||
mntent_global_mntent.mnt_freq = 1;
|
||||
mntent_global_mntent.mnt_passno = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
mntent_global_mntent.mnt_freq = 2;
|
||||
mntent_global_mntent.mnt_passno = 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mntent_global_mntent.mnt_freq = 0;
|
||||
mntent_global_mntent.mnt_passno = 0;
|
||||
}
|
||||
++getmntent_mntpos;
|
||||
return & mntent_global_mntent;
|
||||
}
|
||||
|
||||
int endmntent(FILE * filep)
|
||||
{
|
||||
return 0;
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
--- src/Makefile.in.orig Sun Jun 9 09:58:47 2002
|
||||
+++ src/Makefile.in Thu Feb 13 09:05:55 2003
|
||||
@@ -88,14 +88,14 @@
|
||||
localedir = @localedir@
|
||||
|
||||
bin_PROGRAMS = LinNeighborhood
|
||||
-LinNeighborhood_SOURCES = browsewrap.c data.c filesystem.c gtk_dialog.c gtk_gui.c gtk_mountdlg.c gtk_sharewindow.c gtk_tree.c guiwrap.c io.c libsmb.c lmhosts.c main.c preferences.c smbbrowse.c smbmount.c utility.c
|
||||
+LinNeighborhood_SOURCES = browsewrap.c data.c filesystem.c gtk_dialog.c gtk_gui.c gtk_mountdlg.c gtk_sharewindow.c gtk_tree.c guiwrap.c io.c libsmb.c lmhosts.c main.c preferences.c smbbrowse.c smbmount.c utility.c mntent_compat.c
|
||||
|
||||
-noinst_HEADERS = browsewrap.h data.h define.h filesystem.h gtk_dialog.h gtk_gui.h gtk_mountdlg.h gtk_sharewindow.h gtk_tree.h guiwrap.h io.h libsmb.h preferences.h samba.h smbif.h utility.h
|
||||
+noinst_HEADERS = browsewrap.h data.h define.h filesystem.h gtk_dialog.h gtk_gui.h gtk_mountdlg.h gtk_sharewindow.h gtk_tree.h guiwrap.h io.h libsmb.h preferences.h samba.h smbif.h utility.h mntent.h
|
||||
|
||||
|
||||
LinNeighborhood_LDADD = @GTK_LIBS@
|
||||
INCLUDES = @GTK_CFLAGS@ -DLIBDIR=\"$(libdir)\" -DDATADIR=\"$(datadir)\"
|
||||
-LIBS = @GTK_LIBS@ -lpthread
|
||||
+LIBS = @GTK_LIBS@ -lutil
|
||||
|
||||
EXTRA_DIST = picture
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
@@ -110,7 +110,7 @@
|
||||
LinNeighborhood_OBJECTS = browsewrap.o data.o filesystem.o gtk_dialog.o \
|
||||
gtk_gui.o gtk_mountdlg.o gtk_sharewindow.o gtk_tree.o guiwrap.o io.o \
|
||||
libsmb.o lmhosts.o main.o preferences.o smbbrowse.o smbmount.o \
|
||||
-utility.o
|
||||
+utility.o mntent_compat.o
|
||||
LinNeighborhood_DEPENDENCIES =
|
||||
LinNeighborhood_LDFLAGS =
|
||||
CFLAGS = @CFLAGS@
|
@ -1,12 +0,0 @@
|
||||
--- src/data.c.orig Thu Apr 10 21:59:12 2003
|
||||
+++ src/data.c Thu Apr 10 22:45:59 2003
|
||||
@@ -171,6 +171,9 @@
|
||||
{
|
||||
if ( mount )
|
||||
{
|
||||
+ char *c = strchr(mount->machine, '@'); // remove user name from smb name
|
||||
+ if (c)
|
||||
+ memmove(mount->machine, c+1, strlen(c)+1);
|
||||
if ( mount_list_search_by_mountpoint(mount->mountpoint) == NULL )
|
||||
{
|
||||
mountlist = g_slist_append(mountlist, mount);
|
@ -1,55 +0,0 @@
|
||||
--- src/gtk_dialog.c.orig Sun Apr 6 13:07:13 2003
|
||||
+++ src/gtk_dialog.c Sun Apr 6 13:10:50 2003
|
||||
@@ -2039,34 +2039,34 @@
|
||||
gtk_widget_show(button);
|
||||
|
||||
frame = gtk_frame_new(_(" smbmount version "));
|
||||
- gtk_container_border_width(GTK_CONTAINER(frame), 3);
|
||||
- gtk_box_pack_start(GTK_BOX(frame_vbox), frame, FALSE, TRUE, 0);
|
||||
- gtk_widget_show(frame);
|
||||
+// gtk_container_border_width(GTK_CONTAINER(frame), 3);
|
||||
+// gtk_box_pack_start(GTK_BOX(frame_vbox), frame, FALSE, TRUE, 0);
|
||||
+// gtk_widget_show(frame);
|
||||
|
||||
frame_vbox = gtk_vbox_new(FALSE, 0);
|
||||
- gtk_container_border_width(GTK_CONTAINER(frame_vbox), 5);
|
||||
- gtk_container_add(GTK_CONTAINER(frame), frame_vbox);
|
||||
- gtk_widget_show(frame_vbox);
|
||||
+// gtk_container_border_width(GTK_CONTAINER(frame_vbox), 5);
|
||||
+// gtk_container_add(GTK_CONTAINER(frame), frame_vbox);
|
||||
+// gtk_widget_show(frame_vbox);
|
||||
|
||||
smbmount_204_radio = gtk_radio_button_new_with_label(NULL, _("version <= 2.0.4"));
|
||||
- if ( globals.linux_version < LINUX_2_2 )
|
||||
- gtk_widget_set_sensitive(smbmount_204_radio, FALSE);
|
||||
- gtk_box_pack_start(GTK_BOX(frame_vbox), smbmount_204_radio, FALSE, TRUE, 0);
|
||||
- gtk_widget_show(smbmount_204_radio);
|
||||
+// if ( globals.linux_version < LINUX_2_2 )
|
||||
+// gtk_widget_set_sensitive(smbmount_204_radio, FALSE);
|
||||
+// gtk_box_pack_start(GTK_BOX(frame_vbox), smbmount_204_radio, FALSE, TRUE, 0);
|
||||
+// gtk_widget_show(smbmount_204_radio);
|
||||
|
||||
smbmount_205_radio = gtk_radio_button_new_with_label(
|
||||
gtk_radio_button_group(GTK_RADIO_BUTTON(smbmount_204_radio)), _("version = 2.0.5"));
|
||||
- if ( globals.linux_version < LINUX_2_2 )
|
||||
- gtk_widget_set_sensitive(smbmount_205_radio, FALSE);
|
||||
- gtk_box_pack_start(GTK_BOX(frame_vbox), smbmount_205_radio, FALSE, TRUE, 0);
|
||||
- gtk_widget_show(smbmount_205_radio);
|
||||
+// if ( globals.linux_version < LINUX_2_2 )
|
||||
+// gtk_widget_set_sensitive(smbmount_205_radio, FALSE);
|
||||
+// gtk_box_pack_start(GTK_BOX(frame_vbox), smbmount_205_radio, FALSE, TRUE, 0);
|
||||
+// gtk_widget_show(smbmount_205_radio);
|
||||
|
||||
smbmount_206_radio = gtk_radio_button_new_with_label(
|
||||
gtk_radio_button_group(GTK_RADIO_BUTTON(smbmount_205_radio)), _("version >= 2.0.6"));
|
||||
- if ( globals.linux_version < LINUX_2_2 )
|
||||
- gtk_widget_set_sensitive(smbmount_206_radio, FALSE);
|
||||
- gtk_box_pack_start(GTK_BOX(frame_vbox), smbmount_206_radio, FALSE, TRUE, 0);
|
||||
- gtk_widget_show(smbmount_206_radio);
|
||||
+// if ( globals.linux_version < LINUX_2_2 )
|
||||
+// gtk_widget_set_sensitive(smbmount_206_radio, FALSE);
|
||||
+// gtk_box_pack_start(GTK_BOX(frame_vbox), smbmount_206_radio, FALSE, TRUE, 0);
|
||||
+// gtk_widget_show(smbmount_206_radio);
|
||||
|
||||
switch ( pref.v.smbmount_version )
|
||||
{
|
@ -1,103 +0,0 @@
|
||||
--- src/gtk_mountdlg.c.orig Wed Apr 9 19:51:41 2003
|
||||
+++ src/gtk_mountdlg.c Wed Apr 9 20:18:14 2003
|
||||
@@ -726,65 +726,65 @@
|
||||
|
||||
/*root password */
|
||||
frame = gtk_frame_new(_("Mount as Root"));
|
||||
- gtk_box_pack_start(GTK_BOX (GTK_DIALOG (mount_dlg)->vbox), frame, TRUE, TRUE, 5);
|
||||
- gtk_widget_show(frame);
|
||||
+// gtk_box_pack_start(GTK_BOX (GTK_DIALOG (mount_dlg)->vbox), frame, TRUE, TRUE, 5);
|
||||
+// gtk_widget_show(frame);
|
||||
|
||||
vbox=gtk_vbox_new(FALSE,0);
|
||||
- gtk_container_border_width(GTK_CONTAINER(vbox), 3);
|
||||
- gtk_container_add(GTK_CONTAINER(frame),vbox);
|
||||
- gtk_widget_show(vbox);
|
||||
+// gtk_container_border_width(GTK_CONTAINER(vbox), 3);
|
||||
+// gtk_container_add(GTK_CONTAINER(frame),vbox);
|
||||
+// gtk_widget_show(vbox);
|
||||
|
||||
hbox=gtk_hbox_new(FALSE,0);
|
||||
/* gtk_box_pack_start(GTK_BOX (GTK_DIALOG (mount_dlg)->vbox),
|
||||
hbox, TRUE, TRUE, 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(hbox), 3);
|
||||
gtk_container_add(GTK_CONTAINER(frame),hbox); */
|
||||
- gtk_box_pack_start(GTK_BOX (vbox),hbox, TRUE, TRUE, 0);
|
||||
- gtk_widget_show(hbox);
|
||||
+// gtk_box_pack_start(GTK_BOX (vbox),hbox, TRUE, TRUE, 0);
|
||||
+// gtk_widget_show(hbox);
|
||||
|
||||
sumountcheckbox = gtk_check_button_new_with_label(_("OK"));
|
||||
/* gtk_widget_set_usize(sumountcheckbox,120,-1); */
|
||||
- if (geteuid()==0) /*No root password if you are root*/
|
||||
- gtk_widget_set_sensitive(sumountcheckbox,FALSE);
|
||||
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(sumountcheckbox),cachesupwd & sumount);
|
||||
- gtk_box_pack_start (GTK_BOX (hbox), sumountcheckbox, FALSE, TRUE, 0);
|
||||
- gtk_widget_show (sumountcheckbox);
|
||||
+// if (geteuid()==0) /*No root password if you are root*/
|
||||
+// gtk_widget_set_sensitive(sumountcheckbox,FALSE);
|
||||
+// gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(sumountcheckbox),cachesupwd & sumount);
|
||||
+// gtk_box_pack_start (GTK_BOX (hbox), sumountcheckbox, FALSE, TRUE, 0);
|
||||
+// gtk_widget_show (sumountcheckbox);
|
||||
|
||||
label=gtk_label_new(_("Password:"));
|
||||
- gtk_box_pack_start(GTK_BOX (hbox),label, FALSE, TRUE, 0);
|
||||
+// gtk_box_pack_start(GTK_BOX (hbox),label, FALSE, TRUE, 0);
|
||||
/* gtk_widget_set_usize(label,100,-1); */
|
||||
- gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_LEFT);
|
||||
- gtk_widget_show(label);
|
||||
+// gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_LEFT);
|
||||
+// gtk_widget_show(label);
|
||||
|
||||
supasswdentry= gtk_entry_new_with_max_length(MASTER_LEN);
|
||||
- gtk_entry_set_visibility(GTK_ENTRY(supasswdentry), 0);
|
||||
+// gtk_entry_set_visibility(GTK_ENTRY(supasswdentry), 0);
|
||||
|
||||
- if (sumount && cachesupwd)
|
||||
- gtk_entry_set_text (GTK_ENTRY (supasswdentry), supasswd);
|
||||
- else
|
||||
- gtk_entry_set_text (GTK_ENTRY (supasswdentry), "");
|
||||
+// if (sumount && cachesupwd)
|
||||
+// gtk_entry_set_text (GTK_ENTRY (supasswdentry), supasswd);
|
||||
+// else
|
||||
+// gtk_entry_set_text (GTK_ENTRY (supasswdentry), "");
|
||||
|
||||
- gtk_widget_set_sensitive(supasswdentry,sumount&cachesupwd);
|
||||
- gtk_signal_connect_object(GTK_OBJECT(supasswdentry), "key_press_event",
|
||||
- GTK_SIGNAL_FUNC(smb_mount_key_press_callback), NULL);
|
||||
- gtk_box_pack_start (GTK_BOX (hbox), supasswdentry, TRUE, TRUE, 5);
|
||||
- gtk_widget_show (supasswdentry);
|
||||
- gtk_signal_connect (GTK_OBJECT(sumountcheckbox), "toggled",
|
||||
- GTK_SIGNAL_FUNC(supwentry_toggle_sensitive),supasswdentry);
|
||||
+// gtk_widget_set_sensitive(supasswdentry,sumount&cachesupwd);
|
||||
+// gtk_signal_connect_object(GTK_OBJECT(supasswdentry), "key_press_event",
|
||||
+// GTK_SIGNAL_FUNC(smb_mount_key_press_callback), NULL);
|
||||
+// gtk_box_pack_start (GTK_BOX (hbox), supasswdentry, TRUE, TRUE, 5);
|
||||
+// gtk_widget_show (supasswdentry);
|
||||
+// gtk_signal_connect (GTK_OBJECT(sumountcheckbox), "toggled",
|
||||
+// GTK_SIGNAL_FUNC(supwentry_toggle_sensitive),supasswdentry);
|
||||
|
||||
hbox=gtk_hbox_new(FALSE,0);
|
||||
- gtk_box_pack_start(GTK_BOX (vbox),hbox, TRUE, TRUE, 0);
|
||||
- gtk_widget_show(hbox);
|
||||
+// gtk_box_pack_start(GTK_BOX (vbox),hbox, TRUE, TRUE, 0);
|
||||
+// gtk_widget_show(hbox);
|
||||
|
||||
sucachepwdcheckbox = gtk_check_button_new_with_label(_("Cache Root Password"));
|
||||
|
||||
/* gtk_widget_set_usize(sumountcheckbox,120,-1); */
|
||||
- if (geteuid()==0)
|
||||
- gtk_widget_set_sensitive(sumountcheckbox,FALSE);
|
||||
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(sucachepwdcheckbox),cachesupwd &sumount);
|
||||
- gtk_widget_set_sensitive(sucachepwdcheckbox,sumount);
|
||||
- gtk_box_pack_start (GTK_BOX (hbox), sucachepwdcheckbox, FALSE, TRUE, 0);
|
||||
- gtk_widget_show (sucachepwdcheckbox);
|
||||
+// if (geteuid()==0)
|
||||
+// gtk_widget_set_sensitive(sumountcheckbox,FALSE);
|
||||
+// gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(sucachepwdcheckbox),cachesupwd &sumount);
|
||||
+// gtk_widget_set_sensitive(sucachepwdcheckbox,sumount);
|
||||
+// gtk_box_pack_start (GTK_BOX (hbox), sucachepwdcheckbox, FALSE, TRUE, 0);
|
||||
+// gtk_widget_show (sucachepwdcheckbox);
|
||||
|
||||
/*-action_area*/
|
||||
mount_button = gtk_button_new_with_label(_("Mount"));
|
@ -1,19 +0,0 @@
|
||||
--- src/gtk_tree.c.orig Wed Apr 9 20:32:53 2003
|
||||
+++ src/gtk_tree.c Wed Apr 9 20:48:24 2003
|
||||
@@ -2011,7 +2011,7 @@
|
||||
if ( GTK_IS_TREE_ITEM(item) )
|
||||
{
|
||||
box = GTK_BIN(item)->child;
|
||||
-
|
||||
+ if (!box) return itemtype;
|
||||
step_list = GTK_BOX(box)->children->next; /* type entry */
|
||||
child = step_list->data;
|
||||
label = GTK_LABEL(child->widget);
|
||||
@@ -2033,7 +2033,6 @@
|
||||
static unsigned int tree_item_count (GtkTreeItem *item)
|
||||
{
|
||||
unsigned int ireturn;
|
||||
-
|
||||
if ( item != NULL )
|
||||
{
|
||||
if ( item->subtree )
|
@ -1,18 +0,0 @@
|
||||
--- src/io.c.orig Fri Apr 11 16:58:15 2003
|
||||
+++ src/io.c Fri Apr 11 17:03:11 2003
|
||||
@@ -130,12 +130,12 @@
|
||||
/* save only 'not root' mounts -> plain password */
|
||||
if ( (mount != NULL) && (mount->type != mem_mount_root) )
|
||||
{
|
||||
- string_ncopy(str, pref.v.smbmount_exe, MAXMACHNAMEL+MAXSHRNAMEL+PATH_LEN+19);
|
||||
+ *str = 0;
|
||||
temp = str;
|
||||
- temp += strlen(str);
|
||||
merge_mount(&temp, mount, MAXMACHNAMEL+MAXSHRNAMEL+PATH_LEN+19 - strlen(str), 1);
|
||||
string_ncat(str, "\n", MAXMACHNAMEL+MAXSHRNAMEL+PATH_LEN+19);
|
||||
- fwrite(str, 1, strlen(str), fd);
|
||||
+ if (*temp == ' ') ++temp;
|
||||
+ fwrite(temp, 1, strlen(temp), fd);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
--- src/lmhosts.c.orig Thu Feb 13 08:48:40 2003
|
||||
+++ src/lmhosts.c Thu Feb 13 08:49:05 2003
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
+#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
@ -1,22 +0,0 @@
|
||||
--- src/preferences.c.orig Sun Jun 9 09:58:43 2002
|
||||
+++ src/preferences.c Sun Apr 6 13:03:32 2003
|
||||
@@ -29,6 +29,8 @@
|
||||
#include "data.h"
|
||||
#include "utility.h"
|
||||
#include "samba.h"
|
||||
+#include <sys/types.h>
|
||||
+#include <netinet/in.h>
|
||||
|
||||
|
||||
#define LVERSION(major,minor,patch) (((((major)<<8)+(minor))<<8)+(patch))
|
||||
@@ -359,8 +361,8 @@
|
||||
strcpy(pref->v.filemanager_exe, "xterm -e mc $MOUNTPOINT");
|
||||
strcpy(pref->v.smbclient_exe, "smbclient");
|
||||
strcpy(pref->v.nmblookup_exe, "nmblookup");
|
||||
- strcpy(pref->v.smbmount_exe, "smbmount");
|
||||
- strcpy(pref->v.smbumount_exe, "smbumount");
|
||||
+ strcpy(pref->v.smbmount_exe, "mount_smbfs");
|
||||
+ strcpy(pref->v.smbumount_exe, "umount");
|
||||
pref->v.smbclient_arg[0] = 0;
|
||||
pref->v.nmblookup_arg[0] = 0;
|
||||
pref->v.smbmount_arg[0] = 0;
|
@ -1,78 +0,0 @@
|
||||
--- src/smbbrowse.c.orig Sun Jun 9 09:58:43 2002
|
||||
+++ src/smbbrowse.c Thu Apr 10 15:39:19 2003
|
||||
@@ -716,8 +716,8 @@
|
||||
browsedat->browse_state=search_head;
|
||||
browsedat->lasttab=0;
|
||||
if (*user==0){
|
||||
- strcpy(browsedat->userpasswdstr,"-U%");
|
||||
- strcpy(browsedat->userdummystr,"-U%");
|
||||
+ strcpy(browsedat->userpasswdstr,"-N");
|
||||
+ strcpy(browsedat->userdummystr,"-N");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -829,6 +829,12 @@
|
||||
dup2(browsedat->fd[1],STDOUT_FILENO);
|
||||
|
||||
cArg[argcount++] = "nmblookup";
|
||||
+ cArg[argcount++] = "-S";
|
||||
+ cArg[argcount++] = "-d1";
|
||||
+ for ( loop = 0; loop < add_argcount; loop++ )
|
||||
+ {
|
||||
+ cArg[argcount++] = cAddArg[loop];
|
||||
+ }
|
||||
if ( *wins_name )
|
||||
{
|
||||
cArg[argcount++] = "-U";
|
||||
@@ -841,12 +847,6 @@
|
||||
cArg[argcount++] = "-M";
|
||||
cArg[argcount++] = group_name;
|
||||
}
|
||||
- cArg[argcount++] = "-S";
|
||||
- cArg[argcount++] = "-d1";
|
||||
- for ( loop = 0; loop < add_argcount; loop++ )
|
||||
- {
|
||||
- cArg[argcount++] = cAddArg[loop];
|
||||
- }
|
||||
cArg[argcount++] = NULL;
|
||||
|
||||
execvp(pref_get_nmblookup_exe(), cArg);
|
||||
@@ -870,15 +870,16 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- if (*wins_name)
|
||||
- sprintf(logstr,"GetSMBGroups:%s -U %s -R %s -S -d1",pref_get_nmblookup_exe(),wins_name,group_type);
|
||||
- else
|
||||
- sprintf(logstr,"GetSMBGroups:%s -M %s -S -d1",pref_get_nmblookup_exe(),group_name);
|
||||
+ sprintf(logstr,"GetSMBGroups:%s -S -d1",pref_get_nmblookup_exe());
|
||||
for ( loop = 0; loop < add_argcount; loop++ )
|
||||
{
|
||||
string_ncat(logstr, " ", MAXLOGSTRLEN);
|
||||
string_ncat(logstr, cAddArg[loop], MAXLOGSTRLEN);
|
||||
}
|
||||
+ if (*wins_name)
|
||||
+ sprintf(logstr+strlen(logstr)," -U %s -R %s",wins_name,group_type);
|
||||
+ else
|
||||
+ sprintf(logstr+strlen(logstr)," -M %s",group_name);
|
||||
gui_log_window_insert_string(logstr,1);
|
||||
close(browsedat->fd[1]);
|
||||
browsedat->group_master.group_name[MAXGROUPNAMEL]=0;
|
||||
@@ -1028,7 +1029,7 @@
|
||||
}
|
||||
browsedat=g_malloc(sizeof(HBROWSE_STRUCT));
|
||||
if (*user==0)
|
||||
- strcpy(commandstr,"-U%");
|
||||
+ strcpy(commandstr,"-N");
|
||||
else
|
||||
sprintf(commandstr,"-U%s%%%s",user,passwd);
|
||||
|
||||
@@ -1274,7 +1275,7 @@
|
||||
}
|
||||
|
||||
if (*user==0)
|
||||
- strcpy(commandstr,"-U%");
|
||||
+ strcpy(commandstr,"-N");
|
||||
else
|
||||
sprintf(commandstr,"-U%s%%%s",user,passwd);
|
||||
argv[++argnr]="smbclient";
|
@ -1,483 +0,0 @@
|
||||
--- src/smbmount.c.orig Sun Jun 9 09:58:43 2002
|
||||
+++ src/smbmount.c Fri Apr 11 16:55:26 2003
|
||||
@@ -16,6 +16,9 @@
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
+#include <sys/param.h>
|
||||
+#include <errno.h>
|
||||
+#include <poll.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -70,6 +73,9 @@
|
||||
} UMOUNT_STRUCT;
|
||||
static GSList *umountlist = NULL;
|
||||
|
||||
+void split_arguments(char * arguments, char * argv[], int * argnr, GSList ** strlist);
|
||||
+char * storeInBuffer(const char * s, GSList ** strlist);
|
||||
+void execvp_with_password(const char * path, char * const argv[], const char * passwd, GSList * strlist);
|
||||
|
||||
char suprompt[] = "Passw";
|
||||
|
||||
@@ -322,6 +328,7 @@
|
||||
int pipe2_nok,pipe3_nok=1;
|
||||
int sumount,argnr=-1,passw_lf;
|
||||
char commandstr[MAXMNTCOMMANDL],commandstr1[MAXMNTCOMMANDL];
|
||||
+ char num1[10], num2[10], num3[10], num4[10], tmp[MAXMNTCOMMANDL];
|
||||
char opt_group[MAXMNTCOMMANDL];
|
||||
char dummysmbpasswd[64];
|
||||
/*#ifdef LINUX2_0 */
|
||||
@@ -345,6 +352,7 @@
|
||||
sumount=(supasswd!=NULL);
|
||||
passw_lf=(*smbpasswd==0) && !linux2_0; /*smbmount 2.0.3 always waits for password,
|
||||
even if called with -Uuser% or -N if server is in user level security*/
|
||||
+ passw_lf=1;
|
||||
if (sumount|| passw_lf)
|
||||
if (pipe(fdstdin))
|
||||
{
|
||||
@@ -418,96 +426,53 @@
|
||||
else
|
||||
{
|
||||
/* no sumount */
|
||||
- if(linux2_0)
|
||||
{
|
||||
- argv[++argnr]="smbmount";
|
||||
- argv[++argnr]=servicename;
|
||||
- argv[++argnr]=mount_point;
|
||||
- argv[++argnr]="-c";
|
||||
- argv[++argnr]=clientname;
|
||||
- argv[++argnr]="-I";
|
||||
- argv[++argnr]=ipaddr;
|
||||
- if (*group_name)
|
||||
+ // bugfix: mount command might consist of more than one word (example: sudo mount_smbfs)
|
||||
+ split_arguments(pref_get_smbmount_exe(), argv, &argnr, &strlist);
|
||||
{
|
||||
- argv[++argnr]="-D";
|
||||
- argv[++argnr]=group_name;
|
||||
- }
|
||||
- argv[++argnr]="-U";
|
||||
- argv[++argnr]=smbuser;
|
||||
- argv[++argnr]="-f";sprintf(filemodestr,"%d",filemode);
|
||||
- argv[++argnr]=filemodestr;
|
||||
- argv[++argnr]="-d";sprintf(dirmodestr,"%d",dirmode);
|
||||
- argv[++argnr]=dirmodestr;
|
||||
- argv[++argnr]="-u";sprintf(uidstr,"%d",uid);
|
||||
- argv[++argnr]=uidstr;
|
||||
- argv[++argnr]="-g";sprintf(gidstr,"%d",gid);
|
||||
- argv[++argnr]=gidstr;
|
||||
- if (*smbpasswd==0)
|
||||
- argv[++argnr]="-n";
|
||||
- else
|
||||
- {
|
||||
- argv[++argnr]="-P";
|
||||
- argv[++argnr]=smbpasswd;
|
||||
- }
|
||||
- argv[++argnr]=NULL;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /* linux 2.2/2.4 */
|
||||
- argv[++argnr]=pref_get_smbmount_exe();
|
||||
- argv[++argnr]=servicename;
|
||||
- if (pref.v.smbmount_version>SMBMOUNT_204) argv[++argnr]=mount_point;
|
||||
- if (pref.v.smbmount_version<SMBMOUNT_206)
|
||||
- {
|
||||
- /* 2.04/2.05 */
|
||||
+ sprintf(num1,"%d", filemode);
|
||||
+ sprintf(num2,"%d", dirmode);
|
||||
+ sprintf(num3,"%d", uid);
|
||||
+ sprintf(num4,"%d", gid);
|
||||
+ strcpy(commandstr1, "//");
|
||||
+ if (strlen(smbuser))
|
||||
+ {
|
||||
+ strcat(commandstr1, smbuser);
|
||||
+ strcat(commandstr1, "@");
|
||||
+ }
|
||||
+ if (strlen(servicename) > 2)
|
||||
+ strcat(commandstr1, servicename+2);
|
||||
+ argv[++argnr]="-f";
|
||||
+ argv[++argnr]=num1;
|
||||
+ argv[++argnr]="-d";
|
||||
+ argv[++argnr]=num2;
|
||||
+ argv[++argnr]="-u";
|
||||
+ argv[++argnr]=num3;
|
||||
+ argv[++argnr]="-g";
|
||||
+ argv[++argnr]=num4;
|
||||
argv[++argnr]="-I";
|
||||
- argv[++argnr]=ipaddr;
|
||||
+ strcpy(tmp, ipaddr);
|
||||
+ argv[++argnr]=tmp;
|
||||
if (*group_name)
|
||||
{
|
||||
argv[++argnr]="-W";
|
||||
- argv[++argnr]=group_name;
|
||||
- }
|
||||
- sprintf(userpasswd,"-U%s%%%s",smbuser,smbpasswd);
|
||||
- argv[++argnr]=userpasswd;
|
||||
- argv[++argnr]="-d0";
|
||||
- if (pref.v.smbmount_version <SMBMOUNT_205)
|
||||
- {
|
||||
- argv[++argnr]="-c";
|
||||
- argv[++argnr]=commandstr;
|
||||
- sprintf(commandstr,"mount %s -f %d -d %d -u %d -g %d",
|
||||
- /*escape_str_smbmnt(*/mount_point/*,&strlist)*/,filemode,dirmode,uid,gid);
|
||||
- }
|
||||
- if ( !is_empty_string(pref.v.smbmount_arg) )
|
||||
- {
|
||||
- }
|
||||
- }
|
||||
- else /*>=SMBMOUNT_206*/
|
||||
- {
|
||||
- argv[++argnr]="-o";
|
||||
- argv[++argnr]=commandstr;
|
||||
- sprintf(commandstr,"username=%s%%%s,fmask=%d,dmask=%d,uid=%d,gid=%d,ip=%s,debug=0",
|
||||
- smbuser,smbpasswd,filemode,dirmode,uid,gid,ipaddr);
|
||||
- if (*group_name)
|
||||
- {
|
||||
- strcat(commandstr,",workgroup=");
|
||||
- strcat(commandstr,escape_str(group_name,&strlist));
|
||||
+ argv[++argnr]= escape_str(group_name,&strlist);
|
||||
}
|
||||
if ( (port >= 0) && (port < 65536) )
|
||||
{
|
||||
- string_ncat(commandstr, ",port=", MAXMNTCOMMANDL);
|
||||
- string_ncat(commandstr, port_str, MAXMNTCOMMANDL);
|
||||
+ strcat(tmp, ":");
|
||||
+ strcat(tmp, port_str);
|
||||
}
|
||||
if ( !is_empty_string(pref.v.smbmount_arg) )
|
||||
{
|
||||
- if ( pref.v.smbmount_arg[0] != ',' )
|
||||
- string_ncat(commandstr, ",", MAXMNTCOMMANDL);
|
||||
- string_ncat(commandstr, escape_str(pref.v.smbmount_arg,&strlist), MAXMNTCOMMANDL);
|
||||
+ split_arguments(pref.v.smbmount_arg, argv, &argnr, &strlist);
|
||||
}
|
||||
}
|
||||
+ argv[++argnr]=commandstr1;
|
||||
+ argv[++argnr]=mount_point;
|
||||
argv[++argnr]=NULL;
|
||||
}
|
||||
}
|
||||
- slist_free_with_data(&strlist);
|
||||
mountdat=g_malloc(sizeof(MOUNT_STRUCT));
|
||||
if((pipe2_nok=pipe(fdstdout))|| (pipe3_nok=pipe(fdstderr))||
|
||||
(mountdat->childpid =fork())== -1)
|
||||
@@ -521,7 +486,6 @@
|
||||
g_print(_("smbmount pipe,fork error\n"));
|
||||
return;
|
||||
}
|
||||
-
|
||||
if (!mountdat->childpid)
|
||||
{
|
||||
close(fdstdout[0]);
|
||||
@@ -536,7 +500,7 @@
|
||||
if (sumount)
|
||||
execvp("su",argv);
|
||||
else
|
||||
- execvp(pref_get_smbmount_exe(),argv);
|
||||
+ execvp_with_password(argv[0], argv, smbpasswd, strlist);
|
||||
write(STDERR_FILENO,notfound,sizeof(notfound)-1);
|
||||
_exit(0);
|
||||
}
|
||||
@@ -547,9 +511,9 @@
|
||||
else
|
||||
{
|
||||
i=0;
|
||||
- while(argv[i+1])
|
||||
+ while(argv[i])
|
||||
{
|
||||
- mountdat->arglist[i]=g_strdup(argv[i+1]);
|
||||
+ mountdat->arglist[i]=g_strdup(argv[i]);
|
||||
i++;
|
||||
}
|
||||
mountdat->arglist[i]=NULL;
|
||||
@@ -611,46 +575,9 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- if(linux2_0)
|
||||
- {
|
||||
- if (*smbpasswd!=0) argv[argnr-1]=dummysmbpasswd;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- if (pref.v.smbmount_version<SMBMOUNT_206)
|
||||
- sprintf(userpasswd,"-U%s%%%s",smbuser,dummysmbpasswd);
|
||||
- else
|
||||
- {
|
||||
- sprintf(commandstr,"username=%s%%%s,fmask=%d,dmask=%d,uid=%d,gid=%d,ip=%s,debug=0",
|
||||
- smbuser,dummysmbpasswd,filemode,dirmode,uid,gid,ipaddr);
|
||||
- if (*group_name){
|
||||
- strcat(commandstr,",workgroup=");
|
||||
- strcat(commandstr,group_name);
|
||||
- }
|
||||
- if ( (port >= 0) && (port < 65536) )
|
||||
- {
|
||||
- string_ncat(commandstr, ",port=", MAXMNTCOMMANDL);
|
||||
- string_ncat(commandstr, port_str, MAXMNTCOMMANDL);
|
||||
- }
|
||||
- if ( !is_empty_string(pref.v.smbmount_arg) )
|
||||
- {
|
||||
- if ( pref.v.smbmount_arg[0] != ',' )
|
||||
- string_ncat(commandstr, ",", MAXMNTCOMMANDL);
|
||||
- string_ncat(commandstr, escape_str(pref.v.smbmount_arg,&strlist), MAXMNTCOMMANDL);
|
||||
- }
|
||||
- }
|
||||
- if (passw_lf)
|
||||
- {
|
||||
- usleep(50000);
|
||||
- close(fdstdin[0]);
|
||||
- if (!waitpid(mountdat->childpid,NULL,WNOHANG))
|
||||
- write(fdstdin[1], "\n",1);
|
||||
+ log_execvp_str(argv[0],argv);
|
||||
close(fdstdin[1]);
|
||||
}
|
||||
- }
|
||||
-
|
||||
- log_execvp_str(pref_get_smbmount_exe(),argv);
|
||||
- }
|
||||
mountlist=g_slist_append(mountlist,mountdat);
|
||||
mountdat->linepos=0; mountdat->linepos2=0;
|
||||
mountdat->linenum=0;
|
||||
@@ -901,17 +828,13 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- argv[0]=smb ? "smbumount":"umount";
|
||||
- argv[1]=mount_point;
|
||||
+ // bugfix: mount command might consist of more than one word (example: sudo mount_smbfs)
|
||||
+ int argnr = -1;
|
||||
+ split_arguments(pref_get_smbumount_exe(), argv, &argnr, &strlist);
|
||||
if ( !is_empty_string(pref.v.smbumount_arg) )
|
||||
- {
|
||||
- argv[2] = pref.v.smbumount_arg;
|
||||
- argv[3] = NULL;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- argv[2]=NULL;
|
||||
- }
|
||||
+ split_arguments(pref.v.smbumount_arg, argv, &argnr, &strlist);
|
||||
+ argv[++argnr]=mount_point;
|
||||
+ argv[++argnr] = NULL;
|
||||
}
|
||||
if((pipe2_nok=pipe(fdstdout))|| (pipe3_nok=pipe(fdstderr))||
|
||||
(childpid =fork())== -1)
|
||||
@@ -938,7 +861,7 @@
|
||||
execvp("su",argv);
|
||||
}
|
||||
else
|
||||
- execvp(smb ? pref_get_smbumount_exe():"umount",argv);
|
||||
+ execvp_with_password(argv[0], argv, "", strlist);
|
||||
write(STDERR_FILENO,notfound,sizeof(notfound)-1);
|
||||
_exit(0);
|
||||
}
|
||||
@@ -958,7 +881,7 @@
|
||||
gui_log_window_insert_string("*",0);
|
||||
}
|
||||
else
|
||||
- log_execvp_str(smb ? pref_get_smbumount_exe():"umount",argv);
|
||||
+ log_execvp_str(argv[0], argv);
|
||||
mountdat=g_malloc(sizeof(UMOUNT_STRUCT));
|
||||
umountlist=g_slist_append(umountlist,mountdat);
|
||||
mountdat->childpid=childpid;
|
||||
@@ -1015,6 +938,198 @@
|
||||
slist_free_with_data(&umountlist);
|
||||
}
|
||||
|
||||
+void split_arguments(char * arguments, char * argv[], int * argnr, GSList ** strlist)
|
||||
+{
|
||||
+ char * c = argv[++*argnr] = storeInBuffer(arguments, strlist);
|
||||
+ while(c = strchr(c, ' '))
|
||||
+ {
|
||||
+ char *d = c+1;
|
||||
+ while(*d && *d == ' ')
|
||||
+ d++;
|
||||
+ *c = 0;
|
||||
+ c = d;
|
||||
+ if (!*c)
|
||||
+ break;
|
||||
+ argv[++*argnr] = storeInBuffer(c, strlist);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+char * storeInBuffer(const char * s, GSList ** strlist)
|
||||
+{
|
||||
+ int n;
|
||||
+ char * ss;
|
||||
+
|
||||
+ if (*s==0) return 0;
|
||||
+ n = strlen(s);
|
||||
+ ss=g_malloc(n+1);
|
||||
+ strcpy(ss, s);
|
||||
+ *strlist=g_slist_append(*strlist,ss);
|
||||
+ return ss;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+// this looks like a global variable. But each forked execvp_with_password
|
||||
+// process has one copy of it. So it as a process local varible storing the
|
||||
+// process ID of the forked child process, which actaully execs mount_smbfs
|
||||
+int _childPid = 0;
|
||||
+
|
||||
+// called, if the child proces is killed. Kills its child process as well
|
||||
+void stopMountSignalHandler (int sig)
|
||||
+{
|
||||
+ kill(_childPid, SIGINT);
|
||||
+ waitpid(_childPid, 0, WUNTRACED);
|
||||
+ _exit(0);
|
||||
+}
|
||||
+
|
||||
+// replaces execvp to call mount_smbfs. If mount smbfs asks for a password, it is provided.
|
||||
+// This can not be sent to stdin, because BSD gets the password directly from the terminal.
|
||||
+// Therfore another process with a pseudo terminal is created.
|
||||
+void execvp_with_password(const char * path, char * const argv[], const char * passwd, GSList *strlist)
|
||||
+{
|
||||
+ int master, i;
|
||||
+ char terminal[MAXPATHLEN] = "";
|
||||
+ char * pw = NULL;
|
||||
+ int slave;
|
||||
+ char password[1024], result[1024];
|
||||
+ char * passwordText = "password:";
|
||||
+ int passwordTextLen = strlen(passwordText);
|
||||
+ char * resp_pos = result;
|
||||
+ int fdstderr[2];
|
||||
+
|
||||
+ // create a pipe to the child process for stderr. For stdout the pseudo terminal is used
|
||||
+ if(pipe(fdstderr))
|
||||
+ {
|
||||
+ fdstderr[0] = 0;
|
||||
+ fdstderr[1] = 0;
|
||||
+ }
|
||||
+
|
||||
+ // create the child process and the pseudo terminal
|
||||
+ _childPid = forkpty(&master, terminal, NULL, NULL);
|
||||
+
|
||||
+ if (_childPid < 0)
|
||||
+ {
|
||||
+ if (errno == ENOENT)
|
||||
+ printf("Error: Out of ptys\n");
|
||||
+ else
|
||||
+ printf(result, "Error: Forkpty\n");
|
||||
+ _exit(1);
|
||||
+ }
|
||||
+ else if (_childPid == 0)
|
||||
+ {
|
||||
+ // prepare stderr pipe
|
||||
+ if (fdstderr[0])
|
||||
+ {
|
||||
+ close(fdstderr[0]);
|
||||
+ dup2(fdstderr[1], STDERR_FILENO);
|
||||
+ }
|
||||
+
|
||||
+ // prepare the pseudo terminal
|
||||
+ close(master);
|
||||
+ slave = open(terminal, O_RDWR);
|
||||
+ if (slave < 0)
|
||||
+ {
|
||||
+ printf("open() failed: %s", strerror(errno));
|
||||
+ kill(_childPid, SIGINT);
|
||||
+ waitpid(_childPid, 0, WUNTRACED);
|
||||
+ _exit(1);
|
||||
+ }
|
||||
|
||||
+ // launch application (mount_smbfs)
|
||||
+ execvp(path, argv);
|
||||
+ printf("error: %d (%s)\n", errno, strerror(errno));
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ // prepare the stderr pipe
|
||||
+ if (fdstderr[1])
|
||||
+ close(fdstderr[1]);
|
||||
|
||||
+ // install the SIGIN (ctrl-c) handler
|
||||
+ if (signal(SIGINT, stopMountSignalHandler) == SIG_ERR)
|
||||
+ printf("error: can not install SIGINT handler\n");
|
||||
+ errno = 0;
|
||||
+ *resp_pos = 0;
|
||||
+
|
||||
+ // main loop: wait for childs response
|
||||
+ while (!errno)
|
||||
+ {
|
||||
+ // prepare a poll, wich waits for output from the pseudo terminal and from stderr
|
||||
+ int pollnum = 1;
|
||||
+ struct pollfd polldat[2];
|
||||
+ polldat[0].fd = master;
|
||||
+ polldat[0].events = POLLIN | POLLRDNORM | POLLRDBAND | POLLPRI;
|
||||
+ if (fdstderr[0])
|
||||
+ {
|
||||
+ pollnum = 2;
|
||||
+ polldat[1].fd = fdstderr[0];
|
||||
+ polldat[1].events = POLLIN | POLLRDNORM | POLLRDBAND | POLLPRI;
|
||||
+ }
|
||||
+
|
||||
+ // sleep until the child terminates or sends something
|
||||
+ if (poll(polldat, pollnum, 1000) < 0)
|
||||
+ break;
|
||||
|
||||
+ // response from childs stderr?
|
||||
+ if (pollnum == 2 && polldat[1].revents)
|
||||
+ {
|
||||
+ // read response and send it to this process' stderr. It is connected
|
||||
+ // with another pipe with the main process!
|
||||
+ char s[1024];
|
||||
+ int i = read(fdstderr[0], s, 1024);
|
||||
+ if (errno)
|
||||
+ break;
|
||||
+ if (i > 0)
|
||||
+ {
|
||||
+ s[i] = 0;
|
||||
+ write(STDERR_FILENO, s, i);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // response from childs stdout?
|
||||
+ if (polldat[0].revents)
|
||||
+ {
|
||||
+ // read response and send it to this process' stdout. It is connected
|
||||
+ // with another pipe with the main process. If the string 'password'
|
||||
+ // was send, provide the password
|
||||
+ char c;
|
||||
+ if (read(master, &c, 1) <= 0 || errno)
|
||||
+ break;
|
||||
+ if (resp_pos - result < sizeof(result))
|
||||
+ *resp_pos++ = c;
|
||||
+ *resp_pos = 0;
|
||||
+ if (c == '\n')
|
||||
+ {
|
||||
+ printf("%s", result);
|
||||
+ resp_pos = result;
|
||||
+ }
|
||||
+ *resp_pos = 0;
|
||||
+ if (resp_pos - result >= passwordTextLen && !strcasecmp(resp_pos-passwordTextLen, passwordText))
|
||||
+ {
|
||||
+ // prepare the password and send it through the pseudo terminal
|
||||
+ strcpy(password, passwd);
|
||||
+ strcat(password, "\n");
|
||||
+ resp_pos = result;
|
||||
+ *resp_pos = 0;
|
||||
+ write(master, password, strlen(password));
|
||||
+ }
|
||||
+ }
|
||||
+ // if the child is dead, end main loop
|
||||
+ if (waitpid(_childPid,NULL,WNOHANG))
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ // if there is unsend response, send it to the main process
|
||||
+ printf("%s", result);
|
||||
+
|
||||
+ // free resources
|
||||
+ if (fdstderr[0])
|
||||
+ close(fdstderr[0]);
|
||||
+ close(master);
|
||||
+ slist_free_with_data(&strlist);
|
||||
+
|
||||
+ // get childs return code to avoid zombies
|
||||
+ waitpid(_childPid, 0, WUNTRACED);
|
||||
+ _exit(0);
|
||||
+ }
|
||||
+ _exit(-1); // can not be reached
|
||||
+}
|
@ -1,22 +0,0 @@
|
||||
--- src/utility.c.orig Sun Jun 9 09:58:43 2002
|
||||
+++ src/utility.c Thu Feb 13 09:56:06 2003
|
||||
@@ -16,6 +16,7 @@
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
+#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <stdio.h>
|
||||
@@ -421,9 +422,9 @@
|
||||
unsigned char path_exist (char *path)
|
||||
{
|
||||
DIR *dir;
|
||||
-
|
||||
dir = opendir(path);
|
||||
- closedir(dir);
|
||||
+ if (dir)
|
||||
+ closedir(dir);
|
||||
return ( dir != NULL ) ? 1 : 0;
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
LinNeighborhood is a Xwindow graphical port of Network Neighborhood,
|
||||
running over Samba utilities and the smbfs.
|
||||
|
||||
It permits to browse an SMB (CIFS) network consisting of Samba,
|
||||
Windows (WfWg, 95, 98, NT) and probably (not tested) OS/2, LanManager
|
||||
for DOS and others. It also offers an interface to mount the found shares.
|
||||
|
||||
WWW: http://www.bnro.de/~schmidjo/index.html
|
||||
|
||||
--
|
||||
h.eichmann@gmx.de
|
@ -1,9 +0,0 @@
|
||||
To mount shares with LinNeighborhood, there are the following possibilities:
|
||||
- run it as root. (not recommended)
|
||||
- give LinNeighborhood the suid flag (not recommended)
|
||||
- give mount_smbfs and umount the suid flag (very bad!)
|
||||
- install and configure sudo correctly and replace mount_smbfs and umount
|
||||
in the preferences by "sudo mount_smbfs" and "sudo umount" (recommended).
|
||||
Make sure, that all sudo rules concerning mount and umount have the
|
||||
NOPASSWD flag. Otherwise two password questions might occur (one
|
||||
from sudo and one from mount_smbfs) which will definitely go wrong.
|
@ -1,14 +0,0 @@
|
||||
bin/LinNeighborhood
|
||||
share/locale/de/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/sv/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/ja/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/fr/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/ru/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/es/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/pt_BR/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/tr/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/pl/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/it/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/locale/zh_TW/LC_MESSAGES/LinNeighborhood.mo
|
||||
share/icons/LinNeighborhood.xpm
|
||||
@dirrm share/icons
|
Loading…
Reference in New Issue
Block a user