Ejemplo n.º 1
0
void folder_docopy(t_folder *x, t_symbol *srcin, long argc, t_atom *argv)
{
	t_symbol*	dstin = atom_getsym(argv);
	char		srcname[MAX_PATH_CHARS];
	short		srcpath = 0;
	char		srcfilename[MAX_FILENAME_CHARS];
	char		dstname[MAX_PATH_CHARS];
	short		dstpath = 0;
	char		dstfilename[MAX_FILENAME_CHARS];
	short		newpath = 0;
	char*		tempstr = NULL;
	
	strncpy_zero(srcname, srcin->s_name, MAX_PATH_CHARS);
	path_frompathname(srcname, &srcpath, srcfilename);

	strncpy_zero(dstname, dstin->s_name, MAX_PATH_CHARS);
	tempstr = strrchr(dstname, '/');
	*tempstr = 0;
	tempstr++;
	path_frompathname(dstname, &dstpath, dstfilename);
	if (tempstr)
		strncpy_zero(dstfilename, tempstr, MAX_FILENAME_CHARS);

	if (!srcfilename[0])
		path_copyfolder(srcpath, dstpath, dstfilename, true, &newpath);
	else
		path_copyfile(srcpath, srcfilename, dstpath, dstfilename);
	object_obex_dumpout(x, _sym_bang, 0, NULL);
}
Ejemplo n.º 2
0
void cc_open_editor(t_cc *x){
	// this should be done only if the file was actually modified--otherwise, just use the buffer

	//post("%s ofile: %s", __PRETTY_FUNCTION__, x->ofile_fullpath);
	FILE *fp = fopen(x->cfile_fullpath, "r");
	if(fp){
		x->code_len = fread(x->code_buf, sizeof(char), x->code_buf_len, fp);
	}else{
		x->code_len = cc_write_template(x, x->code_buf);
	}
	fclose(fp);
	if(x->ed){
		object_method(x->ed, gensym("settext"), x->code_buf, gensym("utf-8"));
	}else{
		x->ed = (t_object *)object_new(CLASS_NOBOX, gensym("jed"), (t_object *)x, 0);
		if(x->have_valid_filename){
			short path;
			char filename[MAX_FILENAME_CHARS];
			if(path_frompathname(x->cfile_fullpath, &path, filename)){
				error("cc: couldn't find %s", x->cfile_fullpath);
				return;
			}
			object_method(x->ed, gensym("filename"), filename, path);
		}else{
			object_attr_setsym(x->ed, gensym("title"), gensym("Untitled"));
		}
		object_method(x->ed, gensym("settext"), x->code_buf, gensym("utf-8"));
	}

	object_attr_setchar(x->ed, gensym("visible"), 1);
}
Ejemplo n.º 3
0
void testdb_setup(t_testdb *d)
{
	if (!d->d_db) {
		short			path = packages_getpackagepath("testpackage");
		char			fullpath[MAX_PATH_CHARS];
		short			apppath = path_getapppath();
		char			appfullpath[MAX_PATH_CHARS];
		unsigned long	appfullpathlen;
		int				i;
		char			dbfilename[MAX_PATH_CHARS];
		t_db_result		*dbresult = NULL;
		
		path_topathname(apppath, "", appfullpath);
		appfullpathlen = strlen(appfullpath);
		for (i=0; i<appfullpathlen; i++) {
			if (appfullpath[i] == ':' || appfullpath[i] == '/')
				appfullpath[i] ='-';
		}
		strncpy_zero(dbfilename, appfullpath, MAX_PATH_CHARS);
		strncat_zero(dbfilename, "--maxtestresults.db3", MAX_PATH_CHARS);
		
		path_topathname(path, "", fullpath);
		strncat_zero(fullpath, "/", MAX_PATH_CHARS);
		strncat_zero(fullpath, dbfilename, MAX_PATH_CHARS);
		db_open(gensym("unittestdb"), fullpath, &d->d_db);
		
		// cache the fullpath so it can be requested from the outside world
		{
			short apath;
			char afilename[MAX_FILENAME_CHARS];
			path_frompathname(fullpath, &apath, afilename);
			path_toabsolutesystempath(apath, afilename, g_dbpath);
		}

		db_query(d->d_db, &dbresult, "SELECT name FROM sqlite_master WHERE type='table' AND name='tests'");
		if (!db_result_numrecords(dbresult)) {
			db_query_table_new(d->d_db, "tests");
			db_query_table_addcolumn(d->d_db, "tests", "test_name",		"VARCHAR(512)", 0);
			db_query_table_addcolumn(d->d_db, "tests", "test_start",	"DATETIME", 0);
			db_query_table_addcolumn(d->d_db, "tests", "test_finish",	"DATETIME", 0);

			db_query_table_new(d->d_db, "assertions");
			db_query_table_addcolumn(d->d_db, "assertions", "test_id_ext",		"INTEGER", 0);
			db_query_table_addcolumn(d->d_db, "assertions", "assertion_name",	"VARCHAR(512)", 0);
			db_query_table_addcolumn(d->d_db, "assertions", "assertion_value",	"VARCHAR(512)", 0);
			db_query_table_addcolumn(d->d_db, "assertions", "assertion_data",	"VARCHAR(512)", 0);
			db_query_table_addcolumn(d->d_db, "assertions", "assertion_start",	"DATETIME", 0);
			db_query_table_addcolumn(d->d_db, "assertions", "assertion_finish",	"DATETIME", 0);
			db_query_table_addcolumn(d->d_db, "assertions", "assertion_tags",	"VARCHAR(512)", 0);

			db_query_table_new(d->d_db, "logs");
			db_query_table_addcolumn(d->d_db, "logs", "test_id_ext",	"INTEGER", 0);
			db_query_table_addcolumn(d->d_db, "logs", "text",			"VARCHAR(512)", 0);
			db_query_table_addcolumn(d->d_db, "logs", "timestamp",		"DATETIME", 0);
		}
		object_free(dbresult);
	}
}
Ejemplo n.º 4
0
void folder_lookup(t_folder *x)
{
	short path,err;
	char sourcename[512],filename[256];
	
	if (x->f_input) {
		strcpy(sourcename,x->f_input->s_name);
		err = path_frompathname(sourcename, &path, filename);
		if (err || filename[0]) {
			object_error((t_object *)x, "%s: not a folder",x->f_input->s_name);
			x->f_path = 0;
		}
		else {
			x->f_path = path;
		}
	}
}
Ejemplo n.º 5
0
void filecontainer_gettemppath(t_filecontainer *x)
{
    char			temppath[512];
    char			outpath[512];
    t_symbol		*unique = symbol_unique();
    OSErr			err = 0;
#ifdef MAC_VERSION
    FSRef			folderref, newref;
    UniChar			uni[512];
    unsigned short	i;

    err = FSFindFolder(kUserDomain, kTemporaryFolderType, kCreateFolder, &folderref);
    err = FSRefMakePath(&folderref, (UInt8 *)temppath, 511);
    strcat(temppath, "/");
#else // WIN_VERSION
    GetTempPath(512, (LPSTR)temppath);
#endif
    strcat(temppath, unique->s_name);

#ifdef MAC_VERSION
    for(i=0; i<strlen(unique->s_name); i++)					// Convert from 8-bit ASCII to 16-bit Unicode
        uni[i] = unique->s_name[i];

    err = FSCreateDirectoryUnicode(&folderref, strlen(unique->s_name), uni,
                                   kFSCatInfoNone, NULL, &newref, NULL, NULL);
#else // WIN_VERSION
    CreateDirectory((LPCSTR)temppath, NULL);
#endif

    path_nameconform(temppath, outpath, PATH_STYLE_MAX, PATH_TYPE_ABSOLUTE);
    x->temp_fullpath = gensym(outpath);
    path_frompathname(outpath, &x->temp_path, temppath);	// re-using temppath since we don't need it anymore

    // Add to the searchpath
    path_addnamed(SEARCH_PATH, outpath, 1, 0);
}
Ejemplo n.º 6
0
void folder_domakedir(t_folder *x, t_symbol *s, long argc, t_atom *argv)
{
	short	path = 0;				// parent folder, which we supply
	short	createdPath = 0;		// the new folder after it is created
	char	*folderName;			// the name of the new folder
	char	fullpath[4096];
	short	err = 0;
	char	temp[256];
	
	path_nameconform(s->s_name, fullpath, PATH_STYLE_MAX, PATH_TYPE_ABSOLUTE);
	folderName = strrchr(fullpath, '/');
	
	if (folderName) {
		*folderName = 0;
		folderName++;
		
		err = path_frompathname(fullpath, &path, temp);
		if (!err)
			err = path_createfolder(path, folderName, &createdPath);
		if (err)
			object_error((t_object*)x, "error %hd trying to create folder", err);
	}
	object_obex_dumpout(x, _sym_bang, 0, NULL);
}
Ejemplo n.º 7
0
void *cc_new(t_symbol *msg, short argc, t_atom *argv){
	t_cc *x;

	if(x = (t_cc *)object_alloc(cc_class)){
#if defined(CC_JBOX)
		t_dictionary *d = NULL; 
		long boxflags; 

		if(!(d = object_dictionaryarg(argc, argv))){ 
			return NULL; 
		} 
    
		boxflags = 0 
			| JBOX_DRAWFIRSTIN 
			//| JBOX_NODRAWBOX
			| JBOX_DRAWINLAST
			//| JBOX_TRANSPARENT  
			//      | JBOX_NOGROW
			//| JBOX_GROWY
			| JBOX_GROWBOTH
			//      | JBOX_HILITE
			| JBOX_BACKGROUND
			| JBOX_DRAWBACKGROUND
			//      | JBOX_NOFLOATINSPECTOR
			//      | JBOX_MOUSEDRAGDELTA
			//      | JBOX_TEXTFIELD
			;
		jbox_new((t_jbox *)x, boxflags, argc, argv); 
#if defined(CC_MSP)
		x->ob.z_box.b_firstin = (void *)x;
#else
 		x->ob.b_firstin = (void *)x; 
#endif
#endif
		x->ht = (t_hashtab *)hashtab_new(0);
		hashtab_flags(x->ht, OBJ_FLAG_DATA);

		x->ok_to_compile = 1;
		x->compiling = 0;
		x->have_valid_filename = 0;

		x->build_path_is_tmp = 1;

		x->ed = NULL;
		x->code_buf_len = BUFSIZE;
		x->code_buf = (char *)calloc(BUFSIZE, sizeof(char));

		x->cfile_path = (char *)calloc(MAX_FILENAME_CHARS, sizeof(char));
		x->build_path = (char *)calloc(MAX_FILENAME_CHARS, sizeof(char));
		x->basename = (char *)calloc(MAX_FILENAME_CHARS, sizeof(char));

		x->cfile_fullpath = (char *)calloc(MAX_PATH_CHARS, sizeof(char));
		x->ofile_fullpath = (char *)calloc(MAX_PATH_CHARS, sizeof(char));
		x->dfile_fullpath = (char *)calloc(MAX_PATH_CHARS, sizeof(char));
		x->logfile_fullpath = (char *)calloc(MAX_PATH_CHARS, sizeof(char));

		x->path_to_maxsdk = gensym("");
		x->user_obj = (char *)calloc(OBJSIZE, sizeof(char));

		x->verbose = 0;

		long ic = (long)(ps_cc_instance_count->s_thing);
		ic += 1;
		ps_cc_instance_count->s_thing = (void *)ic;

#if defined(CC_MSP) && defined(CC_JBOX)
		sprintf(x->basename, "cc_jbox~_%ld", (long)ps_cc_instance_count->s_thing);
#elif defined(CC_MSP)
		sprintf(x->basename, "cc~_%ld", (long)ps_cc_instance_count->s_thing);
#elif defined(CC_JBOX)
		sprintf(x->basename, "cc_jbox_%ld", (long)ps_cc_instance_count->s_thing);
#else
		sprintf(x->basename, "cc_%ld", (long)ps_cc_instance_count->s_thing);
#endif

		short tmpdir;
		sprintf(x->build_path, "/private/var/tmp");
		char fn[512];
		path_frompathname(x->build_path, &tmpdir, fn);
		x->build_path_id = tmpdir;

		//sprintf(x->cfile_fullpath, "%s/%s.c", x->build_path, x->basename);
		sprintf(x->ofile_fullpath, "%s/%s.o", x->build_path, x->basename);
		sprintf(x->dfile_fullpath, "%s/%s.dylib", x->build_path, x->basename);
		sprintf(x->logfile_fullpath, "%s/%s.log", x->build_path, x->basename);

		x->code_len = cc_write_template(x, x->code_buf);

		x->function_names = (t_symbol **)calloc(128, sizeof(t_symbol *));

		x->ninlets = 1;
		x->noutlets = 1;

		x->def_cflags = (char *)calloc(4096, sizeof(char));
		x->def_ldflags = (char *)calloc(4096, sizeof(char));

		char *sdk = x->path_to_maxsdk->s_name;

#if defined(CC_MSP)
		sprintf(x->def_cflags, CFLAGS, sdk, sdk, sdk, sdk, sdk);
		sprintf(x->def_ldflags, LDFLAGS, sdk, sdk);
#else
		sprintf(x->def_cflags, CFLAGS, sdk, sdk, sdk);
		sprintf(x->def_ldflags, LDFLAGS, sdk);
#endif

		x->user_cflags = gensym("");
		x->user_ldflags = gensym("");

#ifdef CC_JBOX
		x->user_paint = NULL;
#endif

#if !defined(CC_JBOX)
		attr_args_process(x, argc, argv);
#else
		attr_dictionary_process(x, d);
#endif

		int i;
#if defined(CC_MSP)
#if defined(CC_JBOX)
		dsp_setupjbox((t_pxjbox *)x, x->nsiginlets);
#else
		dsp_setup((t_pxobject *)x, x->nsiginlets);
#endif
		for(i = 0; i < x->nsigoutlets; i++){
			outlet_new((t_object *)x, "signal");
		}
		x->svin = (t_float **)calloc(x->nsiginlets, sizeof(t_float *));
		x->svout = (t_float **)calloc(x->nsigoutlets, sizeof(t_float *));
#endif
		x->proxies = (void **)calloc(x->ninlets - 1, sizeof(void *));
		for(i = 0; i < x->ninlets - 1; i++){
			x->proxies[0] = proxy_new((t_object *)x, x->ninlets - (i + 1), &(x->inlet));
		}
#if !defined(CC_MSP)
		x->outlets = (void **)calloc(x->noutlets, sizeof(void *));
		for(i = x->noutlets - 1; i >= 0; i--){
			x->outlets[i] = outlet_new((t_object *)x, NULL);
		}
#endif

		x->handle = NULL;

		object_attach_byptr_register(x, x, CLASS_BOX);

#ifdef CC_JBOX
		jbox_ready((t_jbox *)x);
#endif
		return x;
	}
	return NULL;
}