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:
144 case courgette::EXE_WIN_32_X64:
160 courgette::AssemblyProgram* program = NULL;
161 const courgette::Status parse_program_status =
162 courgette::ParseDetectedExecutable(program_buffer.c_str(),
165 if (parse_program_status != courgette::C_OK)
168 courgette::AssemblyProgram* model = NULL;
169 const courgette::Status parse_model_status =
170 courgette::ParseDetectedExecutable(model_buffer.c_str(),
173 if (parse_model_status != courgette::C_OK)
176 const courgette::Status adjust_status = Adjust(*model, program);
177 if (adjust_status != courgette::C_OK)
180 courgette::EncodedProgram* encoded = NULL;
181 const courgette::Status encode_status = Encode(program, &encoded);
183 courgette::DeleteAssemblyProgram(program);
185 if (encode_status != courgette::C_OK)
188 courgette::SinkStreamSet sinks;
190 const courgette::Status write_status =
191 courgette::WriteEncodedProgram(encoded, &sinks);
192 if (write_status != courgette::C_OK)
195 courgette::DeleteEncodedProgram(encoded);
197 courgette::SinkStream sink;
216 courgette::AssemblyProgram* model = NULL;
217 const courgette::Status parse_model_status =
218 courgette::ParseDetectedExecutable(model_buffer.c_str(),
221 if (parse_model_status != courgette::C_OK)
224 courgette::AssemblyProgram* program = NULL;
225 const courgette::Status parse_program_status =
226 courgette::ParseDetectedExecutable(program_buffer.c_str(),
229 if (parse_program_status != courgette::C_OK)
233 const courgette::Status adjust_status = Adjust(*model, program);
234 if (adjust_status != courgette::C_OK)
238 courgette::EncodedProgram* encoded_program = NULL;
239 const courgette::Status encode_program_status =
241 courgette::DeleteAssemblyProgram(program);
242 if (encode_program_status != courgette::C_OK)
245 courgette::EncodedProgram* encoded_model = NULL;
246 const courgette::Status encode_model_status = Encode(model, &encoded_model);
247 courgette::DeleteAssemblyProgram(model);
248 if (encode_model_status != courgette::C_OK)
251 courgette::SinkStreamSet program_sinks;
252 const courgette::Status write_program_status =
253 courgette::WriteEncodedProgram(encoded_program, &program_sinks);
254 if (write_program_status != courgette::C_OK)
256 courgette::DeleteEncodedProgram(encoded_program);
258 courgette::SinkStreamSet model_sinks;
259 const courgette::Status write_model_status =
260 courgette::WriteEncodedProgram(encoded_model, &model_sinks);
261 if (write_model_status != courgette::C_OK)
263 courgette::DeleteEncodedProgram(encoded_model);
265 courgette::SinkStream empty_sink;
267 courgette::SinkStream* old_stream = model_sinks.stream(i);
268 courgette::SinkStream* new_stream = program_sinks.stream(i);
272 courgette::SourceStream old_source;
273 courgette::SourceStream new_source;
276 courgette::SinkStream patch_stream;
277 courgette::BSDiffStatus status =
278 courgette::CreateBinaryPatch(&old_source, &new_source, &patch_stream);
279 if (status != courgette::OK) Problem("-xxx failed.");
292 courgette::SourceStreamSet sources;
296 courgette::EncodedProgram* encoded = NULL;
297 const courgette::Status read_status = ReadEncodedProgram(&sources, &encoded);
298 if (read_status != courgette::C_OK)
301 courgette::SinkStream sink;
303 const courgette::Status assemble_status = courgette::Assemble(encoded, &sink);
304 if (assemble_status != courgette::C_OK)
316 courgette::SourceStream old_stream;
317 courgette::SourceStream new_stream;
321 courgette::SinkStream patch_stream;
322 courgette::Status status =
323 courgette::GenerateEnsemblePatch(&old_stream, &new_stream, &patch_stream);
325 if (status != courgette::C_OK) Problem("-gen failed.");
333 // We do things a little differently here in order to call the same Courgette
337 courgette::Status status =
338 courgette::ApplyEnsemblePatch(old_file.value().c_str(),
342 if (status == courgette::C_OK)
347 case courgette::C_BAD_ENSEMBLE_MAGIC:
348 Problem("Not a courgette patch");
351 case courgette::C_BAD_ENSEMBLE_VERSION:
355 case courgette::C_BAD_ENSEMBLE_HEADER:
359 case courgette::C_DISASSEMBLY_FAILED:
363 case courgette::C_STREAM_ERROR:
379 if (status == courgette::C_WRITE_OPEN_ERROR)
381 if (status == courgette::C_WRITE_ERROR)
393 courgette::SourceStream old_stream;
394 courgette::SourceStream new_stream;
398 courgette::SinkStream patch_stream;
399 courgette::BSDiffStatus status =
400 courgette::CreateBinaryPatch(&old_stream, &new_stream, &patch_stream);
402 if (status != courgette::OK) Problem("-genbsdiff failed.");
413 courgette::SourceStream old_stream;
414 courgette::SourceStream patch_stream;
418 courgette::SinkStream new_stream;
419 courgette::BSDiffStatus status =
420 courgette::ApplyBinaryPatch(&old_stream, &patch_stream, &new_stream);
422 if (status != courgette::OK) Problem("-applybsdiff failed.");
434 settings.log_file = FILE_PATH_LITERAL("courgette.log");