You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-laptop/lphdisk/files/lphdisk-0.9.1-gentoo.patch

253 lines
7.8 KiB

diff -ur lphdisk-0.9.1.orig/lphdisk.c lphdisk-0.9.1/lphdisk.c
--- lphdisk-0.9.1.orig/lphdisk.c 2002-02-12 13:04:27.000000000 +0200
+++ lphdisk-0.9.1/lphdisk.c 2008-12-08 12:21:29.000000000 +0200
@@ -19,8 +19,10 @@
Be careful!
*/
+#define _LARGEFILE64_SOURCE
#include <stdio.h>
#include <stdlib.h>
+#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <stdarg.h>
@@ -29,8 +31,8 @@
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/io.h>
-#include "lrmi.h"
-#include "vbe.h"
+#include <lrmi.h>
+#include <vbe.h>
/* General Program Defines: */
@@ -100,58 +102,6 @@
/* General Purpose Utility Routines */
/*****************************************************************************/
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/* The following is a hack to take advantage of the ext2 "_llseek" system */
-/* call to do seeks to "long long" offsets under linux (this is needed to */
-/* seek to sectors beyond 4194303 (2GB)). This isn't directly supported by */
-/* glibc, so we need to make our own interface function for it. We should */
-/* be able to get the _NR__llseek define from linux/unistd.h. From this we */
-/* can construct a wrapper to perform the right system call. */
-
-#include <linux/unistd.h> /* for __NR__llseek */
-
-typedef long long lloff_t;
-
-#ifdef __NR__llseek
-
-static _syscall5(int,_llseek, unsigned int,fd, unsigned long,offset_high,
- unsigned long,offset_low, lloff_t *,result,
- unsigned int,origin)
-
-lloff_t llseek (unsigned int fd, lloff_t offset, unsigned int origin) {
- lloff_t result;
- int retval;
-
- retval = _llseek (fd, ((unsigned long long) offset) >> 32,
- ((unsigned long long) offset) & 0xffffffff,
- &result, origin);
- return (retval == -1 ? (lloff_t) retval : result);
-}
-
-#else /* __NR__llseek */
-
-/* Somehow, __NR__llseek wasn't in linux/unistd.h. This shouldn't ever */
-/* happen, but better safe than sorry.. The best we can do is emulate it */
-/* with lseek, and hope we don't get an offset that's too large (throw an */
-/* error if we do) */
-
-lloff_t llseek (unsigned int fd, lloff_t offset, unsigned int origin) {
- off_t offt_offset = (off_t) offset;
-
- if ((lloff_t)offt_offset != offset) {
- /* converting to off_t and back yields different result, indicating an */
- /* overflow.. */
- errno = EINVAL;
- return -1;
- } else {
- return lseek(fd, offt_offset, origin);
- }
-}
-
-#endif /* __NR__llseek */
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
#define get16(p) get_int_le(p,2)
#define get32(p) get_int_le(p,4)
@@ -189,9 +139,9 @@
/* success, nonzero on error. */
int seek_sector (int fd, size_t secno) {
- lloff_t offset = (lloff_t) secno * SECTOR_SIZE;
+ off64_t offset = (off64_t) secno * SECTOR_SIZE;
- if (llseek(fd, offset, SEEK_SET) == (lloff_t) -1)
+ if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
return -1;
return 0;
@@ -556,25 +506,29 @@
int meminfo_physmem(void) {
FILE *f;
- unsigned int size;
+ unsigned int size = 0;
int ramsize;
+ char s[128];
if (!(f = fopen(meminfo_filename, "r"))) {
debug("Unable to open %s: %s\n", meminfo_filename, strerror(errno));
return 0;
}
- fscanf(f, "%*[^\n]\n"); /* Read the header line and discard it */
- if (fscanf(f, "Mem: %u", &size) != 1) {
+ while (fgets(s, sizeof(s), f)) {
+ if (sscanf(s, "MemTotal: %u", &size) == 1) {
+ break;
+ }
+ }
+ if (size == 0) {
debug("Parse of %s failed.\n", meminfo_filename);
return 0;
}
fclose(f);
- /* convert to KB and then round up to the next power of 2 (since RAM */
+ /* size is in KB and then round up to the next power of 2 (since RAM */
/* sizes don't come in anything else, so this should correct for the */
/* kernel size, etc) */
- size >>= 10;
debug("%s reports memory size of %d KB", meminfo_filename, size);
for (ramsize = 1; size; size >>= 1) ramsize <<= 1;
@@ -718,22 +672,22 @@
{"force", 0, 0, 'f'},
{0,0,0,0}};
-const char usage_string[] = "\
-Usage: %1$s [options] [device]
-Prepare a hibernation partition for APM suspend-to-disk.
-
-options:
- -h, --help Display brief usage and option information (this screen)
- -p, --probeonly Only calculate and display required size, do not format
- -q, --quiet Turn off informational messages, useful for scripts
- -d, --debug Turn on (verbose) debugging messages
- -n, --nowrite Do not actually write to the disk
- -f, --force **DANGEROUS** Format without regard to potential problems
-
-'device' should be a raw disk device (not a partition). The default device
-is /dev/hda.
-
-(%2$s)\n\n";
+const char usage_string[] = ""
+"Usage: %1$s [options] [device]\n"
+"Prepare a hibernation partition for APM suspend-to-disk.\n"
+"\n"
+"options:\n"
+" -h, --help Display brief usage and option information (this screen)\n"
+" -p, --probeonly Only calculate and display required size, do not format\n"
+" -q, --quiet Turn off informational messages, useful for scripts\n"
+" -d, --debug Turn on (verbose) debugging messages\n"
+" -n, --nowrite Do not actually write to the disk\n"
+" -f, --force **DANGEROUS** Format without regard to potential problems\n"
+"\n"
+"'device' should be a raw disk device (not a partition). The default device\n"
+"is /dev/hda.\n"
+"\n"
+"(%2$s)\n\n";
void print_usage (void) {
char *progname = rindex(argv0, '/');
@@ -750,7 +704,7 @@
dev_t dev;
int partition;
int ramsize, vramsize, required_size;
- size_t required_sectors;
+ size_t required_sectors = 0;
argv0 = argv[0];
@@ -821,9 +775,9 @@
}
if (!required_size) {
- if (!quiet_flag) printf("Reccomended partition size is unknown.\n");
+ if (!quiet_flag) printf("Recommended partition size is unknown.\n");
} else {
- if (!quiet_flag) printf("Reccomended partition size is %d MB"
+ if (!quiet_flag) printf("Recommended partition size is %d MB"
" (%d sectors)\n", ((required_size+1023) >> 10),
required_sectors);
}
@@ -923,7 +877,7 @@
if ((pi[partition-1].size < required_sectors) && !quiet_flag) {
fprintf(stderr, "Warning: hibernate partition size (%d) is smaller than"
- " reccomended size (%d).\n", pi[partition-1].size,
+ " recommended size (%d).\n", pi[partition-1].size,
required_sectors);
}
diff -ur lphdisk-0.9.1.orig/Makefile lphdisk-0.9.1/Makefile
--- lphdisk-0.9.1.orig/Makefile 2002-02-12 11:06:46.000000000 +0200
+++ lphdisk-0.9.1/Makefile 2008-12-08 12:26:49.000000000 +0200
@@ -4,37 +4,28 @@
# lphdisk 0.9.1
#
-INSTALL_PREFIX = /usr/local
+INSTALL_PREFIX = /usr
-CFLAGS = -g -Wall
-LIBS =
-
-LRMIDIR = lrmi-0.6m
+CFLAGS += -Wall
+LIBS = -llrmi
all: lphdisk
-lphdisk: lphdisk.o lrmi.o
- $(CC) $(CFLAGS) -o lphdisk lphdisk.o lrmi.o $(LIBS)
-
-lphdisk.o: lphdisk.c lrmi.h vbe.h
-
-lrmi.o:
- cd $(LRMIDIR) && $(MAKE) $@
- cp $(LRMIDIR)/lrmi.o .
+lphdisk: lphdisk.o
+ $(CC) $(LDFLAGS) $(CFLAGS) -o lphdisk lphdisk.o $(LIBS)
-%.h: $(LRMIDIR)/%.h
- cp $^ $@
+lphdisk.o: lphdisk.c
install: all
- install -m 755 lphdisk $(INSTALL_PREFIX)/sbin
- install -m 644 lphdisk.8 $(INSTALL_PREFIX)/man/man8
+ mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/sbin
+ install -m 755 lphdisk $(DESTDIR)$(INSTALL_PREFIX)/sbin
+ mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/share/man/man8
+ install -m 644 lphdisk.8 $(DESTDIR)$(INSTALL_PREFIX)/share/man/man8
clean:
- cd $(LRMIDIR) && $(MAKE) $@
- rm -f *.o lrmi.h vbe.h
+ rm -f *.o
distclean: clean
- cd $(LRMIDIR) && $(MAKE) $@
rm -f lphdisk
.PHONY: all install clean distclean