]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ACPICA: Common: Enhance cm_get_file_size() to improve portability
authorLv Zheng <lv.zheng@intel.com>
Tue, 8 Jul 2014 02:07:19 +0000 (10:07 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 8 Jul 2014 12:22:26 +0000 (14:22 +0200)
This patch uses abstract file IO and acpi_log_error() APIs to enhance
cm_get_file_size() so that applications that invoke this API could have
portability improved.

With actual references added to abstract file IO and acpi_log_error(), the
applications need to link oslibcfs.o, utdebug.o, utexcep.o, utmath.o,
utprint.o and utxferror.o.

It is also required to add acpi_os_initialize() invocations if an
application starts to use acpi_log_error().

acpidump has already invoked acpi_os_initialize() in this way.  Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/acapps.h
tools/power/acpi/Makefile
tools/power/acpi/common/cmfsize.c

index 5bf41f8a4b47db9c08c5f4d7fd3d202adb1adcb5..3d2c88289da9ff88a0dde088ee5a3aba30362131 100644 (file)
@@ -105,7 +105,7 @@ extern char *acpi_gbl_optarg;
 /*
  * cmfsize - Common get file size function
  */
-u32 cm_get_file_size(FILE * file);
+u32 cm_get_file_size(ACPI_FILE file);
 
 #ifndef ACPI_DUMP_APP
 /*
index f88a251863c53c72803d2f0ba9c214f9f1cbf887..3d1537b93c645968410463b75c2721ca4d7c1949 100644 (file)
@@ -112,11 +112,14 @@ DUMP_OBJS = \
        tbprint.o\
        tbxfroot.o\
        utbuffer.o\
+       utdebug.o\
        utexcep.o\
        utglobal.o\
        utmath.o\
+       utprint.o\
        utstring.o\
        utxferror.o\
+       oslibcfs.o\
        oslinuxtbl.o\
        cmfsize.o\
        getopt.o
index 5140e5edae1fb0d48fd9eb9a0adf6d63f421b0f6..f4b953354ff7e28fa11e86b9b260754ad78c7e99 100644 (file)
@@ -58,44 +58,46 @@ ACPI_MODULE_NAME("cmfsize")
  * RETURN:      File Size. On error, -1 (ACPI_UINT32_MAX)
  *
  * DESCRIPTION: Get the size of a file. Uses seek-to-EOF. File must be open.
- *              Does not disturb the current file pointer. Uses perror for
- *              error messages.
+ *              Does not disturb the current file pointer.
  *
  ******************************************************************************/
-u32 cm_get_file_size(FILE * file)
+u32 cm_get_file_size(ACPI_FILE file)
 {
        long file_size;
        long current_offset;
+       acpi_status status;
 
        /* Save the current file pointer, seek to EOF to obtain file size */
 
-       current_offset = ftell(file);
+       current_offset = acpi_os_get_file_offset(file);
        if (current_offset < 0) {
                goto offset_error;
        }
 
-       if (fseek(file, 0, SEEK_END)) {
+       status = acpi_os_set_file_offset(file, 0, ACPI_FILE_END);
+       if (ACPI_FAILURE(status)) {
                goto seek_error;
        }
 
-       file_size = ftell(file);
+       file_size = acpi_os_get_file_offset(file);
        if (file_size < 0) {
                goto offset_error;
        }
 
        /* Restore original file pointer */
 
-       if (fseek(file, current_offset, SEEK_SET)) {
+       status = acpi_os_set_file_offset(file, current_offset, ACPI_FILE_BEGIN);
+       if (ACPI_FAILURE(status)) {
                goto seek_error;
        }
 
        return ((u32)file_size);
 
 offset_error:
-       perror("Could not get file offset");
+       acpi_log_error("Could not get file offset");
        return (ACPI_UINT32_MAX);
 
 seek_error:
-       perror("Could not seek file");
+       acpi_log_error("Could not set file offset");
        return (ACPI_UINT32_MAX);
 }