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); }
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); }
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); } }
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; } } }
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); }
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); }
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; }