* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
+#include <string.h>
+#include <stdlib.h>
+
#include "gmqcc.h"
/*
static bool pak_insert_one(pak_file_t *pak, const char *file) {
pak_directory_t dir;
unsigned char *dat;
+ long len;
FILE *fp;
/*
* to the PAK file itself.
*/
fs_file_seek(fp, 0, SEEK_END);
- dir.len = fs_file_tell(fp);
+ if ((len = fs_file_tell(fp)) < 0) {
+ fs_file_close(fp);
+ return false;
+ }
fs_file_seek(fp, 0, SEEK_SET);
+ dir.len = len;
dir.pos = fs_file_tell(pak->handle);
/*
* our directory entries at the end of the file.
*/
if (pak->insert) {
+ int tell = fs_file_tell(pak->handle);
+ if (tell < 0) {
+ vec_free (pak->directories);
+ fs_file_close(pak->handle);
+ mem_d (pak);
+
+ return false;
+ }
pak->header.dirlen = vec_size(pak->directories) * 64;
- pak->header.diroff = ftell(pak->handle);
+ pak->header.diroff = tell;
/* patch header */
fs_file_seek (pak->handle, 0, SEEK_SET);
/* not possible */
pak_close(pak);
vec_free(files);
- util_meminfo();
+ stat_info();
+
return EXIT_SUCCESS;
}
pak_close(pak);
vec_free(files);
- util_meminfo();
+ stat_info();
return EXIT_SUCCESS;
}