aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
{
+ fprintf(stderr, "Couldn't open %s\n", out_path);
+ err = -EACCES;
+ goto err_close_seama;
+ }
+
+ bytes = fread(&hdr, 1, sizeof(hdr), seama);
+ if (bytes != sizeof(hdr)) {
+ fprintf(stderr, "Couldn't read %s header\n", seama_path);
+ err = -EIO;
+ goto err_close_out;
+ }
+ metasize = be16_to_cpu(hdr.metasize);
+
+ fseek(seama, metasize, SEEK_CUR);
+
+ oseama_extract_entity(seama, out);
+
+err_close_out:
+ fclose(out);
+err_close_seama:
+ fclose(seama);
+out:
+ return err;
+}
+
+/**************************************************
* Start
**************************************************/
@@ -407,6 +534,11 @@ static void usage() {
printf("\t-m meta\t\t\t\tmeta into to put in header\n");
printf("\t-f file\t\t\t\tappend content from file\n");
printf("\t-b offset\t\t\tappend zeros till reaching absolute offset\n");
+ printf("\n");
+ printf("Extract from Seama seal (container):\n");
+ printf("\toseama extract <file> [options]\n");
+ printf("\t-e\t\t\t\tindex of entity to extract\n");
+ printf("\t-o file\t\t\t\toutput file\n");
}
int main(int argc, char **argv) {
@@ -415,6 +547,8 @@ int main(int argc, char **argv) {
return oseama_info(argc, argv);
else if (!strcmp(argv[1], "entity"))
return oseama_entity(argc, argv);
+ else if (!strcmp(argv[1], "extract"))
+ return oseama_extract(argc, argv);
}
usage();