Home | History | Annotate | Download | only in courgette

Lines Matching refs:courgette

17 #include "courgette/courgette.h"
18 #include "courgette/streams.h"
19 #include "courgette/third_party/bsdiff.h"
25 " courgette -supported <executable_file>\n"
26 " courgette -dis <executable_file> <binary_assembly_file>\n"
27 " courgette -asm <binary_assembly_file> <executable_file>\n"
28 " courgette -disadj <executable_file> <reference> <binary_assembly_file>\n"
29 " courgette -gen <v1> <v2> <patch>\n"
30 " courgette -apply <v1> <patch> <v2>\n"
61 void WriteSinkToFile(const courgette::SinkStream *sink,
77 courgette::AssemblyProgram* program = NULL;
78 const courgette::Status parse_status =
79 courgette::ParseDetectedExecutable(buffer.c_str(), buffer.length(),
82 if (parse_status != courgette::C_OK)
85 courgette::EncodedProgram* encoded = NULL;
86 const courgette::Status encode_status = Encode(program, &encoded);
88 courgette::DeleteAssemblyProgram(program);
90 if (encode_status != courgette::C_OK)
93 courgette::SinkStreamSet sinks;
95 const courgette::Status write_status =
96 courgette::WriteEncodedProgram(encoded, &sinks);
97 if (write_status != courgette::C_OK)
100 courgette::DeleteEncodedProgram(encoded);
102 courgette::SinkStream sink;
114 courgette::ExecutableType type;
126 case courgette::EXE_UNKNOWN:
129 case courgette::EXE_WIN_32_X86:
134 case courgette::EXE_ELF_32_X86:
139 case courgette::EXE_ELF_32_ARM:
155 courgette::AssemblyProgram* program = NULL;
156 const courgette::Status parse_program_status =
157 courgette::ParseDetectedExecutable(program_buffer.c_str(),
160 if (parse_program_status != courgette::C_OK)
163 courgette::AssemblyProgram* model = NULL;
164 const courgette::Status parse_model_status =
165 courgette::ParseDetectedExecutable(model_buffer.c_str(),
168 if (parse_model_status != courgette::C_OK)
171 const courgette::Status adjust_status = Adjust(*model, program);
172 if (adjust_status != courgette::C_OK)
175 courgette::EncodedProgram* encoded = NULL;
176 const courgette::Status encode_status = Encode(program, &encoded);
178 courgette::DeleteAssemblyProgram(program);
180 if (encode_status != courgette::C_OK)
183 courgette::SinkStreamSet sinks;
185 const courgette::Status write_status =
186 courgette::WriteEncodedProgram(encoded, &sinks);
187 if (write_status != courgette::C_OK)
190 courgette::DeleteEncodedProgram(encoded);
192 courgette::SinkStream sink;
211 courgette::AssemblyProgram* model = NULL;
212 const courgette::Status parse_model_status =
213 courgette::ParseDetectedExecutable(model_buffer.c_str(),
216 if (parse_model_status != courgette::C_OK)
219 courgette::AssemblyProgram* program = NULL;
220 const courgette::Status parse_program_status =
221 courgette::ParseDetectedExecutable(program_buffer.c_str(),
224 if (parse_program_status != courgette::C_OK)
228 const courgette::Status adjust_status = Adjust(*model, program);
229 if (adjust_status != courgette::C_OK)
233 courgette::EncodedProgram* encoded_program = NULL;
234 const courgette::Status encode_program_status =
236 courgette::DeleteAssemblyProgram(program);
237 if (encode_program_status != courgette::C_OK)
240 courgette::EncodedProgram* encoded_model = NULL;
241 const courgette::Status encode_model_status = Encode(model, &encoded_model);
242 courgette::DeleteAssemblyProgram(model);
243 if (encode_model_status != courgette::C_OK)
246 courgette::SinkStreamSet program_sinks;
247 const courgette::Status write_program_status =
248 courgette::WriteEncodedProgram(encoded_program, &program_sinks);
249 if (write_program_status != courgette::C_OK)
251 courgette::DeleteEncodedProgram(encoded_program);
253 courgette::SinkStreamSet model_sinks;
254 const courgette::Status write_model_status =
255 courgette::WriteEncodedProgram(encoded_model, &model_sinks);
256 if (write_model_status != courgette::C_OK)
258 courgette::DeleteEncodedProgram(encoded_model);
260 courgette::SinkStream empty_sink;
262 courgette::SinkStream* old_stream = model_sinks.stream(i);
263 courgette::SinkStream* new_stream = program_sinks.stream(i);
267 courgette::SourceStream old_source;
268 courgette::SourceStream new_source;
271 courgette::SinkStream patch_stream;
272 courgette::BSDiffStatus status =
273 courgette::CreateBinaryPatch(&old_source, &new_source, &patch_stream);
274 if (status != courgette::OK) Problem("-xxx failed.");
287 courgette::SourceStreamSet sources;
291 courgette::EncodedProgram* encoded = NULL;
292 const courgette::Status read_status = ReadEncodedProgram(&sources, &encoded);
293 if (read_status != courgette::C_OK)
296 courgette::SinkStream sink;
298 const courgette::Status assemble_status = courgette::Assemble(encoded, &sink);
299 if (assemble_status != courgette::C_OK)
311 courgette::SourceStream old_stream;
312 courgette::SourceStream new_stream;
316 courgette::SinkStream patch_stream;
317 courgette::Status status =
318 courgette::GenerateEnsemblePatch(&old_stream, &new_stream, &patch_stream);
320 if (status != courgette::C_OK) Problem("-gen failed.");
328 // We do things a little differently here in order to call the same Courgette
332 courgette::Status status =
333 courgette::ApplyEnsemblePatch(old_file.value().c_str(),
337 if (status == courgette::C_OK)
342 case courgette::C_BAD_ENSEMBLE_MAGIC:
343 Problem("Not a courgette patch");
346 case courgette::C_BAD_ENSEMBLE_VERSION:
350 case courgette::C_BAD_ENSEMBLE_HEADER:
354 case courgette::C_DISASSEMBLY_FAILED:
358 case courgette::C_STREAM_ERROR:
374 if (status == courgette::C_WRITE_OPEN_ERROR)
376 if (status == courgette::C_WRITE_ERROR)
388 courgette::SourceStream old_stream;
389 courgette::SourceStream new_stream;
393 courgette::SinkStream patch_stream;
394 courgette::BSDiffStatus status =
395 courgette::CreateBinaryPatch(&old_stream, &new_stream, &patch_stream);
397 if (status != courgette::OK) Problem("-genbsdiff failed.");
408 courgette::SourceStream old_stream;
409 courgette::SourceStream patch_stream;
413 courgette::SinkStream new_stream;
414 courgette::BSDiffStatus status =
415 courgette::ApplyBinaryPatch(&old_stream, &patch_stream, &new_stream);
417 if (status != courgette::OK) Problem("-applybsdiff failed.");
429 settings.log_file = FILE_PATH_LITERAL("courgette.log");