Я хочу знать, тип файла HTML-файл присутствует в файле tar. Я сохранил этот tar-файл в буфере, и я знаю, что могу узнать размер файла в буфере местоположения [124], но я хочу знать —
(1.) Я хочу знать, что если файл, представленный в tar, является файлом HTML? Есть идеи как это сделать ?? Я думаю, что я знаю файл Link Link Indicator (но я не уверен). Может ли кто-нибудь объяснить, пожалуйста, как это сделать?
(2.) Однажды, если я уверен, что у меня есть html-файл внутри tar-файла, я хочу поместить содержимое этого html-файла в tar-файл.
В tar-файле также присутствует много других файлов (не только html-файл. Обратите внимание на эту строку, поэтому я не знаю, как выглядит html-файл)
Есть идеи как этого добиться ??
Ах, ты имеешь в виду typeflag
поле. Нет не для тот тип файла, он указывает, является ли файл обычным файлом, каталогом, жесткой ссылкой, программной ссылкой, специальным файлом устройства и т. д.
Ваша система (если она совместима с POSIX) должна иметь <tar.h>
системный заголовочный файл (обычно в /usr/include
), который содержит эти флаги. Или вы можете увидеть официальная спецификация POSIX.
@ Йоахим, спасибо за ваше предложение, наконец, я сделал это, как показано ниже, вы можете увидеть, если вы хотите —
char * StartPosition;
size_t skip= 0;
char HtmlFileContents [200000];
char contents [8000];
do
{
int SizeOfFile = CreateOctalToInteger(&buffer[skip+124],11);
size_t distance= ((SizeOfFile%512) ? SizeOfFile + 512 - (SizeOfFile%512) : SizeOfFile );
skip += distance + 512;
memcpy(contents,&buffer[skip],100);
if (StartPosition=strstr(contents,".html"))
{
MessageBox(m_hwndPreview,L"finally string is copied",L"BTN WND6",MB_ICONINFORMATION);
int SizeOfFile = CreateOctalToInteger(&buffer[skip+124],11);
memcpy(HtmlFileContents,&buffer[skip+512],SizeOfFile);
break;
}}
while(strcmp(contents,".html") != NULL);
и это может работать для каждого файла, хранящегося в файле tar. нам просто нужно указать расширение файла (в моем случае .html), и этот код даст нам его содержимое.