netatalk  4.4.0dev
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
afphelper.c File Reference
#include <signal.h>
#include <stdarg.h>
#include "afpclient.h"
#include "afphelper.h"
#include "afpcmd.h"
#include "testhelper.h"

Functions

void illegal_fork (DSI *dsi, char cmd, char *name)
int get_did (CONN *conn, uint16_t vol, int dir, char *name)
int get_fid (CONN *conn, uint16_t vol, int dir, char *name)
uint32_t get_forklen (DSI *dsi, int type)
void write_fork (CONN *conn, uint16_t vol, int dir, char *name, char *txt)
void read_fork (CONN *conn, uint16_t vol, int dir, char *name, int len)
int no_access_folder (uint16_t vol, int did, char *name)
int group_folder (uint16_t vol, int did, char *name)
int read_only_folder (uint16_t vol, int did, char *name)
int read_only_folder_with_file (uint16_t vol, int did, char *name, char *file)
int delete_folder (uint16_t vol, int did, char *name)
int delete_folder_with_file (uint16_t vol, int did, char *name, char *file)
int get_vol_attrib (uint16_t vol)
unsigned int get_vol_free (uint16_t vol)
int not_valid (unsigned int ret, int mac_error, int netatalk_error)
static int error_in_list (unsigned int bitmap, unsigned int error)
static char * bitmap2text (unsigned int bitmap)
int not_valid_bitmap (unsigned int ret, unsigned int bitmap, int netatalk_error)
static void afp_print_prefix (int level, int color)
static void afp_print_postfix (int level, int color)
void afp_printf (int level, int loglevel, int color, const char *fmt,...)
int32_t is_there (CONN *conn, uint16_t volume, int32_t did, char *name)
int delete_directory_tree (CONN *conn, uint16_t volume, uint32_t parent_did, char *dirname)
 depth-first recursively delete a directory tree
void clear_volume (uint16_t vol, CONN *conn)

Variables

int Loglevel = AFP_LOG_INFO

Function Documentation

◆ afp_print_postfix()

void afp_print_postfix ( int level,
int color )
static

◆ afp_print_prefix()

void afp_print_prefix ( int level,
int color )
static

◆ afp_printf()

void afp_printf ( int level,
int loglevel,
int color,
const char * fmt,
... )

◆ bitmap2text()

char * bitmap2text ( unsigned int bitmap)
static

◆ clear_volume()

void clear_volume ( uint16_t vol,
CONN * conn )

◆ delete_directory_tree()

int delete_directory_tree ( CONN * conn,
uint16_t volume,
uint32_t parent_did,
char * dirname )

depth-first recursively delete a directory tree

Algorithm:

  1. Try simple delete (works if directory is empty)
  2. If not empty, get directory ID
  3. Enumerate contents and for each entry:
    • If it's a file: delete it immediately
    • If it's a directory: recurse into it
  4. After all contents are deleted, delete the now-empty directory
Parameters
connAFP connection
volumeVolume ID
parent_didParent directory ID
dirnameDirectory name to delete
Returns
0 on success, -1 on failure

◆ delete_folder()

int delete_folder ( uint16_t vol,
int did,
char * name )

◆ delete_folder_with_file()

int delete_folder_with_file ( uint16_t vol,
int did,
char * name,
char * file )

◆ error_in_list()

int error_in_list ( unsigned int bitmap,
unsigned int error )
static

◆ get_did()

int get_did ( CONN * conn,
uint16_t vol,
int dir,
char * name )

◆ get_fid()

int get_fid ( CONN * conn,
uint16_t vol,
int dir,
char * name )

◆ get_forklen()

uint32_t get_forklen ( DSI * dsi,
int type )

◆ get_vol_attrib()

int get_vol_attrib ( uint16_t vol)

◆ get_vol_free()

unsigned int get_vol_free ( uint16_t vol)

◆ group_folder()

int group_folder ( uint16_t vol,
int did,
char * name )

◆ illegal_fork()

void illegal_fork ( DSI * dsi,
char cmd,
char * name )

◆ is_there()

int32_t is_there ( CONN * conn,
uint16_t volume,
int32_t did,
char * name )

◆ no_access_folder()

int no_access_folder ( uint16_t vol,
int did,
char * name )

◆ not_valid()

int not_valid ( unsigned int ret,
int mac_error,
int netatalk_error )

◆ not_valid_bitmap()

int not_valid_bitmap ( unsigned int ret,
unsigned int bitmap,
int netatalk_error )

◆ read_fork()

void read_fork ( CONN * conn,
uint16_t vol,
int dir,
char * name,
int len )

◆ read_only_folder()

int read_only_folder ( uint16_t vol,
int did,
char * name )

◆ read_only_folder_with_file()

int read_only_folder_with_file ( uint16_t vol,
int did,
char * name,
char * file )

◆ write_fork()

void write_fork ( CONN * conn,
uint16_t vol,
int dir,
char * name,
char * txt )

Variable Documentation

◆ Loglevel

int Loglevel = AFP_LOG_INFO