return ret;
}
-/** Retrieve the size of the open stream @a file.
- * This function only works on seekable streams. However, the set of seekable
- * streams is generally congruent with the set of streams that have a size.
- * Code that needs to work with any type of stream (including pipes) should
- * require neither seekability nor advance knowledge of the size.
- * On failure, the return value is negative and errno is set.
- * @param file An I/O stream opened in binary mode.
- * @return The size of @a file in bytes, or a negative value on failure.
- */
-SR_PRIV int64_t sr_file_get_size(FILE *file)
-{
- off_t filepos, filesize;
-
- /* ftello() and fseeko() are not standard C, but part of POSIX.1-2001.
- * Thus, if these functions are available at all, they can reasonably
- * be expected to also conform to POSIX semantics. In particular, this
- * means that ftello() after fseeko(..., SEEK_END) has a defined result
- * and can be used to get the size of a seekable stream.
- * On Windows, the result is fully defined only for binary streams.
- */
- filepos = ftello(file);
- if (filepos < 0)
- return -1;
-
- if (fseeko(file, 0, SEEK_END) < 0)
- return -1;
-
- filesize = ftello(file);
- if (filesize < 0)
- return -1;
-
- if (fseeko(file, filepos, SEEK_SET) < 0)
- return -1;
-
- return filesize;
-}
-
/**
* Try to find an input module that can parse the given file.
*
GSList *instances;
};
-/*--- input/input.c ---------------------------------------------------------*/
-
-SR_PRIV int64_t sr_file_get_size(FILE *file);
-
/*--- log.c -----------------------------------------------------------------*/
#if defined(G_OS_WIN32) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
/*--- resource.c ------------------------------------------------------------*/
+SR_PRIV int64_t sr_file_get_size(FILE *file);
+
SR_PRIV int sr_resource_open(struct sr_context *ctx,
struct sr_resource *res, int type, const char *name)
G_GNUC_WARN_UNUSED_RESULT;
* Access to resource files.
*/
+/** Retrieve the size of the open stream @a file.
+ *
+ * This function only works on seekable streams. However, the set of seekable
+ * streams is generally congruent with the set of streams that have a size.
+ * Code that needs to work with any type of stream (including pipes) should
+ * require neither seekability nor advance knowledge of the size.
+ * On failure, the return value is negative and errno is set.
+ *
+ * @param file An I/O stream opened in binary mode.
+ * @return The size of @a file in bytes, or a negative value on failure.
+ *
+ * @private
+ */
+SR_PRIV int64_t sr_file_get_size(FILE *file)
+{
+ off_t filepos, filesize;
+
+ /* ftello() and fseeko() are not standard C, but part of POSIX.1-2001.
+ * Thus, if these functions are available at all, they can reasonably
+ * be expected to also conform to POSIX semantics. In particular, this
+ * means that ftello() after fseeko(..., SEEK_END) has a defined result
+ * and can be used to get the size of a seekable stream.
+ * On Windows, the result is fully defined only for binary streams.
+ */
+ filepos = ftello(file);
+ if (filepos < 0)
+ return -1;
+
+ if (fseeko(file, 0, SEEK_END) < 0)
+ return -1;
+
+ filesize = ftello(file);
+ if (filesize < 0)
+ return -1;
+
+ if (fseeko(file, filepos, SEEK_SET) < 0)
+ return -1;
+
+ return filesize;
+}
+
static FILE *try_open_file(const char *datadir, const char *subdir,
const char *name)
{