From fb77cab84379b7c286ad5f336d850d3b6db3e833 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Wed, 24 Jul 2002 21:58:13 +0000 Subject: rename stuff.xs.pm to stuff.xs.pl (since it's a prog, not a module) (it helps for not having stuff.xs.pm in PMS) --- perl-install/c/Makefile | 2 +- perl-install/c/stuff.xs.pl | 579 +++++++++++++++++++++++++++++++++++++++++++++ perl-install/c/stuff.xs.pm | 579 --------------------------------------------- 3 files changed, 580 insertions(+), 580 deletions(-) create mode 100644 perl-install/c/stuff.xs.pl delete mode 100644 perl-install/c/stuff.xs.pm diff --git a/perl-install/c/Makefile b/perl-install/c/Makefile index a494da760..a553ca2f6 100644 --- a/perl-install/c/Makefile +++ b/perl-install/c/Makefile @@ -12,7 +12,7 @@ clean: test ! -e Makefile_c || $(MAKE) -f Makefile_c clean rm -f *~ *.o stuff.xs pcmcia_probe.c -stuff.xs: %: %.pm +stuff.xs: %: %.pl rm -f $@ C_RPM=$(C_RPM) C_DRAKX=$(C_DRAKX) perl $< > $@ chmod a-w $@ diff --git a/perl-install/c/stuff.xs.pl b/perl-install/c/stuff.xs.pl new file mode 100644 index 000000000..2253c419e --- /dev/null +++ b/perl-install/c/stuff.xs.pl @@ -0,0 +1,579 @@ +use Config; + +print ' +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +/* workaround for glibc and kernel header files not in sync */ +#define dev_t dev_t + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* for is_ext3 */ +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#undef max_colors + +#define SECTORSIZE 512 + +char *prom_getopt(); +void prom_setopt(); +char *prom_getproperty(); +char *disk2PromPath(); +char *promRootName(); + +'; + +$ENV{C_DRAKX} && $Config{archname} =~ /i.86/ and print ' +char *pcmcia_probe(void); +'; + +$ENV{C_RPM} and print ' +#undef Fflush +#undef Mkdir +#undef Stat +#include +#include + +void rpmError_callback_empty(void) {} + +int rpmError_callback_data; +void rpmError_callback(void) { + if (rpmErrorCode() != RPMERR_UNLINK && rpmErrorCode() != RPMERR_RMDIR) { + write(rpmError_callback_data, rpmErrorString(), strlen(rpmErrorString())); + } +} + +'; + +$ENV{C_DRAKX} and print ' + +#include + +void initIMPS2() { + unsigned char imps2_s1[] = { 243, 200, 243, 100, 243, 80, }; + unsigned char imps2_s2[] = { 246, 230, 244, 243, 100, 232, 3, }; + + int fd = open("/dev/cdrom", O_WRONLY); + if (fd < 0) return; + + write (fd, imps2_s1, sizeof (imps2_s1)); + usleep (30000); + write (fd, imps2_s2, sizeof (imps2_s2)); + usleep (30000); + tcflush (fd, TCIFLUSH); + tcdrain(fd); +} + +void log_message(const char * s, ...) {} + +'; + +print ' + +MODULE = c::stuff PACKAGE = c::stuff + +'; + +$ENV{C_DRAKX} && $Config{archname} =~ /i.86/ and print ' +char * +pcmcia_probe() +'; + +$ENV{C_DRAKX} and print ' + +int +Xtest(display) + char *display + CODE: + int pid; + if ((pid = fork()) == 0) { + Display *d = XOpenDisplay(display); + if (d) { + XSetCloseDownMode(d, RetainPermanent); + XCloseDisplay(d); + } + _exit(d != NULL); + } + waitpid(pid, &RETVAL, 0); + OUTPUT: + RETVAL + +void +setMouseLive(display, type, emulate3buttons) + char *display + int type + int emulate3buttons + CODE: + { + XF86MiscMouseSettings mseinfo; + Display *d = XOpenDisplay(display); + if (d) { + if (XF86MiscGetMouseSettings(d, &mseinfo) == True) { + mseinfo.type = type; + mseinfo.flags |= MF_REOPEN; + mseinfo.emulate3buttons = emulate3buttons; + XF86MiscSetMouseSettings(d, &mseinfo); + XFlush(d); + if (type == MTYPE_IMPS2) initIMPS2(); + } + } + } +'; + +print ' + +int +add_partition(hd, start_sector, size_sector, part_number) + int hd + unsigned long start_sector + unsigned long size_sector + int part_number + CODE: + { + long long start = start_sector * 512; + long long size = size_sector * 512; + struct blkpg_partition p = { start, size, part_number, "", "" }; + struct blkpg_ioctl_arg s = { BLKPG_ADD_PARTITION, 0, sizeof(struct blkpg_partition), (void *) &p }; + RETVAL = ioctl(hd, BLKPG, &s) == 0; + } + OUTPUT: + RETVAL + +int +is_secure_file(filename) + char * filename + CODE: + { + int fd; + unlink(filename); /* in case it exists and we manage to remove it */ + RETVAL = (fd = open(filename, O_RDWR | O_CREAT | O_EXCL, 0600)) != -1; + if (RETVAL) close(fd); + } + OUTPUT: + RETVAL + +int +is_ext3(device_name) + char * device_name + CODE: + { + ext2_filsys fs; + int retval = ext2fs_open (device_name, 0, 0, 0, unix_io_manager, &fs); + if (retval) { + RETVAL = 0; + } else { + RETVAL = fs->super->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL; + ext2fs_close(fs); + } + } + OUTPUT: + RETVAL + +void +setlocale() + CODE: + setlocale(LC_ALL, ""); + setlocale(LC_NUMERIC, "C"); /* otherwise eval "1.5" returns 1 in fr_FR for example */ + +char * +bindtextdomain(domainname, dirname) + char * domainname + char * dirname + +char * +dgettext(domainname, msgid) + char * domainname + char * msgid + +int +KTYP(x) + int x + CODE: + RETVAL = KTYP(x); + OUTPUT: + RETVAL + +int +lseek_sector(fd, sector, offset) + int fd + long sector + long offset + CODE: + RETVAL = lseek64(fd, (off64_t) sector * SECTORSIZE + offset, SEEK_SET) >= 0; + OUTPUT: + RETVAL + +int +isBurner(fd) + int fd + CODE: + RETVAL = ioctl(fd, CDROM_GET_CAPABILITY) & CDC_CD_RW; + OUTPUT: + RETVAL + +int +isDvdDrive(fd) + int fd + CODE: + RETVAL = ioctl(fd, CDROM_GET_CAPABILITY) & CDC_DVD; + OUTPUT: + RETVAL + +char * +floppy_info(name) + char * name + CODE: + int fd = open(name, O_RDONLY | O_NONBLOCK); + RETVAL = NULL; + if (fd != -1) { + char drivtyp[17]; + ioctl(fd, FDGETDRVTYP, (void *)drivtyp); + RETVAL = drivtyp; + close(fd); + } + OUTPUT: + RETVAL + +unsigned int +total_sectors(fd) + int fd + CODE: + { + long s; + RETVAL = ioctl(fd, BLKGETSIZE, &s) == 0 ? s : 0; + } + OUTPUT: + RETVAL + +void +unlimit_core() + CODE: + { + struct rlimit rlim = { RLIM_INFINITY, RLIM_INFINITY }; + setrlimit(RLIMIT_CORE, &rlim); + } + +int +getlimit_core() + CODE: + { + struct rlimit rlim; + getrlimit(RLIMIT_CORE, &rlim); + RETVAL = rlim.rlim_cur; + } + OUTPUT: + RETVAL + +void +openlog(ident) + char *ident + CODE: + openlog(ident, 0, 0); + +void +closelog() + +void +syslog(priority, mesg) + int priority + char *mesg + CODE: + syslog(priority, mesg); + +void +setsid() + +void +_exit(status) + int status + +int +detectSMP() + +void +pci_probe(probe_type) + int probe_type + PPCODE: + struct pciusb_entries entries = pci_probe(probe_type); + char buf[2048]; + int i; + + EXTEND(SP, entries.nb); + for (i = 0; i < entries.nb; i++) { + struct pciusb_entry e = entries.entries[i]; + snprintf(buf, sizeof(buf), "%04x\t%04x\t%04x\t%04x\t%d\t%d\t%d\t%s\t%s\t%s", + e.vendor, e.device, e.subvendor, e.subdevice, e.pci_bus, e.pci_device, e.pci_function, + pci_class2text(e.class_), e.module ? e.module : "unknown", e.text); + PUSHs(sv_2mortal(newSVpv(buf, 0))); + } + pciusb_free(&entries); + +void +usb_probe() + PPCODE: + struct pciusb_entries entries = usb_probe(); + char buf[2048]; + int i; + + EXTEND(SP, entries.nb); + for (i = 0; i < entries.nb; i++) { + struct pciusb_entry e = entries.entries[i]; + snprintf(buf, sizeof(buf), "%04x\t%04x\t%s\t%s\t%s", + e.vendor, e.device, usb_class2text(e.class_), e.module ? e.module : "unknown", e.text); + PUSHs(sv_2mortal(newSVpv(buf, 0))); + } + pciusb_free(&entries); + +unsigned int +getpagesize() + +int +hasNetDevice(device) + char * device + CODE: + struct ifreq req; + int s = socket(AF_INET, SOCK_DGRAM, 0); + if (s == -1) { RETVAL = 0; return; } + + strcpy(req.ifr_name, device); + + RETVAL = ioctl(s, SIOCGIFFLAGS, &req) == 0; + close(s); + OUTPUT: + RETVAL + +int +addDefaultRoute(gateway) + char *gateway + CODE: + struct rtentry route; + struct sockaddr_in addr; + int s = socket(AF_INET, SOCK_DGRAM, 0); + if (s == -1) { RETVAL = 0; return; } + + memset(&route, 0, sizeof(route)); + + addr.sin_family = AF_INET; + addr.sin_port = 0; + inet_aton(gateway, &addr.sin_addr); + memcpy(&route.rt_gateway, &addr, sizeof(addr)); + + addr.sin_addr.s_addr = INADDR_ANY; + memcpy(&route.rt_dst, &addr, sizeof(addr)); + memcpy(&route.rt_genmask, &addr, sizeof(addr)); + + route.rt_flags = RTF_UP | RTF_GATEWAY; + route.rt_metric = 0; + + RETVAL = !ioctl(s, SIOCADDRT, &route); + OUTPUT: + RETVAL + +char * +kernel_version() + CODE: + struct utsname u; + if (uname(&u) == 0) RETVAL = u.release; else RETVAL = NULL; + OUTPUT: + RETVAL + +int +prom_open() + +void +prom_close() + +int +prom_getsibling(node) + int node + +int +prom_getchild(node) + int node + +void +prom_getopt(key) + char *key + PPCODE: + int lenp = 0; + char *value = NULL; + value = prom_getopt(key, &lenp); + EXTEND(sp, 1); + if (value != NULL) { + PUSHs(sv_2mortal(newSVpv(value, 0))); + } else { + PUSHs(&PL_sv_undef); + } + +void +prom_setopt(key, value) + char *key + char *value + +void +prom_getproperty(key) + char *key + PPCODE: + int lenp = 0; + char *value = NULL; + value = prom_getproperty(key, &lenp); + EXTEND(sp, 1); + if (value != NULL) { + PUSHs(sv_2mortal(newSVpv(value, lenp))); + } else { + PUSHs(&PL_sv_undef); + } + +void +prom_getstring(key) + char *key + PPCODE: + int lenp = 0; + char *value = NULL; + value = prom_getproperty(key, &lenp); + EXTEND(sp, 1); + if (value != NULL) { + PUSHs(sv_2mortal(newSVpv(value, 0))); + } else { + PUSHs(&PL_sv_undef); + } + +int +prom_getbool(key) + char *key + +void +initSilo() + +char * +disk2PromPath(disk) + unsigned char *disk + +int +hasAliases() + +char * +promRootName() + +void +setPromVars(linuxAlias, bootDevice) + char *linuxAlias + char *bootDevice + +char * +iconv(s, from_charset, to_charset) + char *s + char *from_charset + char *to_charset + CODE: + iconv_t cd = iconv_open(to_charset, from_charset); + RETVAL = s; + if (cd != (iconv_t) (-1)) { + size_t s_len = strlen(RETVAL); + char *buf = alloca(3 * s_len + 10); /* 10 for safety, it should not be needed */ + { + char *ptr = buf; + size_t ptr_len = 3 * s_len + 10; + if ((iconv(cd, &s, &s_len, &ptr, &ptr_len)) != (size_t) (-1)) { + *ptr = 0; + RETVAL = buf; + } + } + iconv_close(cd); + } + OUTPUT: + RETVAL + +char * +standard_charset() + CODE: + RETVAL = nl_langinfo(CODESET); + OUTPUT: + RETVAL + +'; + +$ENV{C_RPM} and print ' +char * +rpmErrorString() + +void +rpmSetVeryVerbose() + CODE: + rpmSetVerbosity(RPMMESS_DEBUG); + +void +rpmErrorSetCallback(fd) + int fd + CODE: + rpmError_callback_data = fd; + rpmErrorSetCallback(rpmError_callback); + +int +rpmvercmp(char *a, char *b); +'; + +@macros = ( + [ qw(int S_IFCHR S_IFBLK S_IFIFO KDSKBENT KT_SPEC NR_KEYS MAX_NR_KEYMAPS BLKRRPART TIOCSCTTY + HDIO_GETGEO BLKGETSIZE LOOP_GET_STATUS + MS_MGC_VAL MS_RDONLY O_NONBLOCK F_SETFL F_GETFL O_CREAT SECTORSIZE WNOHANG + VT_ACTIVATE VT_WAITACTIVE VT_GETSTATE CDROM_LOCKDOOR CDROMEJECT + LOG_WARNING LOG_INFO LOG_LOCAL1 + ) ], +); + +$\= "\n"; +print; + +foreach (@macros) { + my ($type, @l) = @$_; + foreach (@l) { + print<< "END" +$type +$_() + CODE: + RETVAL = $_; + + OUTPUT: + RETVAL + +END + + } +} diff --git a/perl-install/c/stuff.xs.pm b/perl-install/c/stuff.xs.pm deleted file mode 100644 index 2253c419e..000000000 --- a/perl-install/c/stuff.xs.pm +++ /dev/null @@ -1,579 +0,0 @@ -use Config; - -print ' -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -/* workaround for glibc and kernel header files not in sync */ -#define dev_t dev_t - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* for is_ext3 */ -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include -#undef max_colors - -#define SECTORSIZE 512 - -char *prom_getopt(); -void prom_setopt(); -char *prom_getproperty(); -char *disk2PromPath(); -char *promRootName(); - -'; - -$ENV{C_DRAKX} && $Config{archname} =~ /i.86/ and print ' -char *pcmcia_probe(void); -'; - -$ENV{C_RPM} and print ' -#undef Fflush -#undef Mkdir -#undef Stat -#include -#include - -void rpmError_callback_empty(void) {} - -int rpmError_callback_data; -void rpmError_callback(void) { - if (rpmErrorCode() != RPMERR_UNLINK && rpmErrorCode() != RPMERR_RMDIR) { - write(rpmError_callback_data, rpmErrorString(), strlen(rpmErrorString())); - } -} - -'; - -$ENV{C_DRAKX} and print ' - -#include - -void initIMPS2() { - unsigned char imps2_s1[] = { 243, 200, 243, 100, 243, 80, }; - unsigned char imps2_s2[] = { 246, 230, 244, 243, 100, 232, 3, }; - - int fd = open("/dev/cdrom", O_WRONLY); - if (fd < 0) return; - - write (fd, imps2_s1, sizeof (imps2_s1)); - usleep (30000); - write (fd, imps2_s2, sizeof (imps2_s2)); - usleep (30000); - tcflush (fd, TCIFLUSH); - tcdrain(fd); -} - -void log_message(const char * s, ...) {} - -'; - -print ' - -MODULE = c::stuff PACKAGE = c::stuff - -'; - -$ENV{C_DRAKX} && $Config{archname} =~ /i.86/ and print ' -char * -pcmcia_probe() -'; - -$ENV{C_DRAKX} and print ' - -int -Xtest(display) - char *display - CODE: - int pid; - if ((pid = fork()) == 0) { - Display *d = XOpenDisplay(display); - if (d) { - XSetCloseDownMode(d, RetainPermanent); - XCloseDisplay(d); - } - _exit(d != NULL); - } - waitpid(pid, &RETVAL, 0); - OUTPUT: - RETVAL - -void -setMouseLive(display, type, emulate3buttons) - char *display - int type - int emulate3buttons - CODE: - { - XF86MiscMouseSettings mseinfo; - Display *d = XOpenDisplay(display); - if (d) { - if (XF86MiscGetMouseSettings(d, &mseinfo) == True) { - mseinfo.type = type; - mseinfo.flags |= MF_REOPEN; - mseinfo.emulate3buttons = emulate3buttons; - XF86MiscSetMouseSettings(d, &mseinfo); - XFlush(d); - if (type == MTYPE_IMPS2) initIMPS2(); - } - } - } -'; - -print ' - -int -add_partition(hd, start_sector, size_sector, part_number) - int hd - unsigned long start_sector - unsigned long size_sector - int part_number - CODE: - { - long long start = start_sector * 512; - long long size = size_sector * 512; - struct blkpg_partition p = { start, size, part_number, "", "" }; - struct blkpg_ioctl_arg s = { BLKPG_ADD_PARTITION, 0, sizeof(struct blkpg_partition), (void *) &p }; - RETVAL = ioctl(hd, BLKPG, &s) == 0; - } - OUTPUT: - RETVAL - -int -is_secure_file(filename) - char * filename - CODE: - { - int fd; - unlink(filename); /* in case it exists and we manage to remove it */ - RETVAL = (fd = open(filename, O_RDWR | O_CREAT | O_EXCL, 0600)) != -1; - if (RETVAL) close(fd); - } - OUTPUT: - RETVAL - -int -is_ext3(device_name) - char * device_name - CODE: - { - ext2_filsys fs; - int retval = ext2fs_open (device_name, 0, 0, 0, unix_io_manager, &fs); - if (retval) { - RETVAL = 0; - } else { - RETVAL = fs->super->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL; - ext2fs_close(fs); - } - } - OUTPUT: - RETVAL - -void -setlocale() - CODE: - setlocale(LC_ALL, ""); - setlocale(LC_NUMERIC, "C"); /* otherwise eval "1.5" returns 1 in fr_FR for example */ - -char * -bindtextdomain(domainname, dirname) - char * domainname - char * dirname - -char * -dgettext(domainname, msgid) - char * domainname - char * msgid - -int -KTYP(x) - int x - CODE: - RETVAL = KTYP(x); - OUTPUT: - RETVAL - -int -lseek_sector(fd, sector, offset) - int fd - long sector - long offset - CODE: - RETVAL = lseek64(fd, (off64_t) sector * SECTORSIZE + offset, SEEK_SET) >= 0; - OUTPUT: - RETVAL - -int -isBurner(fd) - int fd - CODE: - RETVAL = ioctl(fd, CDROM_GET_CAPABILITY) & CDC_CD_RW; - OUTPUT: - RETVAL - -int -isDvdDrive(fd) - int fd - CODE: - RETVAL = ioctl(fd, CDROM_GET_CAPABILITY) & CDC_DVD; - OUTPUT: - RETVAL - -char * -floppy_info(name) - char * name - CODE: - int fd = open(name, O_RDONLY | O_NONBLOCK); - RETVAL = NULL; - if (fd != -1) { - char drivtyp[17]; - ioctl(fd, FDGETDRVTYP, (void *)drivtyp); - RETVAL = drivtyp; - close(fd); - } - OUTPUT: - RETVAL - -unsigned int -total_sectors(fd) - int fd - CODE: - { - long s; - RETVAL = ioctl(fd, BLKGETSIZE, &s) == 0 ? s : 0; - } - OUTPUT: - RETVAL - -void -unlimit_core() - CODE: - { - struct rlimit rlim = { RLIM_INFINITY, RLIM_INFINITY }; - setrlimit(RLIMIT_CORE, &rlim); - } - -int -getlimit_core() - CODE: - { - struct rlimit rlim; - getrlimit(RLIMIT_CORE, &rlim); - RETVAL = rlim.rlim_cur; - } - OUTPUT: - RETVAL - -void -openlog(ident) - char *ident - CODE: - openlog(ident, 0, 0); - -void -closelog() - -void -syslog(priority, mesg) - int priority - char *mesg - CODE: - syslog(priority, mesg); - -void -setsid() - -void -_exit(status) - int status - -int -detectSMP() - -void -pci_probe(probe_type) - int probe_type - PPCODE: - struct pciusb_entries entries = pci_probe(probe_type); - char buf[2048]; - int i; - - EXTEND(SP, entries.nb); - for (i = 0; i < entries.nb; i++) { - struct pciusb_entry e = entries.entries[i]; - snprintf(buf, sizeof(buf), "%04x\t%04x\t%04x\t%04x\t%d\t%d\t%d\t%s\t%s\t%s", - e.vendor, e.device, e.subvendor, e.subdevice, e.pci_bus, e.pci_device, e.pci_function, - pci_class2text(e.class_), e.module ? e.module : "unknown", e.text); - PUSHs(sv_2mortal(newSVpv(buf, 0))); - } - pciusb_free(&entries); - -void -usb_probe() - PPCODE: - struct pciusb_entries entries = usb_probe(); - char buf[2048]; - int i; - - EXTEND(SP, entries.nb); - for (i = 0; i < entries.nb; i++) { - struct pciusb_entry e = entries.entries[i]; - snprintf(buf, sizeof(buf), "%04x\t%04x\t%s\t%s\t%s", - e.vendor, e.device, usb_class2text(e.class_), e.module ? e.module : "unknown", e.text); - PUSHs(sv_2mortal(newSVpv(buf, 0))); - } - pciusb_free(&entries); - -unsigned int -getpagesize() - -int -hasNetDevice(device) - char * device - CODE: - struct ifreq req; - int s = socket(AF_INET, SOCK_DGRAM, 0); - if (s == -1) { RETVAL = 0; return; } - - strcpy(req.ifr_name, device); - - RETVAL = ioctl(s, SIOCGIFFLAGS, &req) == 0; - close(s); - OUTPUT: - RETVAL - -int -addDefaultRoute(gateway) - char *gateway - CODE: - struct rtentry route; - struct sockaddr_in addr; - int s = socket(AF_INET, SOCK_DGRAM, 0); - if (s == -1) { RETVAL = 0; return; } - - memset(&route, 0, sizeof(route)); - - addr.sin_family = AF_INET; - addr.sin_port = 0; - inet_aton(gateway, &addr.sin_addr); - memcpy(&route.rt_gateway, &addr, sizeof(addr)); - - addr.sin_addr.s_addr = INADDR_ANY; - memcpy(&route.rt_dst, &addr, sizeof(addr)); - memcpy(&route.rt_genmask, &addr, sizeof(addr)); - - route.rt_flags = RTF_UP | RTF_GATEWAY; - route.rt_metric = 0; - - RETVAL = !ioctl(s, SIOCADDRT, &route); - OUTPUT: - RETVAL - -char * -kernel_version() - CODE: - struct utsname u; - if (uname(&u) == 0) RETVAL = u.release; else RETVAL = NULL; - OUTPUT: - RETVAL - -int -prom_open() - -void -prom_close() - -int -prom_getsibling(node) - int node - -int -prom_getchild(node) - int node - -void -prom_getopt(key) - char *key - PPCODE: - int lenp = 0; - char *value = NULL; - value = prom_getopt(key, &lenp); - EXTEND(sp, 1); - if (value != NULL) { - PUSHs(sv_2mortal(newSVpv(value, 0))); - } else { - PUSHs(&PL_sv_undef); - } - -void -prom_setopt(key, value) - char *key - char *value - -void -prom_getproperty(key) - char *key - PPCODE: - int lenp = 0; - char *value = NULL; - value = prom_getproperty(key, &lenp); - EXTEND(sp, 1); - if (value != NULL) { - PUSHs(sv_2mortal(newSVpv(value, lenp))); - } else { - PUSHs(&PL_sv_undef); - } - -void -prom_getstring(key) - char *key - PPCODE: - int lenp = 0; - char *value = NULL; - value = prom_getproperty(key, &lenp); - EXTEND(sp, 1); - if (value != NULL) { - PUSHs(sv_2mortal(newSVpv(value, 0))); - } else { - PUSHs(&PL_sv_undef); - } - -int -prom_getbool(key) - char *key - -void -initSilo() - -char * -disk2PromPath(disk) - unsigned char *disk - -int -hasAliases() - -char * -promRootName() - -void -setPromVars(linuxAlias, bootDevice) - char *linuxAlias - char *bootDevice - -char * -iconv(s, from_charset, to_charset) - char *s - char *from_charset - char *to_charset - CODE: - iconv_t cd = iconv_open(to_charset, from_charset); - RETVAL = s; - if (cd != (iconv_t) (-1)) { - size_t s_len = strlen(RETVAL); - char *buf = alloca(3 * s_len + 10); /* 10 for safety, it should not be needed */ - { - char *ptr = buf; - size_t ptr_len = 3 * s_len + 10; - if ((iconv(cd, &s, &s_len, &ptr, &ptr_len)) != (size_t) (-1)) { - *ptr = 0; - RETVAL = buf; - } - } - iconv_close(cd); - } - OUTPUT: - RETVAL - -char * -standard_charset() - CODE: - RETVAL = nl_langinfo(CODESET); - OUTPUT: - RETVAL - -'; - -$ENV{C_RPM} and print ' -char * -rpmErrorString() - -void -rpmSetVeryVerbose() - CODE: - rpmSetVerbosity(RPMMESS_DEBUG); - -void -rpmErrorSetCallback(fd) - int fd - CODE: - rpmError_callback_data = fd; - rpmErrorSetCallback(rpmError_callback); - -int -rpmvercmp(char *a, char *b); -'; - -@macros = ( - [ qw(int S_IFCHR S_IFBLK S_IFIFO KDSKBENT KT_SPEC NR_KEYS MAX_NR_KEYMAPS BLKRRPART TIOCSCTTY - HDIO_GETGEO BLKGETSIZE LOOP_GET_STATUS - MS_MGC_VAL MS_RDONLY O_NONBLOCK F_SETFL F_GETFL O_CREAT SECTORSIZE WNOHANG - VT_ACTIVATE VT_WAITACTIVE VT_GETSTATE CDROM_LOCKDOOR CDROMEJECT - LOG_WARNING LOG_INFO LOG_LOCAL1 - ) ], -); - -$\= "\n"; -print; - -foreach (@macros) { - my ($type, @l) = @$_; - foreach (@l) { - print<< "END" -$type -$_() - CODE: - RETVAL = $_; - - OUTPUT: - RETVAL - -END - - } -} -- cgit v1.2.1