19 typedef struct _folder {
24 void *folder_new(t_symbol *msg,
short argc, t_atom *argv);
25 void folder_assist(t_folder *x,
void *b,
long msg,
long arg,
char *dst);
26 void folder_makedir(t_folder *x, t_symbol *path);
27 void folder_copy(t_folder *x, t_symbol *srcpath, t_symbol *dstpath);
32 t_class *folder_class;
37 int JAMOMA_EXPORT_MAXOBJ
main(
void)
40 common_symbols_init();
42 t_class *c = class_new(
"j.folder",(method)folder_new, (method)0L,
sizeof(t_folder), (method)0L, A_GIMME, 0);
44 class_addmethod(c, (method)folder_makedir,
"make", A_SYM, 0);
45 class_addmethod(c, (method)folder_assist,
"assist", A_CANT, 0);
46 class_addmethod(c, (method)stdinletinfo,
"inletinfo",A_CANT, 0);
47 class_addmethod(c, (method)folder_copy,
"copy", A_SYM, A_SYM, 0);
50 class_register(CLASS_BOX, c);
60 void *folder_new(t_symbol *msg,
short argc, t_atom *argv)
64 x = (t_folder *)object_alloc(folder_class);
66 object_obex_store((
void *)x, _sym_dumpout, (
object *)outlet_new(x,NULL));
68 attr_args_process(x,argc,argv);
79 void folder_assist(t_folder *x,
void *b,
long msg,
long arg,
char *dst)
82 strcpy(dst,
"(int/symbol/list) Input");
85 case 0: strcpy(dst,
"dumpout");
break;
92 void folder_domakedir(t_folder *x, t_symbol *s,
long argc, t_atom *argv)
95 short createdPath = 0;
101 path_nameconform(s->s_name, fullpath, PATH_STYLE_MAX, PATH_TYPE_ABSOLUTE);
102 folderName = strrchr(fullpath,
'/');
108 err = path_frompathname(fullpath, &path, temp);
110 err = path_createfolder(path, folderName, &createdPath);
112 object_error((t_object*)x,
"error %hd trying to create folder", err);
114 object_obex_dumpout(x, _sym_bang, 0, NULL);
117 void folder_makedir(t_folder *x, t_symbol *path)
119 defer(x, (method)folder_domakedir, path, 0, 0);
123 void folder_docopy(t_folder *x, t_symbol *srcin,
long argc, t_atom *argv)
125 t_symbol* dstin = atom_getsym(argv);
126 char srcname[MAX_PATH_CHARS];
128 char srcfilename[MAX_FILENAME_CHARS];
129 char dstname[MAX_PATH_CHARS];
131 char dstfilename[MAX_FILENAME_CHARS];
133 char* tempstr = NULL;
135 strncpy_zero(srcname, srcin->s_name, MAX_PATH_CHARS);
136 path_frompathname(srcname, &srcpath, srcfilename);
138 strncpy_zero(dstname, dstin->s_name, MAX_PATH_CHARS);
139 tempstr = strrchr(dstname,
'/');
142 path_frompathname(dstname, &dstpath, dstfilename);
144 strncpy_zero(dstfilename, tempstr, MAX_FILENAME_CHARS);
147 path_copyfolder(srcpath, dstpath, dstfilename,
true, &newpath);
149 path_copyfile(srcpath, srcfilename, dstpath, dstfilename);
150 object_obex_dumpout(x, _sym_bang, 0, NULL);
153 void folder_copy(t_folder *x, t_symbol *srcpath, t_symbol *dstpath)
157 atom_setsym(&a, dstpath);
158 defer(x, (method)folder_docopy, srcpath, 1, &a);
int JAMOMA_EXPORT_MAXOBJ main(void)
Set up this class as a Max external the first time an object of this kind is instantiated.