char* pakfire_remove_trailing_newline(char* str);
-const char* pakfire_hostname(void);
-
int pakfire_read_file_into_buffer(FILE* f, char** buffer, size_t* len);
#define pakfire_hexlify(digest) __pakfire_hexlify(digest, sizeof(digest))
int pakfire_packager_create(struct pakfire_packager** packager,
struct pakfire* pakfire, struct pakfire_package* pkg) {
- struct pakfire_packager* p = calloc(1, sizeof(*p));
- if (!p)
- return ENOMEM;
-
+ struct pakfire_packager* p = NULL;
+ char hostname[HOST_NAME_MAX];
int r = 1;
+ // Allocate the packager object
+ p = calloc(1, sizeof(*p));
+ if (!p)
+ return -errno;
+
// Save creation time
p->time_created = time(NULL);
pakfire_package_set_string(pkg, PAKFIRE_PKG_DISTRO, tag);
+ // Fetch the hostname
+ r = gethostname(hostname, sizeof(hostname));
+ if (r) {
+ ERROR(p->pakfire, "Could not determine the hostname: %m\n");
+ goto ERROR;
+ }
+
// Set build host
- pakfire_package_set_string(pkg, PAKFIRE_PKG_BUILD_HOST, pakfire_hostname());
+ r = pakfire_package_set_string(pkg, PAKFIRE_PKG_BUILD_HOST, hostname);
+ if (r) {
+ ERROR_ERRNO(p->pakfire, r, "Could not set the hostname: %m\n");
+ goto ERROR;
+ }
// Set build time
pakfire_package_set_num(pkg, PAKFIRE_PKG_BUILD_TIME, p->time_created);
goto ERROR;
}
- *packager = p;
-
- return 0;
+ // Return a reference
+ *packager = pakfire_packager_ref(p);
ERROR:
- pakfire_packager_free(p);
+ if (p)
+ pakfire_packager_unref(p);
return r;
}
return str;
}
-const char* pakfire_hostname(void) {
- static __thread char hostname[256];
-
- int r = gethostname(hostname, sizeof(hostname));
- if (r)
- return NULL;
-
- return hostname;
-}
-
int pakfire_read_file_into_buffer(FILE* f, char** buffer, size_t* len) {
if (!f)
return -EBADF;