aboutsummaryrefslogtreecommitdiff
path: root/packages/patches
diff options
context:
space:
mode:
Diffstat (limited to 'packages/patches')
-rw-r--r--packages/patches/darwin/darwin_dlopen.patch65
-rw-r--r--packages/patches/extended-help-menu.patch298
2 files changed, 279 insertions, 84 deletions
diff --git a/packages/patches/darwin/darwin_dlopen.patch b/packages/patches/darwin/darwin_dlopen.patch
new file mode 100644
index 00000000..a93ef7ed
--- /dev/null
+++ b/packages/patches/darwin/darwin_dlopen.patch
@@ -0,0 +1,65 @@
+Index: s_loader.c
+===================================================================
+RCS file: /cvsroot/pure-data/pd/src/s_loader.c,v
+retrieving revision 1.4
+diff -u -w -r1.4 s_loader.c
+--- s_loader.c 6 Sep 2004 20:20:35 -0000 1.4
++++ s_loader.c 26 Nov 2005 00:27:11 -0000
+@@ -2,6 +2,9 @@
+ * For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
+
++#ifdef __APPLE__
++#define DL_OPEN
++#endif
+ #ifdef DL_OPEN
+ #include <dlfcn.h>
+ #endif
+@@ -13,7 +16,7 @@
+ #include <io.h>
+ #include <windows.h>
+ #endif
+-#ifdef MACOSX
++#ifdef MACOSX10.2
+ #include <mach-o/dyld.h>
+ #endif
+ #include <string.h>
+@@ -90,7 +93,7 @@
+ if (lastdot = strrchr(nameptr, '.'))
+ *lastdot = 0;
+
+-#ifdef MACOSX
++#ifdef MACOSX10.2
+ strcpy(symname, "_");
+ strcat(symname, nameptr);
+ #else
+@@ -122,7 +125,7 @@
+ }
+ makeout = (t_xxx)GetProcAddress(ntdll, symname);
+ #endif
+-#ifdef MACOSX
++#ifdef MACOSX10.2
+ {
+ NSObjectFileImage image;
+ void *ret;
+@@ -134,8 +137,18 @@
+ return 0;
+ }
+ ret = NSLinkModule( image, filename,
+- NSLINKMODULE_OPTION_BINDNOW + NSLINKMODULE_OPTION_PRIVATE);
+-
++ NSLINKMODULE_OPTION_BINDNOW |
++ //NSLINKMODULE_OPTION_PRIVATE |
++ NSLINKMODULE_OPTION_RETURN_ON_ERROR);
++
++ if (ret == NULL) {
++ int err;
++ const char *fname, *errt;
++ NSLinkEditErrors c;
++ NSLinkEditError(&c, &err, &fname, &errt);
++ post("link error %d %s %s", err, fname, errt);
++ return 0;
++ }
+ s = NSLookupSymbolInModule(ret, symname);
+
+ if (s)
diff --git a/packages/patches/extended-help-menu.patch b/packages/patches/extended-help-menu.patch
index 0cabfeaa..192374a5 100644
--- a/packages/patches/extended-help-menu.patch
+++ b/packages/patches/extended-help-menu.patch
@@ -1,38 +1,136 @@
Index: u_main.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
---- pd-0.38-4/src/u_main.tk Sun Feb 20 20:03:36 2005
-+++ u_main.tk Wed Nov 16 00:33:02 2005
-@@ -374,22 +374,41 @@
- set help_directory $pd_guidir/doc
- set help_top_directory $pd_guidir/doc
-
-+################## generate_menu_doc_link #########################
-+# This procedure generates a temporary mirror of the documentation directory
-+# in /tmp so that it can be opened from the Help->Pure Documentation... menu
-+# under Mac OS X. It is meant to be run at startup.
-+# Damn you Apple and your "hide stuff from the user" "features".
-+# <hans@at.or.at.>
-+proc generate_menu_doc_link {} {
-+ global help_directory
-+
-+ regsub -all "/" $help_directory "." help_directory_alias
-+ set help_directory_alias /tmp/$help_directory_alias
-+ set help_directory_tmpdir $help_directory_alias/doc
-+ # if something other than a directory exists, delete it
-+ if [file exists $help_directory_alias] {
-+ file delete -force -- $help_directory_alias
-+ }
-+ if { ! [ file isdirectory $help_directory_tmpdir ] } {
-+ file mkdir $help_directory_tmpdir
-+ }
-+ foreach file [ lsort [ glob -dir $help_directory * ] ] {
-+ regsub -all ".*/" $file "" link_file_name
-+ file link -symbolic [file join $help_directory_tmpdir $link_file_name ] $file
-+ }
-+ set help_directory $help_directory_tmpdir
-+}
+retrieving revision 1.7.2.4
+diff -u -w -r1.7.2.4 u_main.tk
+--- u_main.tk 21 Feb 2005 04:20:20 -0000 1.7.2.4
++++ u_main.tk 25 Nov 2005 22:47:06 -0000
+@@ -24,6 +24,14 @@
+ # Tearoff is set to true by default:
+ set pd_tearoff 1
+
++
++# a menu on the main menubar named $whatever.help while be treated
++# as a special menu with specific behaviors on different platforms.
++# See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm
++# this is the default name for the Help menu
++set help_menu_name "help"
++
++#################### init for Windows ####################
+ if {$pd_nt == 1} {
+ global pd_guidir
+ global pd_tearoff
+@@ -32,8 +40,12 @@
+ set pd_guidir $pd_gui3/..
+ load $pd_guidir/bin/pdtcl.dll
+ set pd_tearoff 1
++ set help_top_directory $pd_guidir/doc
++ # init last help directory browsed
++ set help_directory $help_top_directory
+ }
+
++##################### init for Mac OS X/Darwin ####################
+ if {$pd_nt == 2} {
+ # turn on James Tittle II's fast drawing (wait until I can test this...):
+ # set tk::mac::useCGDrawing 1
+@@ -43,6 +55,39 @@
+ set pd_guidir $pd_gui2/..
+ load $pd_guidir/bin/pdtcl
+ set pd_tearoff 0
++ set help_top_directory $pd_guidir/doc
++
++
++ # This procedure generates a temporary mirror of the documentation directory
++ # in /tmp so that it can be opened from the Help->Pure Documentation... menu
++ # under Mac OS X. It is meant to be run at startup.
++ # Damn you Apple and your hide-stuff-from-the-user "features".
++ # <hans@at.or.at.>
++ regsub -all "/" $help_top_directory "." help_directory_alias
++ set help_directory_alias /tmp/.pd_help_directory_alias-$help_directory_alias
++ set help_directory_tmpdir $help_directory_alias/doc
++ # if something other than a directory exists, delete it
++ if [file exists $help_directory_alias] {
++ file delete -force -- $help_directory_alias
++ }
++ if { ! [ file isdirectory $help_directory_tmpdir ] } {
++ file mkdir $help_directory_tmpdir
++ }
++ foreach file [ lsort [ glob -dir $help_top_directory * ] ] {
++ regsub -all ".*/" $file "" link_file_name
++ file link -symbolic $help_directory_tmpdir/$link_file_name $file
++ }
++ # init last help directory browsed
++ set help_directory $help_directory_tmpdir
++
++
++ # a menu on the main menubar named "$whatever.help" while be treated
++ # as a special menu with specific behaviors on different platforms.
++ # See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm
++ # Apple doesn't allow cascading menus in their Help so I had to call this
++ # one "docs" <hans@at.or.at>
++ set help_menu_name "docs"
++
+
+ # tk::mac::OpenDocument is called with the filenames put into the
+ # var args whenever docs are either dropped on the Pd.app icon or
+@@ -60,14 +105,22 @@
+ # hack so you can easily test-run this script in linux... define pd_guidir
+ # (which is normally defined at startup in pd under linux...)
+
++#################### init for GNU/Linux ####################
+ if {$pd_nt == 0} {
+ if {! [info exists pd_guidir]} {
+ global pd_guidir
+ puts stderr {setting pd_guidir to '.'}
+ set pd_guidir .
++ set help_top_directory $pd_guidir/doc
++ # init last help directory browsed
++ set help_directory $help_top_directory
+ }
+ }
+
++#################### init for all platforms ####################
+
++
++
+ # it's unfortunate but we seem to have to turn off global bindings
+ # for Text objects to get control-s and control-t to do what we want for
+ # "text" dialogs below. Also we have to get rid of tab's changing the focus.
+@@ -95,25 +148,15 @@
+ if {$pd_nt != 2} {
+ .mbar add cascade -label "Windows" -menu .mbar.windows
+ .mbar add cascade -label "Media" -menu .mbar.audio
+-# a menu on the main menubar named $whatever.help while be treated
+-# as a special menu with specific behaviors on different platforms.
+-# See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm
+- menu .mbar.help -tearoff $pd_tearoff
+- .mbar add cascade -label "Help" -menu .mbar.help
+ } else {
+ menu .mbar.apple -tearoff 0
+ .mbar add cascade -label "Apple" -menu .mbar.apple
+ # arrange menus according to Apple HIG
+ .mbar add cascade -label "Media" -menu .mbar.audio
+ .mbar add cascade -label "Window" -menu .mbar.windows
+-# a menu on the main menubar named "$whatever.help" while be treated
+-# as a special menu with specific behaviors on different platforms.
+-# See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm
+-# Apple doesn't allow cascading menus in their Help so I had to call this
+-# one $mbar.docs # <hans@at.or.at>
+- menu .mbar.docs -tearoff $pd_tearoff
+- .mbar add cascade -label "Help" -menu .mbar.docs
+ }
++menu .mbar.$help_menu_name -tearoff $pd_tearoff
++.mbar add cascade -label "Help" -menu .mbar.$help_menu_name
+
+ set ctrls_audio_on 0
+ set ctrls_meter_on 0
+@@ -371,25 +414,15 @@
+ }
+ }
+
+-set help_directory $pd_guidir/doc
+-set help_top_directory $pd_guidir/doc
+-
+################## menu_documentation #########################
proc menu_documentation {} {
global help_directory
@@ -47,13 +145,14 @@ RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
- -initialdir /tmp/pd-documentation]
- } else {
set filename [tk_getOpenFile -defaultextension .pd \
- -filetypes { {{documentation} {.pd .txt .htm}} } \
+- -filetypes { {{documentation} {.pd .txt .htm}} } \
++ -filetypes { {{documentation} {.pd .txt .htm .html}} } \
-initialdir $help_directory]
- }
if {$filename != ""} {
if {[string first .txt $filename] >= 0} {
menu_opentext $filename
-@@ -411,35 +430,57 @@
+@@ -411,42 +444,69 @@
set dirname $pd_guidir/$subdir
@@ -73,45 +172,47 @@ RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
- pd [concat pd open [pdtk_enquote $basename] \
- [pdtk_enquote $dirname] \;]
+ menu_openhtml $dirname/$basename
-+ }
}
}
++}
++
-proc doc_submenu {helpmenu subdir} {
- global help_top_directory pd_tearoff
--
-- set menudir $help_top_directory/$subdir
-
-- regsub -all "\\\." $subdir "" submenu
+################## menu_doc_submenu #########################
-
++
+# this is a recursive function to generation a nested menu in the help menu
+# which shows the complete contents of the doc directory <hans@at.or.at>
+proc menu_doc_submenu {helpmenu base_dir sub_dir} {
-+ global pd_tearoff
-+ global help_top_directory
-+
-+ set menu_dir $help_top_directory/$base_dir/$sub_dir
-+
-+ foreach file [ lsort [ glob -nocomplain -dir $menu_dir * ] ] {
-+ set file_type [file type $file]
-+ regsub {.*/(.*$)} $file {\1} file_name
-+ # If links are going to be used then there needs to be a check to see if each
-+ # link might cause this function to recurse forever <hans@at.or.at>
-+ # if { $file_type == "link"} {
-+ # puts stderr "LINK: $file"
-+ # }
-+ if { $file_type == "file" } {
-+ # only put certain file types on the menu
-+ if {[regexp ".*\.(htm|html|c|pd|txt|tk|pdf|wav|aif|aiff)$" $file]} {
-+ $helpmenu add command -label $file_name \
-+ -command "menu_doc_open doc/$base_dir/$sub_dir $file_name"
-+ }
-+ } elseif { $file_type == "directory" } {
-+ regsub -all "\\\." [string tolower $file_name] "" submenu
++ global pd_tearoff
++ global help_top_directory
+
+- set menudir $help_top_directory/$subdir
++ set menu_dir $help_top_directory/$base_dir/$sub_dir
+
+- regsub -all "\\\." $subdir "" submenu
++ catch {
++ foreach file [ lsort [ glob -nocomplain -dir $menu_dir * ] ] {
++ set file_type [file type $file]
++ regsub {.*/(.*$)} $file {\1} file_name
+
++ # If links are going to be used then there needs to be a check to
++ # see if each link might cause this function to recurse forever
++ # <hans@at.or.at>
++ if { $file_type == "link"} {
++ puts stderr "Warning doc_submenu found a link: $file"
++ }
++ if { $file_type == "file" } {
++ # only put certain file types on the menu
++ if {[regexp ".*\.(htm|html|c|pd|txt|tk|pdf|wav|aif|aiff)$" $file]} {
++ $helpmenu add command -label $file_name \
++ -command "menu_doc_open doc/$base_dir/$sub_dir $file_name"
++ }
++ } elseif { $file_type == "directory" } {
++ regsub -all "\\\." [string tolower $file_name] "" submenu
menu $helpmenu.$submenu -tearoff $pd_tearoff
- regsub -all "\\\." $subdir " " submenuname
-+ regsub -all "\\\." $file_name " " submenuname
++ regsub -all "\\\." $file_name " " submenuname
$helpmenu add cascade -label $submenuname \
-menu $helpmenu.$submenu
-
@@ -122,34 +223,34 @@ RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
- regsub {.*/(.*\..+$)} $file {\1} filename
- $helpmenu.$submenu add command -label $filename \
- -command "menu_doc_open doc/$subdir $filename"
-+ menu_doc_submenu $helpmenu.$submenu $base_dir/$sub_dir [file tail $file]
-+ }
++ menu_doc_submenu $helpmenu.$submenu $base_dir/$sub_dir \
++ [file tail $file]
++ }
++ }
}
}
-@@ -494,7 +535,18 @@
+ ############# routine to add media, help, and apple menu items ###############
+
+ proc menu_addstd {mbar} {
+- global pd_apilist pd_nt pd_tearoff
++ global pd_apilist pd_nt pd_tearoff help_menu_name
+ # the "Audio" menu
+ $mbar.audio add command -label {audio ON} -accelerator [accel_munge "Ctrl+/"] \
+ -command {menu_audio 1}
+@@ -494,30 +554,15 @@
# the "Help" menu
- if {$pd_nt != 2} {
-+ if {$pd_nt == 2} {
-+# Apple doesn't allow cascading menus in their Help so I had to call this
-+# one "docs" <hans@at.or.at>
-+ generate_menu_doc_link
-+ $mbar.docs add command -label {Browse Documentation...} \
-+ -command {menu_documentation}
-+ # the help menu only really works well on Mac OS X <hans@at.or.at>
-+ $mbar.docs add command -label {Pd HTML Manual...} \
-+ -command {menu_doc_open doc/1.manual index.htm}
-+ $mbar.docs add separator
-+ menu_doc_submenu $mbar.docs "." "."
-+ } else {
- # a menu on the main menubar named "$whatever.help" while be treated
- # as a special menu with specific behaviors on different platforms.
- # See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm
-@@ -502,22 +554,9 @@
- -command {menu_doc_open doc/1.manual 1.introduction.txt}
- $mbar.help add command -label {Pure Documentation...} \
+-# a menu on the main menubar named "$whatever.help" while be treated
+-# as a special menu with specific behaviors on different platforms.
+-# See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm
+- $mbar.help add command -label {About Pd} \
+- -command {menu_doc_open doc/1.manual 1.introduction.txt}
+- $mbar.help add command -label {Pure Documentation...} \
++ puts stderr "Starting Menu crap"
++ $mbar.$help_menu_name add command -label {Browse Documentation...} \
-command {menu_documentation}
- # add menu items for each section instead of using Pd patches
- $mbar.help add separator
@@ -161,14 +262,43 @@ RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
- }
-
- $mbar.$helpmenuname add command -label {1 manual...} \
-+ $mbar.help add command -label {1 manual...} \
++ # the help menu only really works well on Mac OS X <hans@at.or.at>
++ $mbar.$help_menu_name add command -label {Pd HTML Manual...} \
-command {menu_doc_open doc/1.manual index.htm}
- doc_submenu $mbar.$helpmenuname 2.control.examples
- doc_submenu $mbar.$helpmenuname 3.audio.examples
- doc_submenu $mbar.$helpmenuname 4.fft.examples
- doc_submenu $mbar.$helpmenuname 5.reference
- doc_submenu $mbar.$helpmenuname 6.externs
-+ }
++ $mbar.$help_menu_name add separator
++ menu_doc_submenu $mbar.$help_menu_name "." "."
++ puts stderr "Finishing Menu crap"
}
#################### the "File" menu for the Pd window ##############
+@@ -820,6 +865,7 @@
+ global pd_opendir
+ global pd_tearoff
+ global pd_nt
++ global help_menu_name
+
+ toplevel $name -menu $name.m
+ # puts stderr [concat geometry: $geometry]
+@@ -1078,13 +1124,11 @@
+ # as a special menu with specific behaviors on different platforms.
+ # See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm
+ if {$pd_nt != 2} {
+- menu $name.m.help -tearoff $pd_tearoff
+- $name.m add cascade -label Help -menu $name.m.help
++ menu $name.m.$help_menu_name -tearoff $pd_tearoff
++ $name.m add cascade -label Help -menu $name.m.$help_menu_name
+ } else {
+- # Apple doesn't allow cascading menus in their Help
+- # so I had to call this one "docs". <hans@at.or.at>
+- menu $name.m.docs -tearoff $pd_tearoff
+- $name.m add cascade -label Help -menu $name.m.docs
++ menu $name.m.$help_menu_name -tearoff $pd_tearoff
++ $name.m add cascade -label Help -menu $name.m.$help_menu_name
+ }
+
+ menu_addstd $name.m