1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #include <File.h> 5 #include <Message.h> 6 #include <String.h> 7 8 #include <package/RepositoryInfo.h> 9 10 11 using namespace BPackageKit; 12 13 14 int 15 main(int argc, const char** argv) 16 { 17 if (argc < 5) { 18 fprintf(stderr, "usage: %s <name> <url> <priority> <pkg-count>\n", 19 argv[0]); 20 return 1; 21 } 22 23 BRepositoryInfo repoInfo; 24 repoInfo.SetName(argv[1]); 25 repoInfo.SetURL(argv[2]); 26 repoInfo.SetPriority(atoi(argv[3])); 27 28 BMessage repoInfoArchive; 29 status_t result = repoInfo.Archive(&repoInfoArchive); 30 if (result != B_OK) { 31 fprintf(stderr, "couldn't archive repository-header\n"); 32 return 1; 33 } 34 35 BFile output(argv[1], B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); 36 if ((result = repoInfoArchive.Flatten(&output)) != B_OK) { 37 fprintf(stderr, "couldn't flatten repository-header archive\n"); 38 return 1; 39 } 40 41 int pkgCount = atoi(argv[4]); 42 for (int i = 0; i < pkgCount; ++i) { 43 BMessage pkg('PKGp'); 44 45 BString name = BString("pkg") << i + 1; 46 pkg.AddString("name", name.String()); 47 48 BString majorVersion 49 = BString() << 1 + i % 5 << "." << i % 10; 50 BString minorVersion 51 = BString() << i % 100; 52 pkg.AddString("version", 53 (BString() << majorVersion << "." << minorVersion).String()); 54 55 pkg.AddString("provides", 56 (BString() << name << "-" << majorVersion).String()); 57 if (i % 2 == 1) 58 pkg.AddString("provides", (BString("lib") << name).String()); 59 if (i % 3 != 1) 60 pkg.AddString("provides", (BString("cmd:") << name).String()); 61 62 if (i > 1) { 63 int requiresCount = rand() % 10 % i; 64 for (int r = 0; r < requiresCount; ++r) { 65 int reqIndex = rand() % i; 66 pkg.AddString("requires", 67 (BString("pkg") << reqIndex).String()); 68 } 69 } 70 71 result = pkg.Flatten(&output); 72 if (result != B_OK) { 73 fprintf(stderr, "couldn't flatten pkg message #%d\n", i + 1); 74 return 1; 75 } 76 } 77 78 return 0; 79 } 80