Пример #1
0
static csync_vio_method_handle_t *owncloud_creat(const char *durl, mode_t mode) {

    csync_vio_method_handle_t *handle = owncloud_open(durl, O_CREAT|O_WRONLY|O_TRUNC, mode);

    /* on create, the file needs to be created empty */
    owncloud_write( handle, NULL, 0 );

    return handle;
}
Пример #2
0
static size_t upload_a_file( void **state, const char *src_name, const char *durl ) {

    char buffer[BUFSIZE+1];
    int size;
    char path[256];
    char src_path[256];
    int fh;
    csync_vio_method_handle_t *handle;
    size_t written;
    size_t overall_size = 0;
    csync_stat_t sb;

    /* Create the target path */
    strcpy( path, _credentials.oc_server );
    strcat( path, "/");
    strcat( path, (const char*) *state );
    strcat( path, "/");
    strcat( path, durl );

    handle = owncloud_creat( path, 0644 );
    assert_int_not_equal( handle, NULL );

    strcpy(src_path, TESTFILES_DIR);
    strcat(src_path, src_name);
    fh = open(src_path, O_RDONLY);
    assert_int_not_equal( fh, -1 );

    while( (size = read(fh, buffer, BUFSIZE) )>0 ) {
        buffer[size] = '\0';
        written = owncloud_write( handle, buffer, size );
        assert_int_equal( size, written );
        overall_size += written;
    }
    assert_int_equal( owncloud_close(handle), 0);

    /* stat the local file */
    stat_local_file( &sb, src_path );

    assert_int_equal( overall_size, sb.st_size );

    close(fh);

    return overall_size;
}