Difference between revisions of "Truxton child file save"

From truxwiki.com
Jump to navigation Jump to search
(Created page with "Sets the name of this child file object. =Syntax= <syntaxhighlight lang="C"> int truxton_child_file_save( uint64_t child_handle ); </syntaxhighlight> =Parameters= ==<code>ch...")
 
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
Sets the name of this child file object.
+
This will commit the data in the child file object to the database.
 +
It will write a record to the <code><nowiki>[</nowiki>[[File Table|File]]<nowiki>]</nowiki></code> table.
 +
If contents were written to a depot, a record will be inserted into the <code>[Content]</code> table.
 +
If a depot file was created when writing file contents, a record will be inserted into the <code>[Depot]</code> table.
  
 
=Syntax=
 
=Syntax=
<syntaxhighlight lang="C">
+
<source lang="C">
 
int truxton_child_file_save( uint64_t child_handle );
 
int truxton_child_file_save( uint64_t child_handle );
</syntaxhighlight>
+
</source>
  
 
=Parameters=
 
=Parameters=
 
==<code>child_handle</code>==
 
==<code>child_handle</code>==
 
 
The handle created by the [[truxton_child_file_create]] or [[truxton_file_create_child]] call.
 
The handle created by the [[truxton_child_file_create]] or [[truxton_file_create_child]] call.
  
=Ramarks=
+
=Return value=
 +
A non-zero value on success, zero on failure.
  
 +
=Remarks=
 
This API will commit the child file to the database.
 
This API will commit the child file to the database.
 
It will automatically end any [[truxton_child_file_end_write | write]] operation before saving to the database.
 
It will automatically end any [[truxton_child_file_end_write | write]] operation before saving to the database.
 +
Once this call returns, the [[truxton_child_file_get_id]] API will return a valid identifier.
  
 
=Sample=
 
=Sample=
<syntaxhighlight lang="C" highlight="30">
+
<source lang="C" highlight="23">
void add_folder(uint64_t truxton, uint64_t parent_file)
+
void add_folder( uint64_t truxton, uint64_t parent_file )
 
{
 
{
   truxton_start_adding_files(truxton);
+
   truxton_start_adding_files( truxton );
  
   uint64_t child = truxton_child_file_create(truxton);
+
   uint64_t child = truxton_child_file_create( truxton );
  
 
   char id[40];
 
   char id[40];
  
   truxton_file_get_id(parent_file, id, sizeof(id));
+
   truxton_file_get_id( parent_file, id, sizeof(id) );
   truxton_child_file_set_parent_id(child, id);
+
   truxton_child_file_set_parent_id( child, id );
   truxton_child_file_set_type(child, Type_Directory);
+
   truxton_child_file_set_type( child, Type_Directory );
   truxton_child_file_set_name(child, "Custom Exploits Folder");
+
   truxton_child_file_set_name( child, "Custom Exploits Folder" );
 
 
  FILETIME now;
 
 
 
  GetSystemTimeAsFileTime(&now);
 
 
 
  ULARGE_INTEGER ticks;
 
  
   ticks.LowPart = now.dwLowDateTime;
+
   uint64_t now = truxton_time_now();
  ticks.HighPart = now.dwHighDateTime;
 
  
   truxton_child_file_set_created(child, ticks.QuadPart);
+
   truxton_child_file_set_created( child, now );
   truxton_child_file_set_accessed(child, ticks.QuadPart);
+
   truxton_child_file_set_accessed( child, now );
   truxton_child_file_set_modified(child, ticks.QuadPart);
+
   truxton_child_file_set_modified( child, now );
  
   truxton_child_file_set_origin(child, ORIGIN_GENERATED);
+
   truxton_child_file_set_origin( child, ORIGIN_GENERATED );
   truxton_child_file_set_media_id(child, "B57140A0-8E84-4500-B4D5-3606AA8560AA" );
+
   truxton_child_file_set_media_id( child, "B57140A0-8E84-4500-B4D5-3606AA8560AA" );
  
   if ( truxton_child_file_save(child) == 0 )
+
   if ( truxton_child_file_save( child ) == 0 )
 
   {
 
   {
 
       printf( "Failed to add child to Truxton\n" );
 
       printf( "Failed to add child to Truxton\n" );
  }
 
  else
 
  {
 
      truxton_child_file_get_id(child_file, id, sizeof(id));
 
      printf( "Added child id %s\n", id );
 
 
   }
 
   }
  
   truxton_child_file_destroy(child);
+
   truxton_child_file_destroy( child );
 
}
 
}
</syntaxhighlight>
+
</source>

Latest revision as of 02:54, 14 April 2024

This will commit the data in the child file object to the database. It will write a record to the [File] table. If contents were written to a depot, a record will be inserted into the [Content] table. If a depot file was created when writing file contents, a record will be inserted into the [Depot] table.

Syntax

int truxton_child_file_save( uint64_t child_handle );

Parameters

child_handle

The handle created by the truxton_child_file_create or truxton_file_create_child call.

Return value

A non-zero value on success, zero on failure.

Remarks

This API will commit the child file to the database. It will automatically end any write operation before saving to the database. Once this call returns, the truxton_child_file_get_id API will return a valid identifier.

Sample

void add_folder( uint64_t truxton, uint64_t parent_file )
{
   truxton_start_adding_files( truxton );

   uint64_t child = truxton_child_file_create( truxton );

   char id[40];

   truxton_file_get_id( parent_file, id, sizeof(id) );
   truxton_child_file_set_parent_id( child, id );
   truxton_child_file_set_type( child, Type_Directory );
   truxton_child_file_set_name( child, "Custom Exploits Folder" );

   uint64_t now = truxton_time_now();

   truxton_child_file_set_created( child, now );
   truxton_child_file_set_accessed( child, now );
   truxton_child_file_set_modified( child, now );

   truxton_child_file_set_origin( child, ORIGIN_GENERATED );
   truxton_child_file_set_media_id( child, "B57140A0-8E84-4500-B4D5-3606AA8560AA" );

   if ( truxton_child_file_save( child ) == 0 )
   {
      printf( "Failed to add child to Truxton\n" );
   }

   truxton_child_file_destroy( child );
}