diff options
Diffstat (limited to 'extra')
-rw-r--r-- | extra/eject/PKGBUILD | 43 | ||||
-rw-r--r-- | extra/eject/eject-2.1.1-verbose.patch | 15 | ||||
-rw-r--r-- | extra/eject/eject-2.1.5-lock.patch | 171 | ||||
-rw-r--r-- | extra/eject/eject-2.1.5-openrw.patch | 17 | ||||
-rw-r--r-- | extra/eject/eject-2.1.5-spaces.patch | 62 | ||||
-rw-r--r-- | extra/eject/eject-2.1.5-umount.patch | 176 | ||||
-rw-r--r-- | extra/eject/eject-2.1.5-unlock.patch | 59 | ||||
-rw-r--r-- | extra/eject/eject-timeout.patch | 11 | ||||
-rw-r--r-- | extra/emacs/PKGBUILD | 66 | ||||
-rw-r--r-- | extra/emacs/emacs.install | 12 | ||||
-rw-r--r-- | extra/i8kutils/PKGBUILD | 6 | ||||
-rw-r--r-- | extra/pidgin/PKGBUILD | 18 | ||||
-rw-r--r-- | extra/xfdesktop/PKGBUILD | 11 | ||||
-rw-r--r-- | extra/xfdesktop/fix-desktop-drag-and-drop.patch | 57 | ||||
-rw-r--r-- | extra/zile/PKGBUILD | 9 |
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 } |