summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
Diffstat (limited to 'extra')
-rw-r--r--extra/eject/PKGBUILD43
-rw-r--r--extra/eject/eject-2.1.1-verbose.patch15
-rw-r--r--extra/eject/eject-2.1.5-lock.patch171
-rw-r--r--extra/eject/eject-2.1.5-openrw.patch17
-rw-r--r--extra/eject/eject-2.1.5-spaces.patch62
-rw-r--r--extra/eject/eject-2.1.5-umount.patch176
-rw-r--r--extra/eject/eject-2.1.5-unlock.patch59
-rw-r--r--extra/eject/eject-timeout.patch11
-rw-r--r--extra/emacs/PKGBUILD66
-rw-r--r--extra/emacs/emacs.install12
-rw-r--r--extra/i8kutils/PKGBUILD6
-rw-r--r--extra/pidgin/PKGBUILD18
-rw-r--r--extra/xfdesktop/PKGBUILD11
-rw-r--r--extra/xfdesktop/fix-desktop-drag-and-drop.patch57
-rw-r--r--extra/zile/PKGBUILD9
15 files changed, 661 insertions, 72 deletions
diff --git a/extra/eject/PKGBUILD b/extra/eject/PKGBUILD
index b03fd577d..131f4584e 100644
--- a/extra/eject/PKGBUILD
+++ b/extra/eject/PKGBUILD
@@ -1,29 +1,50 @@
-# $Id: PKGBUILD 122087 2011-05-02 06:23:02Z andrea $
-# Maintainer:
+# $Id: PKGBUILD 135944 2011-08-20 17:05:11Z tomegun $
+# Maintainer: Tom Gundersen <teg@jlkm.no>
+# Contributor: Natrio <natrio@list.ru>
# Contributor: dorphell <dorphell@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=eject
pkgver=2.1.5
-pkgrel=5
-pkgdesc="A program for ejecting removable media under software control"
+pkgrel=7
+pkgdesc="A program for ejecting removable media under software control."
arch=('i686' 'x86_64')
url="http://eject.sourceforge.net/"
license=('GPL')
depends=('glibc')
-source=("ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.bz2"
- 'eject-2.1.5-handle-spaces.patch')
+source=("ftp://ftp.archlinux.org/other/eject/eject-${pkgver}.tar.bz2"
+ 'eject-2.1.1-verbose.patch'
+ 'eject-2.1.5-lock.patch'
+ 'eject-2.1.5-spaces.patch'
+ 'eject-2.1.5-umount.patch'
+ 'eject-timeout.patch'
+ 'eject-2.1.5-unlock.patch'
+ 'eject-2.1.5-openrw.patch')
md5sums=('5a6cab2184ae4ed21128054d931d558f'
- '595b97c3bd56fd41e3b01b07885f81dc')
+ '4fb81806de181d5f353a459b7f122081'
+ '7d18c14f7b1bb50149fd2b41215dc4f2'
+ '64f5c54dac064e6dbc427025d919221b'
+ '34221248a269703d3a47a8d2a6fdd2e2'
+ 'f6b1b702ef9174e2fd05a56ee2de850e'
+ 'f384f98fa689b087d99217a7403bf706'
+ 'e74d742540e4f399d348af495bf00e85')
build() {
- cd "${srcdir}/${pkgname}"
- patch -Np0 -i "${srcdir}/eject-2.1.5-handle-spaces.patch"
- ./configure --prefix=/usr --mandir=/usr/share/man
+ cd "${srcdir}/eject"
+ patch -p1 -i "${srcdir}/eject-2.1.1-verbose.patch"
+ patch -p1 -i "${srcdir}/eject-2.1.5-lock.patch"
+ patch -p1 -i "${srcdir}/eject-2.1.5-spaces.patch"
+ patch -p1 -i "${srcdir}/eject-2.1.5-umount.patch"
+ patch -p1 -i "${srcdir}/eject-timeout.patch"
+ patch -p1 -i "${srcdir}/eject-2.1.5-unlock.patch"
+ patch -p1 -i "${srcdir}/eject-2.1.5-openrw.patch"
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --enable-default-device=sr0
make
}
package() {
- cd "${srcdir}/${pkgname}"
+ cd "${srcdir}/eject"
make DESTDIR="${pkgdir}" install
}
diff --git a/extra/eject/eject-2.1.1-verbose.patch b/extra/eject/eject-2.1.1-verbose.patch
new file mode 100644
index 000000000..44c05d881
--- /dev/null
+++ b/extra/eject/eject-2.1.1-verbose.patch
@@ -0,0 +1,15 @@
+diff --git a/eject.c b/eject.c
+index b14d5f2..662ba54 100644
+--- a/eject.c
++++ b/eject.c
+@@ -709,7 +709,9 @@ static int EjectScsi(int fd)
+ unsigned char sense_buffer[32];
+
+ if ((ioctl(fd, SG_GET_VERSION_NUM, &k) < 0) || (k < 30000)) {
+- printf("not an sg device, or old sg driver\n");
++ if (v_option) {
++ printf(_("not an sg device, or old sg driver\n"));
++ }
+ return 0;
+ }
+
diff --git a/extra/eject/eject-2.1.5-lock.patch b/extra/eject/eject-2.1.5-lock.patch
new file mode 100644
index 000000000..25f84651e
--- /dev/null
+++ b/extra/eject/eject-2.1.5-lock.patch
@@ -0,0 +1,171 @@
+ eject.1 | 13 +++++++++++--
+ eject.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 63 insertions(+), 4 deletions(-)
+
+diff --git a/eject.1 b/eject.1
+index 3c388c6..315dc6d 100644
+--- a/eject.1
++++ b/eject.1
+@@ -17,6 +17,8 @@ eject [\-vn] \-a on|off|1|0 [<name>]
+ .br
+ eject [\-vn] \-c slot [<name>]
+ .br
++eject [\-vn] \-i on|off|1|0 [<name>]
++.br
+ eject [\-vn] \-t [<name>]
+ .br
+ eject [\-vn] \-T [<name>]
+@@ -83,6 +85,13 @@ for a change request to work. Please also note that the first slot of
+ the changer is referred to as 0, not 1.
+
+ .TP 0.5i
++.B \-i on|1|off|0
++This option controls locking of the hardware eject button. When
++enabled, the drive will not be ejected when the button is pressed.
++This is useful when you are carrying a laptop in a bag or case and
++don't want it to eject if the button is inadvertently pressed.
++
++.TP 0.5i
+ .B \-t
+ With this option the drive is given a CD-ROM tray close command. Not
+ all devices support this command.
+@@ -121,8 +130,8 @@ performed.
+ .B \-r
+ This option specifies that the drive should be ejected using a
+ CDROM eject command.
+-.TP 0.5i
+
++.TP 0.5i
+ .B \-s
+ This option specifies that the drive should be ejected using
+ SCSI commands.
+@@ -145,7 +154,7 @@ also passes the \-n option to umount(1).
+ .TP 0.5i
+ .B \-m
+ This option allows eject to work with device drivers which automatically
+-mount removable media and therefore must be always mount()ed.
++mount removable media and therefore must be always mount(1)ed.
+ The option tells eject to not try to unmount the given device,
+ even if it is mounted according to /etc/mtab or /proc/mounts.
+
+diff --git a/eject.c b/eject.c
+index f7b2a2e..4175756 100644
+--- a/eject.c
++++ b/eject.c
+@@ -116,6 +116,7 @@ int d_option = 0;
+ int f_option = 0;
+ int h_option = 0;
+ int n_option = 0;
++int i_option = 0;
+ int q_option = 0;
+ int r_option = 0;
+ int s_option = 0;
+@@ -129,6 +130,7 @@ int m_option = 0;
+ int a_arg = 0;
+ int c_arg = 0;
+ int x_arg = 0;
++int i_arg = 0;
+ static char *programName; /* used in error messages */
+
+ /*
+@@ -163,6 +165,7 @@ static void usage()
+ " eject [-vn] -c <slot> [<name>] -- switch discs on a CD-ROM changer\n"
+ " eject [-vn] -t [<name>] -- close tray\n"
+ " eject [-vn] -T [<name>] -- toggle tray\n"
++" eject [-vn] -i on|off|1|0 [<name>] -- toggle manual eject protection on/off\n"
+ " eject [-vn] -x <speed> [<name>] -- set CD-ROM max speed\n"
+ " eject [-vn] -X [<name>] -- list CD-ROM available speeds\n"
+ "Options:\n"
+@@ -200,7 +203,7 @@ static void usage()
+ #endif
+ "\n"
+ " -n --noop -V --version\n"
+-" -p --proc -m --no-unmount -T --traytoggle\n"));
++" -p --proc -m --no-unmount -T --traytoggle -i --manualeject\n"));
+ #endif /* GETOPTLONG */
+ fprintf(stderr,_(
+ "Parameter <name> can be a device file or a mount point.\n"
+@@ -214,7 +217,7 @@ static void usage()
+ /* Handle command line options. */
+ static void parse_args(int argc, char **argv, char **device)
+ {
+- const char *flags = "a:c:x:dfhnqrstTXvVpm";
++ const char *flags = "a:c:x:i:dfhnqrstTXvVpm";
+ #ifdef GETOPTLONG
+ static struct option long_options[] =
+ {
+@@ -223,6 +226,7 @@ static void parse_args(int argc, char **argv, char **device)
+ {"default", no_argument, NULL, 'd'},
+ {"auto", required_argument, NULL, 'a'},
+ {"changerslot", required_argument, NULL, 'c'},
++ {"manualeject", required_argument, NULL, 'i'},
+ {"trayclose", no_argument, NULL, 't'},
+ {"traytoggle", no_argument, NULL, 'T'},
+ {"cdspeed", required_argument, NULL, 'x'},
+@@ -297,6 +301,21 @@ static void parse_args(int argc, char **argv, char **device)
+ usage();
+ exit(0);
+ break;
++ case 'i':
++ i_option = 1;
++ if (!strcmp(optarg, "0"))
++ i_arg = 0;
++ else if (!strcmp(optarg, "off"))
++ i_arg = 0;
++ else if (!strcmp(optarg, "1"))
++ i_arg = 1;
++ else if (!strcmp(optarg, "on"))
++ i_arg = 1;
++ else {
++ fprintf(stderr, _("%s: invalid argument to -i option\n"), programName);
++ exit(1);
++ }
++ break;
+ case 'm':
+ m_option = 1;
+ break;
+@@ -482,6 +501,30 @@ static char *FindDevice(const char *name)
+ }
+
+
++/*
++ * Stops CDROM from opening on manual eject pressing the button.
++ * This can be useful when you carry your laptop
++ * in your bag while it's on and no CD inserted in it's drive.
++ * Implemented as found in Documentation/ioctl/cdrom.txt
++ *
++ * TODO: Maybe we should check this also:
++ * EDRIVE_CANT_DO_THIS Door lock function not supported.
++ * EBUSY Attempt to unlock when multiple users
++ * have the drive open and not CAP_SYS_ADMIN
++ */
++static void ManualEject(int fd, int onOff)
++{
++ if (ioctl(fd, CDROM_LOCKDOOR, onOff) < 0) {
++ perror("ioctl on CDROM_LOCKDOOR");
++ } else {
++ if (onOff)
++ printf("CD-Drive may NOT be ejected with device button\n");
++ else
++ printf("CD-Drive may be ejected with device button\n");
++ }
++}
++
++
+ /* Set or clear auto-eject mode. */
+ static void AutoEject(int fd, int onOff)
+ {
+@@ -1233,6 +1276,13 @@ int main(int argc, char **argv)
+ exit(0);
+ }
+
++ /* handle -i option */
++ if (i_option) {
++ fd = OpenDevice(deviceName);
++ ManualEject(fd, i_arg);
++ exit(0);
++ }
++
+ /* handle -a option */
+ if (a_option) {
+ if (v_option) {
diff --git a/extra/eject/eject-2.1.5-openrw.patch b/extra/eject/eject-2.1.5-openrw.patch
new file mode 100644
index 000000000..092bfcfda
--- /dev/null
+++ b/extra/eject/eject-2.1.5-openrw.patch
@@ -0,0 +1,17 @@
+diff -pur eject-1/eject.c eject/eject.c
+--- eject-1/eject.c 2011-08-19 11:42:22.697388647 +0400
++++ eject/eject.c 2011-08-19 11:57:27.636724026 +0400
+@@ -911,7 +911,12 @@ static void Unmount(const char *fullName
+ /* Open a device file. */
+ static int OpenDevice(const char *fullName)
+ {
+- int fd = open(fullName, O_RDONLY|O_NONBLOCK);
++ int fd = open(fullName, O_RDWR|O_NONBLOCK);
++ if (fd == -1 && errno == EACCES) {
++ if (v_option)
++ printf(_("%s: unable to open `%s' for R/W, SCSI commands can be fail. Trying Read-Only\n"), programName, fullName);
++ fd = open(fullName, O_RDONLY|O_NONBLOCK);
++ }
+ if (fd == -1) {
+ fprintf(stderr, _("%s: unable to open `%s'\n"), programName, fullName);
+ exit(1);
diff --git a/extra/eject/eject-2.1.5-spaces.patch b/extra/eject/eject-2.1.5-spaces.patch
new file mode 100644
index 000000000..40834d902
--- /dev/null
+++ b/extra/eject/eject-2.1.5-spaces.patch
@@ -0,0 +1,62 @@
+diff --git a/eject.c b/eject.c
+index d67089c..f7b2a2e 100644
+--- a/eject.c
++++ b/eject.c
+@@ -370,6 +370,30 @@ static int FileExists(const char *name, const int try, int *found)
+
+
+ /*
++ * Linux mangles spaces in mount points by changing them to an octal string
++ * of '\040'. So lets scan the mount point and fix it up by replacing all
++ * occurrences off '\0##' with the ASCII value of 0##. Requires a writable
++ * string as input as we mangle in place. Some of this was taken from the
++ * util-linux package.
++ */
++#define octalify(a) ((a) & 7)
++#define tooctal(s) (64*octalify(s[1]) + 8*octalify(s[2]) + octalify(s[3]))
++#define isoctal(a) (((a) & ~7) == '0')
++static char *DeMangleMount(char *s)
++{
++ char *tmp = s;
++ while ((tmp = strchr(tmp, '\\')) != NULL) {
++ if (isoctal(tmp[1]) && isoctal(tmp[2]) && isoctal(tmp[3])) {
++ tmp[0] = tooctal(tmp);
++ memmove(tmp+1, tmp+4, strlen(tmp)-3);
++ }
++ ++tmp;
++ }
++ return s;
++}
++
++
++/*
+ * Given name, such as foo, see if any of the following exist:
+ *
+ * foo (if foo starts with '.' or '/')
+@@ -882,6 +906,8 @@ static int MountedDevice(const char *name, char **mountName, char **deviceName)
+ rc = sscanf(line, "%1023s %1023s", s1, s2);
+ if (rc >= 2) {
+ int mtabmaj, mtabmin;
++ DeMangleMount(s1);
++ DeMangleMount(s2);
+ GetMajorMinor(s1, &mtabmaj, &mtabmin);
+ if (((strcmp(s1, name) == 0) || (strcmp(s2, name) == 0)) ||
+ ((maj != -1) && (maj == mtabmaj) && (min == mtabmin))) {
+@@ -928,6 +954,8 @@ static int MountableDevice(const char *name, char **mountName, char **deviceName
+
+ while (fgets(line, sizeof(line), fp) != 0) {
+ rc = sscanf(line, "%1023s %1023s", s1, s2);
++ DeMangleMount(s1);
++ DeMangleMount(s2);
+ if (rc >= 2 && s1[0] != '#' && strcmp(s2, name) == 0) {
+ FCLOSE(fp);
+ *deviceName = strdup(s1);
+@@ -968,6 +996,8 @@ static void UnmountDevices(const char *pattern)
+ while (fgets(line, sizeof(line), fp) != 0) {
+ status = sscanf(line, "%1023s %1023s", s1, s2);
+ if (status >= 2) {
++ DeMangleMount(s1);
++ DeMangleMount(s2);
+ status = regexec(&preg, s1, 0, 0, 0);
+ if (status == 0) {
+ if (v_option)
diff --git a/extra/eject/eject-2.1.5-umount.patch b/extra/eject/eject-2.1.5-umount.patch
new file mode 100644
index 000000000..2c588a01d
--- /dev/null
+++ b/extra/eject/eject-2.1.5-umount.patch
@@ -0,0 +1,176 @@
+diff --git a/eject.c b/eject.c
+index 4175756..057d2ea 100644
+--- a/eject.c
++++ b/eject.c
+@@ -42,6 +42,7 @@
+ #include <string.h>
+ #include <fcntl.h>
+ #include <limits.h>
++#include <dirent.h>
+
+ #ifdef GETOPTLONG
+ #include <getopt.h>
+@@ -1133,6 +1134,145 @@ static char *MultiplePartitions(const char *name)
+ return 0;
+ }
+
++/*
++ * Find device name in /sys/block/. Returns NULL if not
++ * found. The returned pointer must be free()'d.
++ */
++static char* FindDeviceSysBlock(const char* deviceName)
++{
++ DIR *dir = opendir("/sys/block");
++ struct dirent *d;
++ const char *baseName = strrchr(deviceName, '/');
++ char *device;
++ int len;
++
++ baseName = baseName ? baseName + 1 : deviceName;
++ if (!dir) {
++ fprintf(stderr, _("%s: can not open directory /sys/block/"), programName);
++ return NULL;
++ }
++ while ((d = readdir(dir)) != NULL) {
++ if (d->d_type != DT_DIR && d->d_type != DT_LNK && d->d_type != DT_UNKNOWN)
++ continue;
++ len = strlen(d->d_name);
++ if (!strncmp(baseName, d->d_name, len)) {
++ if ((*(baseName+len) >= '0' &&
++ *(baseName+len) <= '9') ||
++ *(baseName+len) == '\0') {
++ device = strdup(d->d_name);
++ closedir(dir);
++ return device;
++ }
++ }
++ }
++ closedir(dir);
++ return NULL;
++}
++
++/*
++ * From given path gets a subsystem. Returns subsystem if any found
++ * otherwise returns NULL. Returned value must not be free()'d
++ */
++static char *GetSubSystem(const char *sysfspath)
++{
++ static char subsystem[PATH_MAX];
++ char link_subsystem[PATH_MAX];
++ struct stat buf;
++ char *pos;
++
++ snprintf(link_subsystem, sizeof(link_subsystem), "%s/subsystem", sysfspath);
++
++ if (lstat(link_subsystem, &buf) == -1)
++ return NULL;
++ if (!S_ISLNK(buf.st_mode))
++ return NULL;
++ if (readlink(link_subsystem, subsystem, sizeof(subsystem)) == -1)
++ return NULL;
++ if ((pos = strrchr(subsystem, '/')) == NULL)
++ return NULL;
++ strncpy(subsystem, pos+1, sizeof(subsystem));
++
++ return subsystem;
++}
++
++/*
++ * Check content of /sys/block/<dev>/removable. Returns 1 if the file
++ * contains '1' otherwise returns 0.
++ */
++static int CheckRemovable(const char* deviceName)
++{
++ FILE *fp;
++ int removable = 0;
++ char *device;
++ char path[PATH_MAX];
++
++ if ((device = FindDeviceSysBlock(deviceName)) == NULL) {
++ fprintf(stderr,
++ _("%s: did not find a device %s in /sys/block/\n"),
++ programName, deviceName);
++ exit(1);
++ }
++ snprintf(path, sizeof(path), "/sys/block/%s/removable", device);
++ free(device);
++ if((fp = fopen(path, "r")) == NULL)
++ return removable;
++ if (fgetc(fp) == '1')
++ removable = 1;
++
++ fclose(fp);
++ return removable;
++}
++
++/* Check if a device is on hotpluggable subsystem. Returns 1 if is
++ * otherwise returns 0.
++ */
++static int CheckHotpluggable(const char* deviceName)
++{
++ int hotpluggable = 0;
++ char *device;
++ char path[PATH_MAX];
++ char *device_chain;
++ struct stat buf;
++ char *subsystem;
++ char *pos;
++
++ if ((device = FindDeviceSysBlock(deviceName)) == NULL) {
++ fprintf(stderr, _("%s: did not find a device %s in /sys/block/\n"),
++ programName, deviceName);
++ exit(1);
++ }
++ snprintf(path, sizeof(path), "/sys/block/%s/device", device);
++ free(device);
++
++ if (lstat(path, &buf) == -1)
++ return hotpluggable;
++ if (!S_ISLNK(buf.st_mode))
++ return hotpluggable;
++ if ((device_chain = SymLink(path)) == NULL)
++ return hotpluggable;
++ while ( strncmp(device_chain, "", sizeof(device_chain) != 0)) {
++ subsystem = GetSubSystem(device_chain);
++ if (subsystem) {
++ /* as hotpluggable we assume devices on these buses */
++ if (strncmp("usb", subsystem, sizeof("usb")) == 0 ||
++ strncmp("ieee1394", subsystem, sizeof("ieee1394")) == 0 ||
++ strncmp("pcmcia", subsystem, sizeof("pcmcia")) == 0 ||
++ strncmp("mmc", subsystem, sizeof("mmc")) == 0 ||
++ strncmp("ccw", subsystem, sizeof("ccw")) == 0) {
++ hotpluggable = 1;
++ break;
++ }
++ }
++ /* remove one member from devicechain */
++ pos = strrchr(device_chain, '/');
++ if (pos)
++ pos[0] = '\0';
++ else
++ device_chain[0] = '\0';
++ }
++
++ return hotpluggable;
++}
+
+ /* handle -x option */
+ static void HandleXOption(char *deviceName)
+@@ -1276,6 +1416,17 @@ int main(int argc, char **argv)
+ exit(0);
+ }
+
++ /* Check if device has removable flag*/
++ if (v_option)
++ printf(_("%s: checking if device \"%s\" has a removable or hotpluggable flag\n"),
++ programName, deviceName);
++ if (!CheckRemovable(deviceName) && !CheckHotpluggable(deviceName))
++ {
++ fprintf(stderr, _("%s: device \"%s\" doesn't have a removable or hotpluggable flag\n"),
++ programName, deviceName);
++ exit(1);
++ }
++
+ /* handle -i option */
+ if (i_option) {
+ fd = OpenDevice(deviceName);
diff --git a/extra/eject/eject-2.1.5-unlock.patch b/extra/eject/eject-2.1.5-unlock.patch
new file mode 100644
index 000000000..d554f9bdf
--- /dev/null
+++ b/extra/eject/eject-2.1.5-unlock.patch
@@ -0,0 +1,59 @@
+diff -pur eject-orig/eject.c eject/eject.c
+--- eject-orig/eject.c 2006-02-11 04:54:38.000000000 +0300
++++ eject/eject.c 2011-08-11 13:12:16.568112725 +0400
+@@ -527,6 +527,25 @@ static void CloseTray(int fd)
+ }
+
+ /*
++ * Unlock tray using CDROM_LOCKDOOR ioctl.
++ * New kernels doesn't automatically unlock tray before ejecting,
++ * and the new udev automatically locks it.
++ */
++static int UnlockCdrom(int fd)
++{
++ int status = -1;
++
++ if (v_option)
++ printf(_("%s: unlocking tray using CDROM_LOCKDOOR ioctl\n"), programName);
++
++ status = ioctl(fd, CDROM_LOCKDOOR, 0);
++ if (v_option && status != 0)
++ printf(_("%s: CDROM_LOCKDOOR ioctl failed\n"), programName);
++
++ return (status == 0);
++}
++
++/*
+ * Toggle tray.
+ *
+ * Written by Benjamin Schwenk <benjaminschwenk@yahoo.de> and
+@@ -543,6 +562,8 @@ static void ToggleTray(int fd)
+
+ #ifdef CDROMCLOSETRAY
+
++ UnlockCdrom(fd);
++
+ /* Try to open the CDROM tray and measure the time therefor
+ * needed. In my experience the function needs less than 0.05
+ * seconds if the tray was already open, and at least 1.5 seconds
+@@ -566,7 +587,11 @@ static void ToggleTray(int fd)
+ * was already open. In this case, close it now. Else the tray was
+ * closed before. This would mean that we are done. */
+ if (time_elapsed < TRAY_WAS_ALREADY_OPEN_USECS)
++ {
++ if (v_option)
++ printf(_("%s: CD-ROM tray was already open, closing it\n"), programName);
+ CloseTray(fd);
++ }
+
+ #else
+ fprintf(stderr, _("%s: CD-ROM tray toggle command not supported by this kernel\n"), programName);
+@@ -681,7 +706,7 @@ static void ListSpeedCdrom(const char *f
+ static int EjectCdrom(int fd)
+ {
+ int status = -1;
+-
++ UnlockCdrom(fd);
+ #if defined(CDROMEJECT)
+ status = ioctl(fd, CDROMEJECT);
+ #elif defined(CDIOCEJECT)
diff --git a/extra/eject/eject-timeout.patch b/extra/eject/eject-timeout.patch
new file mode 100644
index 000000000..a542d2c2f
--- /dev/null
+++ b/extra/eject/eject-timeout.patch
@@ -0,0 +1,11 @@
+--- eject/eject.c.orig 2006-08-07 16:35:15.000000000 +0200
++++ eject/eject.c 2006-08-07 16:35:54.000000000 +0200
+@@ -723,7 +723,7 @@
+ io_hdr.dxfer_len = 0;
+ io_hdr.dxferp = inqBuff;
+ io_hdr.sbp = sense_buffer;
+- io_hdr.timeout = 2000;
++ io_hdr.timeout = 10000;
+
+ io_hdr.cmdp = allowRmBlk;
+ status = ioctl(fd, SG_IO, (void *)&io_hdr);
diff --git a/extra/emacs/PKGBUILD b/extra/emacs/PKGBUILD
index c411dd4fc..df9d68480 100644
--- a/extra/emacs/PKGBUILD
+++ b/extra/emacs/PKGBUILD
@@ -1,50 +1,50 @@
-# $Id: PKGBUILD 134523 2011-08-05 07:55:30Z juergen $
+# $Id: PKGBUILD 135954 2011-08-21 02:30:32Z eric $
# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
# Contributor: Renchi Raju <renchi@green.tam.uiuc.edu>
pkgname=emacs
-pkgver=23.3a
-pkgrel=1
-pkgdesc="The Emacs Editor"
-arch=(i686 x86_64)
+_majorver=23.3
+_minorver=a
+# We want something like "23.3.a" so pacman version comparison works, but
+# upstream uses "23.3a", which is a bit silly and interpreted as alpha.
+pkgver=$_majorver.$_minorver
+_realver=$_majorver$_minorver
+pkgrel=2
+pkgdesc="The extensible, customizable, self-documenting real-time display editor"
+arch=('i686' 'x86_64')
url="http://www.gnu.org/software/emacs/emacs.html"
-license=('GPL')
-options=(docs)
-replaces=(cedet)
-depends=('dbus-core' 'librsvg' 'gpm' 'giflib' 'libtiff' 'libxpm' 'libjpeg' 'gtk2' 'texinfo' 'hicolor-icon-theme' 'gconf')
-source=(ftp://ftp.gnu.org/gnu/emacs/$pkgname-$pkgver.tar.gz emacs.desktop)
+license=('GPL3')
+depends=('librsvg' 'gpm' 'giflib' 'libxpm' 'gtk2' 'hicolor-icon-theme' 'gconf' 'desktop-file-utils')
+install=emacs.install
+source=(ftp://ftp.gnu.org/gnu/emacs/$pkgname-$_realver.tar.gz emacs.desktop)
md5sums=('20aef9ea5b5bf8050d39f8b1e96a1c04'
'8af038d2ba4561271e935bb444ceb4e3')
-install=emacs.install
build() {
- cd $startdir/src/$pkgname-${pkgver%[a-z]}
- mandir=/usr/share/man
-
- # gcc 4.5 Workaround: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43904
- CFLAGS="${CFLAGS} -fno-optimize-sibling-calls"\
- ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
- --localstatedir=/var --mandir=${mandir} --without-sound --with-x-toolkit=gtk
+ cd "$srcdir"/$pkgname-$_majorver
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
+ --localstatedir=/var --without-sound --with-x-toolkit=gtk --with-xft
make
- make DESTDIR=$startdir/pkg install
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$_majorver
+ make DESTDIR="$pkgdir" install
# remove conflict with ctags package
- mv $startdir/pkg/usr/bin/{ctags,ctags.emacs}
- mv $startdir/pkg/usr/bin/{etags,etags.emacs}
- mv $startdir/pkg${mandir}/man1/{etags.1,etags.emacs.1}
- mv $startdir/pkg${mandir}/man1/{ctags.1,ctags.emacs.1}
+ mv "$pkgdir"/usr/bin/{ctags,ctags.emacs}
+ mv "$pkgdir"/usr/share/man/man1/{ctags.1,ctags.emacs.1}
# fix all the 777 perms on directories
- find $startdir/pkg/usr/share/emacs/${pkgver%[a-z]} -type d -exec chmod 755 {} \;
+ find "$pkgdir"/usr/share/emacs/$_majorver -type d -exec chmod 755 {} \;
# fix user/root permissions on usr/share files
- find $startdir/pkg/usr/share/emacs/${pkgver%[a-z]} -exec chown root.root {} \;
+ find "$pkgdir"/usr/share/emacs/$_majorver -exec chown root:root {} \;
# fix perms on /var/games
- chmod 775 ${startdir}/pkg/var/games
- chmod 775 ${startdir}/pkg/var/games/emacs
- chmod 664 ${startdir}/pkg/var/games/emacs/*
- chown -R root:50 ${startdir}/pkg/var/games
-
+ chmod 775 "$pkgdir"/var/games
+ chmod 775 "$pkgdir"/var/games/emacs
+ chmod 664 "$pkgdir"/var/games/emacs/*
+ chown -R root:games "$pkgdir"/var/games
# fix FS#9253
- mkdir -p $startdir/pkg/usr/share/pixmaps ${startdir}/pkg/usr/share/applications
- install -D -m644 ${startdir}/src/${pkgname}.desktop ${startdir}/pkg/usr/share/applications
- ln -s ../emacs/${pkgver%[a-z]}/etc/images/icons/hicolor/48x48/apps/emacs.png $startdir/pkg/usr/share/pixmaps/emacs-icon.png
+ mkdir -p "$pkgdir"/usr/share/pixmaps "$pkgdir"/usr/share/applications
+ install -D -m644 "$srcdir"/$pkgname.desktop "$pkgdir"/usr/share/applications
+ ln -s ../emacs/$_majorver/etc/images/icons/hicolor/48x48/apps/emacs.png "$pkgdir"/usr/share/pixmaps/emacs-icon.png
}
diff --git a/extra/emacs/emacs.install b/extra/emacs/emacs.install
index 80bcb20bf..d84f1de14 100644
--- a/extra/emacs/emacs.install
+++ b/extra/emacs/emacs.install
@@ -1,15 +1,17 @@
-ICON_PATH=/usr/share/icons/hicolor
-INFO_DIR=/usr/share/info
+ICON_PATH=usr/share/icons/hicolor
+INFO_DIR=usr/share/info
INFO_FILES=(ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse
-ediff efaq eintr elisp emacs emacs-mime epa erc eshell eudc flymake
+ede ediff edt efaq eieio eintr elisp emacs emacs-mime epa erc eshell eudc flymake
forms gnus idlwave info mairix-el message mh-e newsticker nxml-mode
-org pcl-cvs pgg rcirc reftex remember sasl sc ses sieve smtpmail
+org pcl-cvs pgg rcirc reftex remember sasl sc semantic ses sieve smtpmail
speedbar tramp url vip viper widget woman)
post_install() {
gtk-update-icon-cache -q -t -f ${ICON_PATH}
+ update-desktop-database -q
+ [[ -x usr/bin/install-info ]] || return 0
for f in ${INFO_FILES[@]}; do
install-info ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
done
@@ -21,7 +23,9 @@ post_upgrade() {
pre_remove() {
gtk-update-icon-cache -q -t -f ${ICON_PATH}
+ update-desktop-database -q
+ [[ -x usr/bin/install-info ]] || return 0
for f in ${INFO_FILES[@]}; do
install-info --delete ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
done
diff --git a/extra/i8kutils/PKGBUILD b/extra/i8kutils/PKGBUILD
index 51329a77f..6c932a3a7 100644
--- a/extra/i8kutils/PKGBUILD
+++ b/extra/i8kutils/PKGBUILD
@@ -1,6 +1,6 @@
-# $Id: PKGBUILD 66619 2010-02-01 02:26:09Z giovanni $
-# Contributor: Eric Johnson <eric@coding-zone.com>
+# $Id: PKGBUILD 135896 2011-08-20 04:45:48Z eric $
# Maintainer: Thayer Williams <thayer@archlinux.org>
+# Contributor: Eric Johnson <eric@coding-zone.com>
pkgname=i8kutils
pkgver=1.33
@@ -10,7 +10,7 @@ url="http://people.debian.org/~dz/i8k/"
license=('GPL2')
arch=('i686' 'x86_64')
depends=('glibc')
-source=(http://ftp.archlinux.org/other/i8kutils/$pkgname\_$pkgver.tar.gz)
+source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}_${pkgver}.tar.gz)
md5sums=('1ab077b301dbb0f4be8ef52eb3b97628')
build() {
diff --git a/extra/pidgin/PKGBUILD b/extra/pidgin/PKGBUILD
index 8f6b5e32e..59c3a4f31 100644
--- a/extra/pidgin/PKGBUILD
+++ b/extra/pidgin/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 135431 2011-08-13 11:30:30Z foutrelis $
+# $Id: PKGBUILD 135966 2011-08-21 02:57:32Z foutrelis $
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Ionut Biru <ibiru@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
@@ -6,8 +6,8 @@
# Contributor: Lucien Immink <l.immink@student.fnt.hvu.nl>
pkgname=('pidgin' 'libpurple' 'finch')
-pkgver=2.9.0
-pkgrel=3
+pkgver=2.10.0
+pkgrel=1
arch=('i686' 'x86_64')
url="http://pidgin.im/"
license=('GPL')
@@ -17,11 +17,9 @@ makedepends=('startup-notification' 'gtkspell' 'libxss' 'nss' 'libsasl' 'libsm'
'networkmanager')
options=('!libtool')
source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2
- nm09-more.patch
- ticket-14351-multiple-display-of-room-members.patch)
-md5sums=('2cd285c7a40f93b7a51bfe733971d3a6'
- 'a673659d86c7a65aa710f7c8c7feda82'
- '47f16f838b741cfdeda18d7b08a7b816')
+ nm09-more.patch)
+md5sums=('e1453c9093c4f32beec19abd14069a3f'
+ 'a673659d86c7a65aa710f7c8c7feda82')
build() {
cd "$srcdir/$pkgname-$pkgver"
@@ -30,10 +28,6 @@ build() {
# http://developer.pidgin.im/ticket/13859
patch -Np1 -i "$srcdir/nm09-more.patch"
- # Fix upstream issue #14351: multiple display of room members
- # http://developer.pidgin.im/ticket/14351
- patch -Np0 -i "$srcdir/ticket-14351-multiple-display-of-room-members.patch"
-
# Use Python 2
sed -i 's/env python$/\02/' */plugins/*.py \
libpurple/purple-{remote,notifications-example,url-handler}
diff --git a/extra/xfdesktop/PKGBUILD b/extra/xfdesktop/PKGBUILD
index 08901285f..b0a502474 100644
--- a/extra/xfdesktop/PKGBUILD
+++ b/extra/xfdesktop/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 125789 2011-05-29 16:59:08Z andyrtr $
+# $Id: PKGBUILD 135949 2011-08-20 21:30:39Z eric $
# Maintainer: AndyRTR <andyrtr@archlinux.org>
# Contributor: tobias <tobias funnychar archlinux.org>
pkgname=xfdesktop
pkgver=4.8.2
-pkgrel=2
+pkgrel=3
pkgdesc="A desktop manager for Xfce"
arch=('i686' 'x86_64')
license=('GPL2')
@@ -17,11 +17,14 @@ conflicts=('xfce4-menueditor')
replaces=('xfce4-menueditor')
options=('!libtool')
install=xfdesktop.install
-source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('ed25d59f478afda552d121e96657d16f')
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2
+ fix-desktop-drag-and-drop.patch)
+md5sums=('ed25d59f478afda552d121e96657d16f'
+ '86d464bcd8ffae9f048454f49603658a')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i ../fix-desktop-drag-and-drop.patch
./configure --prefix=/usr \
--sysconfdir=/etc \
--libexecdir=/usr/lib \
diff --git a/extra/xfdesktop/fix-desktop-drag-and-drop.patch b/extra/xfdesktop/fix-desktop-drag-and-drop.patch
new file mode 100644
index 000000000..8c0c4bcc8
--- /dev/null
+++ b/extra/xfdesktop/fix-desktop-drag-and-drop.patch
@@ -0,0 +1,57 @@
+diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c
+index 2711646..d3ca2eb 100644
+--- a/src/xfdesktop-file-icon-manager.c
++++ b/src/xfdesktop-file-icon-manager.c
+@@ -2794,7 +2794,7 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager
+ GFile *tfile = NULL;
+ gboolean copy_only = TRUE, drop_ok = FALSE;
+ GList *file_list;
+-
++
+ if(info == TARGET_XDND_DIRECT_SAVE0) {
+ /* we don't suppose XdndDirectSave stage 3, result F, i.e., the app
+ * has to save the data itself given the filename we provided in
+@@ -2816,7 +2816,7 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager
+ /* data is "URL\nTITLE" */
+ GFile *source_file = NULL;
+ gchar *exo_desktop_item_edit = g_find_program_in_path("exo-desktop-item-edit");
+-
++
+ if(drop_icon) {
+ GFileInfo *finfo = xfdesktop_file_icon_peek_file_info(XFDESKTOP_FILE_ICON(drop_icon));
+ if(g_file_info_get_file_type(finfo) == G_FILE_TYPE_DIRECTORY)
+@@ -2911,8 +2911,15 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager
+ gchar *dest_basename = g_file_get_basename(l->data);
+
+ if(dest_basename && *dest_basename != '\0') {
+- GFile *dest_file = g_file_get_child(base_dest_file, dest_basename);
+- dest_file_list = g_list_prepend(dest_file_list, dest_file);
++ /* If we copy a file, we need to use the new absolute filename
++ * as the destination. If we move, we need to use the destination
++ * directory. */
++ if(copy_only) {
++ GFile *dest_file = g_file_get_child(base_dest_file, dest_basename);
++ dest_file_list = g_list_prepend(dest_file_list, dest_file);
++ } else {
++ dest_file_list = g_list_prepend(dest_file_list, base_dest_file);
++ }
+ }
+
+ g_free(dest_basename);
+@@ -2923,10 +2930,10 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager
+ if(dest_file_list) {
+ dest_file_list = g_list_reverse(dest_file_list);
+
+- drop_ok =xfdesktop_file_utils_transfer_files(context->action,
+- file_list,
+- dest_file_list,
+- fmanager->priv->gscreen);
++ drop_ok = xfdesktop_file_utils_transfer_files(context->action,
++ file_list,
++ dest_file_list,
++ fmanager->priv->gscreen);
+ }
+
+ xfdesktop_file_utils_file_list_free(dest_file_list);
+
+
diff --git a/extra/zile/PKGBUILD b/extra/zile/PKGBUILD
index 8ada94ea7..e1457b41b 100644
--- a/extra/zile/PKGBUILD
+++ b/extra/zile/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 125598 2011-05-26 20:47:05Z kevin $
+# $Id: PKGBUILD 135981 2011-08-21 03:51:34Z eric $
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
# Maintainer: Kevin Piche <kevin@archlinux.org>
@@ -9,20 +9,19 @@ pkgdesc="A small, fast, and powerful Emacs clone"
arch=(i686 x86_64)
url="http://www.gnu.org/software/zile/"
# Lua is not required, the author uses it to generate some source files.
-makedepends=('help2man')
depends=('ncurses')
license=('GPL')
source=(http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
md5sums=('fe77d801ba69e0fb9b4914a04b9ff506')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
+ cd "${srcdir}"/${pkgname}-${pkgver}
./configure --prefix=/usr
make
}
package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR=${pkgdir} install
+ cd "${srcdir}"/${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install
}