MCPcopy Create free account
hub / github.com/MailCore/mailcore2 / Write_LocalFileHeader

Function Write_LocalFileHeader

src/core/zip/MiniZip/zip.c:959–1046  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

957}
958
959int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local)
960{
961 /* write the local header */
962 int err;
963 uInt size_filename = (uInt)strlen(filename);
964 uInt size_extrafield = size_extrafield_local;
965
966 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)LOCALHEADERMAGIC, 4);
967
968 if (err==ZIP_OK)
969 {
970 if(zi->ci.zip64)
971 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2);/* version needed to extract */
972 else
973 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)20,2);/* version needed to extract */
974 }
975
976 if (err==ZIP_OK)
977 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.flag,2);
978
979 if (err==ZIP_OK)
980 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.method,2);
981
982 if (err==ZIP_OK)
983 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.dosDate,4);
984
985 // CRC / Compressed size / Uncompressed size will be filled in later and rewritten later
986 if (err==ZIP_OK)
987 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* crc 32, unknown */
988 if (err==ZIP_OK)
989 {
990 if(zi->ci.zip64)
991 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* compressed size, unknown */
992 else
993 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* compressed size, unknown */
994 }
995 if (err==ZIP_OK)
996 {
997 if(zi->ci.zip64)
998 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* uncompressed size, unknown */
999 else
1000 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* uncompressed size, unknown */
1001 }
1002
1003 if (err==ZIP_OK)
1004 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_filename,2);
1005
1006 if(zi->ci.zip64)
1007 {
1008 size_extrafield += 20;
1009 }
1010
1011 if (err==ZIP_OK)
1012 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_extrafield,2);
1013
1014 if ((err==ZIP_OK) && (size_filename > 0))
1015 {
1016 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