[PD-cvs] externals/hcs split_path.c, NONE, 1.1 split_path-help.pd, NONE, 1.1 TODO, 1.4, 1.5 folder_list.c, 1.8, 1.9

Hans-Christoph Steiner eighthave at users.sourceforge.net
Sun Apr 9 01:48:40 CEST 2006


Update of /cvsroot/pure-data/externals/hcs
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28410

Modified Files:
	TODO folder_list.c 
Added Files:
	split_path.c split_path-help.pd 
Log Message:
wrote [strip_path] to separate path from filename, and to handle filenames without paths properly; added instance counters so that the version is only displayed on the first instantiation

Index: folder_list.c
===================================================================
RCS file: /cvsroot/pure-data/externals/hcs/folder_list.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** folder_list.c	27 Mar 2006 03:16:14 -0000	1.8
--- folder_list.c	8 Apr 2006 23:48:38 -0000	1.9
***************
*** 37,40 ****
--- 37,42 ----
  static char *version = "$Revision$";
  
+ t_int folder_list_instance_count;
+ 
  #define DEBUG(x)
  //#define DEBUG(x) x 
***************
*** 164,169 ****
  	t_folder_list *x = (t_folder_list *)pd_new(folder_list_class);
  	
! 	post("[folder_list] %s",version);  
! 	post("\twritten by Hans-Christoph Steiner <hans at at.or.at>");
  	/* TODO set current dir of patch as default */
  #ifdef _WIN32
--- 166,176 ----
  	t_folder_list *x = (t_folder_list *)pd_new(folder_list_class);
  	
! 	if(!folder_list_instance_count) 
! 	{
! 		post("[folder_list] %s",version);  
! 		post("\twritten by Hans-Christoph Steiner <hans at at.or.at>");
! 	}
! 	folder_list_instance_count++;
! 
  	/* TODO set current dir of patch as default */
  #ifdef _WIN32

Index: TODO
===================================================================
RCS file: /cvsroot/pure-data/externals/hcs/TODO,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** TODO	26 Mar 2006 23:48:04 -0000	1.4
--- TODO	8 Apr 2006 23:48:38 -0000	1.5
***************
*** 1,3 ****
--- 1,5 ----
  
+ - rename [folder_list] to [file/match] and make other file lib objects
+   - make [file/match] handle lists of patterns
  
  - write [version] object

--- NEW FILE: split_path-help.pd ---
#N canvas 0 22 458 308 10;
#X obj 111 141 split_path;
#X symbolatom 111 201 0 0 0 3 path - -;
#X symbolatom 175 165 0 0 0 3 filename - -;
#X msg 80 43 symbol just-a-file.pd;
#X msg 108 71 symbol /path/to/a/file;
#X obj 95 161 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 159 160 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X connect 0 0 1 0;
#X connect 0 0 5 0;
#X connect 0 1 2 0;
#X connect 0 1 6 0;
#X connect 3 0 0 0;
#X connect 4 0 0 0;

--- NEW FILE: split_path.c ---
/* (C) Guenter Geiger <geiger at epy.co.at> */

/* I started with stripdir.c and turned it into split_path.c <hans at at.or.at> */

#include <m_pd.h>
#include <string.h>
#include <sys/param.h>

#ifdef _MSC_VER
#pragma warning( disable : 4244 )
#pragma warning( disable : 4305 )
#endif

static char *version = "$Revision: 1.1 $";

t_int strip_path_instance_count;

/* ------------------------ split_path ----------------------------- */

static t_class *split_path_class;

typedef struct _split_path
{
    t_object   x_obj;
	t_outlet   *x_path_outlet;
	t_outlet   *x_filename_outlet;
} t_split_path;


void split_path_symbol(t_split_path *x, t_symbol *s)
{
	int length = strlen(s->s_name);
	char path_buffer[MAXPATHLEN] = "";
		
	while (length--)
		if (*(s->s_name + length) == '/') 
			break;
	if (length < MAXPATHLEN)
		outlet_symbol(x->x_filename_outlet,gensym(s->s_name + length + 1));
	else 
		error("[split_path] filename name too long. The limit is %d characters",MAXPATHLEN);
	while (length > 0)
	{
		length--;
		if(*(s->s_name + length) != '/') break;
	}
	if (length < MAXPATHLEN)
	{
		strncpy(path_buffer, s->s_name, length + 1);
		outlet_symbol(x->x_path_outlet,gensym(path_buffer));
	}
	else
	{
		error("[split_path] path name too long. The limit is %d characters",MAXPATHLEN);
	}
}

static void *split_path_new()
{
    t_split_path *x = (t_split_path *)pd_new(split_path_class);
	x->x_path_outlet = (t_outlet *)outlet_new(&x->x_obj, &s_symbol);
	x->x_filename_outlet = (t_outlet *)outlet_new(&x->x_obj, &s_symbol);
	if(!strip_path_instance_count) 
	{
		post("[strip_path] %s",version);  
		post("\twritten by Hans-Christoph Steiner <hans at at.or.at>");
	}
	strip_path_instance_count++;
	return (x);
}

void split_path_setup(void)
{
    split_path_class = class_new(gensym("split_path"), (t_newmethod)split_path_new, 0,
				sizeof(t_split_path), 0,0);
    class_addsymbol(split_path_class,split_path_symbol);
}







More information about the Pd-cvs mailing list