MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / Write_LocalFileHeader

Function Write_LocalFileHeader

extlibs/minizip/src/zip.c:945–1032  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

943}
944
945int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local)
946{
947 /* write the local header */
948 int err;
949 uInt size_filename = (uInt)strlen(filename);
950 uInt size_extrafield = size_extrafield_local;
951
952 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)LOCALHEADERMAGIC, 4);
953
954 if (err == ZIP_OK)
955 {
956 if (zi->ci.zip64)
957 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)45, 2);/* version needed to extract */
958 else
959 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)20, 2);/* version needed to extract */
960 }
961
962 if (err == ZIP_OK)
963 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.flag, 2);
964
965 if (err == ZIP_OK)
966 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.method, 2);
967
968 if (err == ZIP_OK)
969 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.dosDate, 4);
970
971 // CRC / Compressed size / Uncompressed size will be filled in later and rewritten later
972 if (err == ZIP_OK)
973 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); /* crc 32, unknown */
974 if (err == ZIP_OK)
975 {
976 if (zi->ci.zip64)
977 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xFFFFFFFF, 4); /* compressed size, unknown */
978 else
979 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); /* compressed size, unknown */
980 }
981 if (err == ZIP_OK)
982 {
983 if (zi->ci.zip64)
984 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xFFFFFFFF, 4); /* uncompressed size, unknown */
985 else
986 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); /* uncompressed size, unknown */
987 }
988
989 if (err == ZIP_OK)
990 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_filename, 2);
991
992 if (zi->ci.zip64)
993 {
994 size_extrafield += 20;
995 }
996
997 if (err == ZIP_OK)
998 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_extrafield, 2);
999
1000 if ((err == ZIP_OK) && (size_filename > 0))
1001 {
1002 if (ZWRITE64(zi->z_filefunc,zi->filestream,filename,size_filename) != size_filename)

Callers 1

zip.cFile · 0.85

Calls 1

zip64local_putValueFunction · 0.85

Tested by

no test coverage detected