#include <pakfire/parser.h>
#include <pakfire/path.h>
#include <pakfire/problem.h>
-#include <pakfire/pty.h>
#include <pakfire/repo.h>
#include <pakfire/scriptlet.h>
#include <pakfire/solution.h>
if (r < 0)
goto ERROR;
- struct pakfire_pty_filelist input = {
+ struct pakfire_jail_filelist input = {
.filelist = perlfiles,
};
// Find provides
r = pakfire_build_run_script(build, "perl.prov", args,
- pakfire_pty_send_filelist, &input, pakfire_build_add_perl_provides, pkg);
+ pakfire_jail_send_filelist, &input, pakfire_build_add_perl_provides, pkg);
if (r < 0)
goto ERROR;
// Find requires
r = pakfire_build_run_script(build, "perl.req", args,
- pakfire_pty_send_filelist, &input, pakfire_build_add_perl_requires, pkg);
+ pakfire_jail_send_filelist, &input, pakfire_build_add_perl_requires, pkg);
if (r < 0)
goto ERROR;
return length;
}
+
+ssize_t pakfire_jail_send_filelist(struct pakfire_ctx* ctx,
+ void* data, char* buffer, size_t length) {
+ struct pakfire_jail_filelist* input = data;
+ struct pakfire_file* file = NULL;
+ int r;
+
+ // If there is any path data left, we send that first
+ if (input->p) {
+ // How much data do we have left?
+ size_t l = strlen(input->p);
+
+ // Cap the length of the buffer
+ if (l < length)
+ length = l;
+
+ memcpy(buffer, input->p, length);
+
+ // If we could not send all data, we will move the pointer forward
+ if (l > length)
+ input->p += length;
+
+ // If we have sent all data, we reset the pointer
+ else if (l == length)
+ input->p = NULL;
+
+ return length;
+ }
+
+ // Read the next file
+ file = pakfire_filelist_get(input->filelist, input->i++);
+
+ // If we could not fetch a file, we have reached the end of the list
+ if (!file) {
+ // Reset the counter so we can run again
+ input->i = 0;
+
+ return 0;
+ }
+
+ // Fetch the path
+ const char* path = pakfire_file_get_path(file);
+ if (!path) {
+ r = -EINVAL;
+ goto ERROR;
+ }
+
+ // Copy the path to the buffer
+ r = pakfire_string_format(input->buffer, "%s\n", path);
+ if (r < 0)
+ goto ERROR;
+
+ // Set the pointer to the start
+ input->p = input->buffer;
+
+ // Free the file
+ pakfire_file_unref(file);
+
+ // Send the buffer
+ return pakfire_jail_send_filelist(ctx, input, buffer, length);
+
+ERROR:
+ if (file)
+ pakfire_file_unref(file);
+
+ return r;
+}
ssize_t pakfire_jail_send_buffer(struct pakfire_ctx* ctx,
void* data, char* buffer, size_t length);
+// Stream a filelist
+
+struct pakfire_jail_filelist {
+ struct pakfire_filelist* filelist;
+ size_t i;
+
+ // Buffer for the path
+ char buffer[PATH_MAX];
+ const char* p;
+};
+
+ssize_t pakfire_jail_send_filelist(struct pakfire_ctx* ctx,
+ void* data, char* buffer, size_t length);
+
#endif /* PAKFIRE_JAIL_H */
return 0;
}
-
-ssize_t pakfire_pty_send_filelist(struct pakfire_ctx* ctx,
- void* data, char* buffer, size_t length) {
- struct pakfire_pty_filelist* input = data;
- struct pakfire_file* file = NULL;
- int r;
-
- // If there is any path data left, we send that first
- if (input->p) {
- // How much data do we have left?
- size_t l = strlen(input->p);
-
- // Cap the length of the buffer
- if (l < length)
- length = l;
-
- memcpy(buffer, input->p, length);
-
- // If we could not send all data, we will move the pointer forward
- if (l > length)
- input->p += length;
-
- // If we have sent all data, we reset the pointer
- else if (l == length)
- input->p = NULL;
-
- return length;
- }
-
- // Read the next file
- file = pakfire_filelist_get(input->filelist, input->i++);
-
- // If we could not fetch a file, we have reached the end of the list
- if (!file) {
- // Reset the counter so we can run again
- input->i = 0;
-
- return 0;
- }
-
- // Fetch the path
- const char* path = pakfire_file_get_path(file);
- if (!path) {
- r = -EINVAL;
- goto ERROR;
- }
-
- // Copy the path to the buffer
- r = pakfire_string_format(input->buffer, "%s\n", path);
- if (r < 0)
- goto ERROR;
-
- // Set the pointer to the start
- input->p = input->buffer;
-
- // Free the file
- pakfire_file_unref(file);
-
- // Send the buffer
- return pakfire_pty_send_filelist(ctx, input, buffer, length);
-
-ERROR:
- if (file)
- pakfire_file_unref(file);
-
- return r;
-}
int pakfire_pty_open(struct pakfire_pty* pty);
-// Stream a filelist
-
-struct pakfire_pty_filelist {
- struct pakfire_filelist* filelist;
- size_t i;
-
- // Buffer for the path
- char buffer[PATH_MAX];
- const char* p;
-};
-
-ssize_t pakfire_pty_send_filelist(struct pakfire_ctx* ctx,
- void* data, char* buffer, size_t length);
-
#endif /* PAKFIRE_PTY_H */