/* Open a help file using the help search path. We expect the ".pd" suffix here, even though we have to tear it back off for one of the search attempts. */ void open_via_helppath(const char *name, const char *dir) { char realname[MAXPDSTRING], dirbuf[MAXPDSTRING], *basename; /* make up a silly "dir" if none is supplied */ const char *usedir = (*dir ? dir : "./"); int fd; /* 1. "objectname-help.pd" */ strncpy(realname, name, MAXPDSTRING-10); realname[MAXPDSTRING-10] = 0; if (strlen(realname) > 3 && !strcmp(realname+strlen(realname)-3, ".pd")) realname[strlen(realname)-3] = 0; strcat(realname, "-help.pd"); if ((fd = do_open_via_path(dir, realname, "", dirbuf, &basename, MAXPDSTRING, 0, sys_helppath)) >= 0) goto gotone; /* 2. "help-objectname.pd" */ strcpy(realname, "help-"); strncat(realname, name, MAXPDSTRING-10); realname[MAXPDSTRING-1] = 0; if ((fd = do_open_via_path(dir, realname, "", dirbuf, &basename, MAXPDSTRING, 0, sys_helppath)) >= 0) goto gotone; /* 3. "objectname.pd" */ if ((fd = do_open_via_path(dir, name, "", dirbuf, &basename, MAXPDSTRING, 0, sys_helppath)) >= 0) goto gotone; post("sorry, couldn't find help patch for \"%s\"", name); return; gotone: close (fd); glob_evalfile(0, gensym((char*)basename), gensym(dirbuf)); }
void *libpd_openfile(const char *basename, const char *dirname) { void * retval; sys_lock(); pd_globallock(); retval = (void *)glob_evalfile(NULL, gensym(basename), gensym(dirname)); pd_globalunlock(); sys_unlock(); return retval; }
static void openit(const char *dirname, const char *filename) { char dirbuf[MAXPDSTRING], *nameptr; int fd = open_via_path(dirname, filename, "", dirbuf, &nameptr, MAXPDSTRING, 0); if (fd >= 0) { close (fd); glob_evalfile(0, gensym(nameptr), gensym(dirbuf)); } else error("%s: can't open", filename); }
Patch Instance::createPatch(std::string const& name, std::string const& path) { Patch patch; t_canvas* cnv = nullptr; Pd::lock(); pd_setinstance(reinterpret_cast<t_pdinstance *>(m_ptr)); if(!name.empty() && !path.empty()) { cnv = reinterpret_cast<t_canvas*>(glob_evalfile(NULL, gensym(name.c_str()), gensym(path.c_str()))); cnv->gl_edit = 0; } else if(!name.empty()) { cnv = reinterpret_cast<t_canvas*>(glob_evalfile(NULL, gensym(name.c_str()), gensym(""))); cnv->gl_edit = 0; } if(cnv) { patch = Patch(*this, cnv, name, path); } Pd::unlock(); return patch; }
static void openit(const char *dirname, const char *filename) { char dirbuf[FILENAME_MAX], *nameptr; int fd = open_via_path(dirname, filename, "", dirbuf, &nameptr, FILENAME_MAX, 0); if (fd >= 0) { close (fd); glob_evalfile(0, gensym(nameptr), gensym(dirbuf)); sys_vgui("pdtk_set_current_dir %s\n", filename); //sys_vgui("::pd_menus::update_recentfiles_menu .mbar.file 0\n"); sys_vgui("::pd_guiprefs::update_recentfiles %s 1\n", filename); } else error("%s: can't open", filename); }
static void helplink_doclick(t_helplink *x) { char* objectname = x->x_ulink->s_name; char dirbuf[MAXPDSTRING], *nameptr; int fd = canvas_open(x->x_glist, objectname, "-help.pd", dirbuf, &nameptr, MAXPDSTRING, 0); if (fd < 0) { /* if canvas_open() failed try open_via_helppath() */ open_via_helppath(objectname, canvas_getdir(x->x_glist)->s_name); } else { /* if canvas_open() gave us a filehandle, then we have a helppatch to * open in dirbuf and nameptr, but we don't need the filehandle */ close(fd); glob_evalfile(NULL, gensym(nameptr), gensym(dirbuf)); } }
/* Open a help file using the help search path. We expect the ".pd" suffix here, even though we have to tear it back off for one of the search attempts. */ void open_via_helppath(const char *name, const char *dir) { char realname[FILENAME_MAX], propername[FILENAME_MAX], dirbuf[FILENAME_MAX]; char *basename; /* make up a silly "dir" if none is supplied */ const char *usedir = (*dir ? dir : "./"); int fd; /* 1. "objectname-help.pd" */ strncpy(realname, name, FILENAME_MAX-10); realname[FILENAME_MAX-10] = 0; if (strlen(realname) > 3 && !strcmp(realname+strlen(realname)-3, ".pd")) realname[strlen(realname)-3] = 0; strcat(realname, "-help.pd"); strncpy(propername, realname, FILENAME_MAX); if ((fd = do_open_via_path(dir, realname, "", dirbuf, &basename, FILENAME_MAX, 0, sys_helppath)) >= 0) goto gotone; /* 2. "help-objectname.pd" */ strcpy(realname, "help-"); strncat(realname, name, FILENAME_MAX-10); realname[FILENAME_MAX-1] = 0; if ((fd = do_open_via_path(dir, realname, "", dirbuf, &basename, FILENAME_MAX, 0, sys_helppath)) >= 0) goto gotone_deprecated; /* 3. "objectname.pd" */ if ((fd = do_open_via_path(dir, name, "", dirbuf, &basename, FILENAME_MAX, 0, sys_helppath)) >= 0) goto gotone_deprecated; post("sorry, couldn't find help patch for \"%s\"", name); return; gotone_deprecated: error("'%s' is a deprecated name format for a help patch.\n\tPlease rename to '%s'!", basename, propername); gotone: close (fd); glob_evalfile(0, gensym((char*)basename), gensym(dirbuf)); }
void *libpd_openfile(const char *basename, const char *dirname) { return (void *)glob_evalfile(NULL, gensym(basename), gensym(dirname)); }