Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 89242 | Differences between
and this patch

Collapse All | Expand All

(-)file_not_specified_in_diff (-2040 / +33655 lines)
Line  Link Here
0
-- browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in
0
++ browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in
Lines 29-34 Link Here
29
    <em:contributor>Mozilla Contributors</em:contributor>
29
    <em:contributor>Mozilla Contributors</em:contributor>
30
30
31
    <em:internalName>classic/1.0</em:internalName>
31
    <em:internalName>classic/1.0</em:internalName>
32
33
    <em:file>
34
      <Description about="urn:mozilla:extension:file:classic.jar">
35
        <em:skin>skin/classic/browser/</em:skin>
36
	<em:skin>skin/classic/global/</em:skin>
37
	<em:skin>skin/classic/communicator/</em:skin>
38
	<em:skin>skin/classic/mozapps/</em:skin>
39
      </Description>
40
    </em:file>
32
  </Description>      
41
  </Description>      
33
42
34
</RDF>
43
</RDF>
35
-- browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
44
++ browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
Line 0 Link Here
0
-- browser/app/profile/firefox.js
1
<?xml version="1.0"?>
2
3
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
4
     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
5
6
  <Description about="urn:mozilla:install-manifest">
7
    <em:id>{972ce4c6-7e08-4474-a285-3208198ce6fd}</em:id>
8
    <em:version>2.0</em:version>
9
    
10
    <!-- Target Application this theme can install into, 
11
        with minimum and maximum supported versions. --> 
12
    <em:targetApplication>
13
      <Description>
14
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
15
        <em:minVersion>1.0</em:minVersion>
16
        <em:maxVersion>1.0</em:maxVersion>
17
      </Description>
18
    </em:targetApplication>
19
    
20
    <!-- Front End MetaData -->
21
    <em:name>Firefox (default)</em:name>
22
    <em:description>The default theme</em:description>
23
24
    <em:locked>true</em:locked>
25
26
    <!-- Front End Integration Hooks (used by Theme Manager)-->
27
    <!-- XXXben - preprocess this file to use different info for mac version -->
28
    <em:creator>Gerich and Horlander</em:creator>
29
    <em:contributor>Mozilla Contributors</em:contributor>
30
31
    <em:internalName>classic/1.0</em:internalName>
32
33
    <em:file>
34
      <Description about="urn:mozilla:extension:file:classic.jar">
35
        <em:skin>skin/classic/browser/</em:skin>
36
	<em:skin>skin/classic/global/</em:skin>
37
	<em:skin>skin/classic/communicator/</em:skin>
38
	<em:skin>skin/classic/mozapps/</em:skin>
39
      </Description>
40
    </em:file>
41
  </Description>      
42
43
</RDF>
44
++ browser/app/profile/firefox.js
Lines 38-43 Link Here
38
// SYNTAX HINTS:  dashes are delimiters.  Use underscores instead.
38
// SYNTAX HINTS:  dashes are delimiters.  Use underscores instead.
39
//  The first character after a period must be alphabetic.
39
//  The first character after a period must be alphabetic.
40
40
41
// Disable default browser checking.
42
pref("browser.shell.checkDefaultBrowser", false);
43
41
// pref("startup.homepage_override_url","chrome://browser-region/locale/region.properties");
44
// pref("startup.homepage_override_url","chrome://browser-region/locale/region.properties");
42
pref("general.startup.browser", true);
45
pref("general.startup.browser", true);
43
46
Lines 62-69 Link Here
62
);
65
);
63
66
64
// App-specific update preferences
67
// App-specific update preferences
65
pref("app.update.enabled", true);               // Whether or not app updates are enabled
68
pref("app.update.enabled", false);               // Whether or not app updates are enabled
66
pref("app.update.autoUpdateEnabled", true);     // Whether or not background app updates 
69
pref("app.update.autoUpdateEnabled", false);     // Whether or not background app updates 
67
                                                // are enabled
70
                                                // are enabled
68
pref("app.update.url", "chrome://mozapps/locale/update/update.properties");
71
pref("app.update.url", "chrome://mozapps/locale/update/update.properties");
69
pref("app.update.updatesAvailable", false);
72
pref("app.update.updatesAvailable", false);
Lines 81-87 Link Here
81
//  .. etc ..
84
//  .. etc ..
82
//
85
//
83
pref("extensions.update.enabled", true);
86
pref("extensions.update.enabled", true);
84
pref("extensions.update.autoUpdateEnabled", true);
87
pref("extensions.update.autoUpdateEnabled", false);
85
pref("extensions.update.url", "chrome://mozapps/locale/extensions/extensions.properties");
88
pref("extensions.update.url", "chrome://mozapps/locale/extensions/extensions.properties");
86
pref("extensions.update.autoUpdate", false);    // Automatically download and install 
89
pref("extensions.update.autoUpdate", false);    // Automatically download and install 
87
                                                // updates to themes and extensions. 
90
                                                // updates to themes and extensions. 
Lines 123-131 Link Here
123
126
124
pref("general.skins.selectedSkin", "classic/1.0");
127
pref("general.skins.selectedSkin", "classic/1.0");
125
pref("general.useragent.vendor", "Firefox");
128
pref("general.useragent.vendor", "Firefox");
126
pref("general.useragent.vendorSub", 
129
pref("general.useragent.vendorSub", "1.0");
127
#expand __APP_VERSION__
130
//#expand __APP_VERSION__
128
);
131
//);
129
132
130
pref("general.smoothScroll", false);
133
pref("general.smoothScroll", false);
131
#ifdef XP_UNIX
134
#ifdef XP_UNIX
Lines 141-150 Link Here
141
// 0 = blank, 1 = home (browser.startup.homepage), 2 = last
144
// 0 = blank, 1 = home (browser.startup.homepage), 2 = last
142
// XXXBlake Remove this stupid pref
145
// XXXBlake Remove this stupid pref
143
pref("browser.startup.page",                1);
146
pref("browser.startup.page",                1);
144
pref("browser.startup.homepage",	          "resource:/browserconfig.properties");
147
pref("browser.startup.homepage",                 "chrome://browser-region/locale/region.properties");
145
148
146
// These values are deliberately non-localizable for official builds.
149
// These values are deliberately non-localizable for official builds.
147
pref("browser.startup.homepage_reset",      "resource:/browserconfig.properties");
150
pref("browser.startup.homepage_reset",      "chrome://browser-region/locale/region.properties");
148
pref("browser.update.resetHomepage",        false);
151
pref("browser.update.resetHomepage",        false);
149
// "browser.startup.homepage_override" was for 4.x
152
// "browser.startup.homepage_override" was for 4.x
150
pref("browser.startup.homepage_override.1", false);
153
pref("browser.startup.homepage_override.1", false);
Lines 236-241 Link Here
236
pref("network.cookie.cookieBehavior",       0); // cookies enabled
239
pref("network.cookie.cookieBehavior",       0); // cookies enabled
237
pref("network.cookie.enableForCurrentSessionOnly", false);
240
pref("network.cookie.enableForCurrentSessionOnly", false);
238
241
242
// Use LANG environment variable to choose locale
243
pref("intl.locale.matchOS", true);
244
239
// l12n and i18n
245
// l12n and i18n
240
pref("intl.accept_languages", "chrome://global/locale/intl.properties");
246
pref("intl.accept_languages", "chrome://global/locale/intl.properties");
241
// collationOption is only set on linux for japanese. see bug 18338 and 62015
247
// collationOption is only set on linux for japanese. see bug 18338 and 62015
Lines 258-263 Link Here
258
pref("mousewheel.withshiftkey.action",2);
264
pref("mousewheel.withshiftkey.action",2);
259
pref("mousewheel.withaltkey.action",0);
265
pref("mousewheel.withaltkey.action",0);
260
266
267
pref("middlemouse.contentLoadURL", false); // setting to false disables pasting urls on to the page
268
261
pref("profile.allow_automigration", false);   // setting to false bypasses automigration in the profile code
269
pref("profile.allow_automigration", false);   // setting to false bypasses automigration in the profile code
262
270
263
// Customizable toolbar stuff
271
// Customizable toolbar stuff
Lines 326-328 Link Here
326
334
327
// plugin finder service
335
// plugin finder service
328
pref("pfs.datasource.url", "chrome://mozapps/locale/plugins/plugins.properties");
336
pref("pfs.datasource.url", "chrome://mozapps/locale/plugins/plugins.properties");
329
-- browser/app/Makefile.in
337
338
// enable negotiate extension
339
pref("network.negotiate-auth.trusted-uris", "https://");
340
341
// don't raise windows by default
342
pref("mozilla.widget.raise-on-setfocus", false);
343
344
// disable IDN for now, since it's a phising risk
345
//pref("network.enableIDN", false);
346
++ browser/app/Makefile.in
Lines 320-323 Link Here
320
	$(INSTALL) $^ $(DIST)/bin/defaults/profile
320
	$(INSTALL) $^ $(DIST)/bin/defaults/profile
321
321
322
install:: $(srcdir)/profile/prefs.js
322
install:: $(srcdir)/profile/prefs.js
323
	$(SYSINSTALL) $(IFLAGS1) $^ $(destdir)$(bindir)/defaults/profile
323
	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(bindir)/defaults/profile
324
-- browser/base/content/aboutDialog.css
324
++ browser/base/content/aboutDialog.css
Lines 26-36 Link Here
26
   -moz-appearance: none;
26
   -moz-appearance: none;
27
   overflow: hidden;
27
   overflow: hidden;
28
28
29
#ifdef XP_MACOSX
30
   height: 3.8em;
29
   height: 3.8em;
31
#else
32
   height: 2.4em;
33
#endif
34
30
35
   border: none;
31
   border: none;
36
 }
32
 }
37
-- browser/base/content/browserconfig.properties
33
++ browser/base/content/browserconfig.properties
Lines 1-3 Link Here
1
# Do NOT localize or otherwise change these values
1
# Do NOT localize or otherwise change these values
2
browser.startup.homepage=http://www.mozilla.org/products/firefox/central.html
2
browser.startup.homepage=http://www.mozilla.org/products/firefox/central.html
3
browser.startup.homepage_reset=http://www.mozilla.org/products/firefox/central.html
3
browser.startup.homepage_reset=http://www.mozilla.org/products/firefox/central.html
4
-- browser/base/content/openLocation.xul
4
++ browser/base/content/openLocation.xul
Lines 32-37 Link Here
32
        title="&caption.label;"
32
        title="&caption.label;"
33
        onload="onLoad()"
33
        onload="onLoad()"
34
        buttonlabelaccept="&openBtn.label;"
34
        buttonlabelaccept="&openBtn.label;"
35
        buttoniconaccept="open"
35
        ondialogaccept="open()"
36
        ondialogaccept="open()"
36
        style="width: 40em;"
37
        style="width: 40em;"
37
        persist="screenX screenY"
38
        persist="screenX screenY"
38
-- browser/base/content/pageInfo.xul
39
++ browser/base/content/pageInfo.xul
Lines 297-303 Link Here
297
            </rows>
297
            </rows>
298
          </grid>
298
          </grid>
299
          <hbox>
299
          <hbox>
300
            <button label="&mediaSaveAs;" accesskey="&mediaSaveAsAccesskey;" id="imagesaveasbutton" disabled="true" oncommand="saveMedia();"/>
300
            <button label="&mediaSaveAs;" accesskey="&mediaSaveAsAccesskey;" id="imagesaveasbutton" 
301
                    icon="save" disabled="true" oncommand="saveMedia();"/>
301
          </hbox>
302
          </hbox>
302
          <vbox class="inset iframe" flex="1" pack="center">
303
          <vbox class="inset iframe" flex="1" pack="center">
303
            <hbox id="theimagecontainer" pack="center">
304
            <hbox id="theimagecontainer" pack="center">
304
-- browser/base/content/pageReport.xul
305
++ browser/base/content/pageReport.xul
Lines 49-57 Link Here
49
  <separator class="thin"/>
49
  <separator class="thin"/>
50
  <hbox>
50
  <hbox>
51
    <button label="&unblock.label;" id="unblockButton" oncommand="whitelistSite();"
51
    <button label="&unblock.label;" id="unblockButton" oncommand="whitelistSite();"
52
      disabled="true" accesskey="&unblock.accesskey;"/>
52
      disabled="true" accesskey="&unblock.accesskey;" icon="yes"/>
53
    <spacer flex="1"/>
53
    <spacer flex="1"/>
54
    <button dlgtype="accept" label="&done.label;" default="true"
54
    <button dlgtype="accept" label="&done.label;" default="true" icon="close"
55
      oncommand="window.close();" accesskey="&done.accesskey;"/>
55
      oncommand="window.close();" accesskey="&done.accesskey;"/>
56
  </hbox>
56
  </hbox>
57
</dialog>
57
</dialog>
58
-- browser/base/content/searchconfig.properties
58
++ browser/base/content/searchconfig.properties
Lines 3-6 Link Here
3
browser.search.param.Google.1.default=client=firefox
3
browser.search.param.Google.1.default=client=firefox
4
browser.search.param.Google.release=rls=%S:%S:unofficial
4
browser.search.param.Google.release=rls=%S:%S:unofficial
5
5
6
browser.search.param.Yahoo.release=rls=%S:%S:unofficial
6
browser.search.param.Yahoo.release=rls=%S:%S:unofficial
7
-- browser/components/bookmarks/content/addBookmark.xul
7
++ browser/components/bookmarks/content/addBookmark.xul
Lines 93-99 Link Here
93
        <bookmarks-tree id="bookmarks-view" flex="1" type="folders"/>
93
        <bookmarks-tree id="bookmarks-view" flex="1" type="folders"/>
94
        <vbox>
94
        <vbox>
95
          <button label="&button.newfolder.label;" accesskey="&button.newfolder.accesskey;"
95
          <button label="&button.newfolder.label;" accesskey="&button.newfolder.accesskey;"
96
                  oncommand="createNewFolder();"/>
96
                  oncommand="createNewFolder();" icon="open"/>
97
          <button label="&button.defaultfolder.label;" 
97
          <button label="&button.defaultfolder.label;" 
98
                  accesskey="&button.defaultfolder.accesskey;"
98
                  accesskey="&button.defaultfolder.accesskey;"
99
                  oncommand="useDefaultFolder();"/>
99
                  oncommand="useDefaultFolder();"/>
100
-- browser/components/bookmarks/content/addBookmark2.xul
100
++ browser/components/bookmarks/content/addBookmark2.xul
Lines 42-47 Link Here
42
        buttonlabelextra2="&newFolder.label;" buttonaccesskeyextra2="&newFolder.accesskey;"
42
        buttonlabelextra2="&newFolder.label;" buttonaccesskeyextra2="&newFolder.accesskey;"
43
#ifdef XP_UNIX
43
#ifdef XP_UNIX
44
        buttonlabelaccept="&acceptButton.label;"
44
        buttonlabelaccept="&acceptButton.label;"
45
        buttoniconaccept="add"
46
        buttoniconextra2="open"
45
#endif
47
#endif
46
        title="&newBookmark.title;" title-selectFolder="&selectFolder.label;"
48
        title="&newBookmark.title;" title-selectFolder="&selectFolder.label;"
47
        onload="Startup();"
49
        onload="Startup();"
48
-- browser/components/cookieviewer/content/CookieExceptions.xul
50
++ browser/components/cookieviewer/content/CookieExceptions.xul
Lines 47-58 Link Here
47
  <hbox align="start">
47
  <hbox align="start">
48
    <textbox id="url" flex="1" oninput="gPermissionManager.onHostInput(event.target);"/>
48
    <textbox id="url" flex="1" oninput="gPermissionManager.onHostInput(event.target);"/>
49
  </hbox>
49
  </hbox>
50
  <hbox pack="end">
50
  <hbox pack="end">
51
     <button id="btnBlock" disabled="true"
51
     <button id="btnBlock" disabled="true" icon="no" 
52
             label="&block.label;" oncommand="gPermissionManager.addPermission(nsIPermissionManager.DENY_ACTION);"/>
52
             label="&block.label;" oncommand="gPermissionManager.addPermission(nsIPermissionManager.DENY_ACTION);"/>
53
     <button id="btnSession" disabled="true"
53
     <button id="btnSession" disabled="true"
54
             label="&session.label;" oncommand="gPermissionManager.addPermission(nsICookiePermission.ACCESS_SESSION);"/>
54
             label="&session.label;" oncommand="gPermissionManager.addPermission(nsICookiePermission.ACCESS_SESSION);"/>
55
     <button id="btnAllow" disabled="true"
55
     <button id="btnAllow" disabled="true" icon="yes"
56
             label="&allow.label;" oncommand="gPermissionManager.addPermission(nsIPermissionManager.ALLOW_ACTION);"/>
56
             label="&allow.label;" oncommand="gPermissionManager.addPermission(nsIPermissionManager.ALLOW_ACTION);"/>
57
  </hbox>
57
  </hbox>
58
  <separator class="thin"/>
58
  <separator class="thin"/>
Lines 71-79 Link Here
71
  </tree>
71
  </tree>
72
  <separator class="thin"/>
72
  <separator class="thin"/>
73
  <hbox>
73
  <hbox>
74
    <button id="removePermission" disabled="true" label="&removepermission.label;" 
74
    <button id="removePermission" disabled="true" icon="remove" label="&removepermission.label;" 
75
            oncommand="gPermissionManager.onPermissionDeleted();"/>
75
            oncommand="gPermissionManager.onPermissionDeleted();"/>
76
    <button id="removeAllPermissions" label="&removeallpermissions.label;" 
76
    <button id="removeAllPermissions" icon="clear" label="&removeallpermissions.label;" 
77
            oncommand="gPermissionManager.onAllPermissionsDeleted();"/>
77
            oncommand="gPermissionManager.onAllPermissionsDeleted();"/>
78
  </hbox>
78
  </hbox>
79
</dialog>
79
</dialog>
80
-- browser/components/cookieviewer/content/CookieViewer.xul
80
++ browser/components/cookieviewer/content/CookieViewer.xul
Lines 112-121 Link Here
112
        </grid>
112
        </grid>
113
      </groupbox>
113
      </groupbox>
114
      <hbox>
114
      <hbox>
115
        <button id="removeCookie" disabled="true"
115
        <button id="removeCookie" disabled="true" icon="remove"
116
                      label="&button.removecookie.label;"
116
                      label="&button.removecookie.label;"
117
                      oncommand="DeleteCookie();"/>
117
                      oncommand="DeleteCookie();"/>
118
        <button id="removeAllCookies"
118
        <button id="removeAllCookies" icon="clear"
119
                      label="&button.removeallcookies.label;"
119
                      label="&button.removeallcookies.label;"
120
                      oncommand="DeleteAllCookies();"/>
120
                      oncommand="DeleteAllCookies();"/>
121
      </hbox>
121
      </hbox>
122
-- browser/components/prefwindow/content/pref-advanced.xul
122
++ browser/components/prefwindow/content/pref-advanced.xul
Lines 72-80 Link Here
72
              open="true" persist="open" clearhidden="true" align="left">
72
              open="true" persist="open" clearhidden="true" align="left">
73
      <label>&softwareupdateinfo.label;</label>
73
      <label>&softwareupdateinfo.label;</label>
74
      <vbox class="indent" align="left">
74
      <vbox class="indent" align="left">
75
        <checkbox id="enableSmartUpdate"
75
        <!-- checkbox id="enableSmartUpdate"
76
                  label="&enableSmartUpdate.label;" accesskey="&enableSmartUpdate.accesskey;"
76
                  label="&enableSmartUpdate.label;" accesskey="&enableSmartUpdate.accesskey;"
77
                  prefstring="app.update.autoUpdateEnabled"/>
77
                  prefstring="app.update.autoUpdateEnabled"/ -->
78
        <checkbox id="enableExtensionUpdate"
78
        <checkbox id="enableExtensionUpdate"
79
                  label="&enableExtensionUpdate.label;" accesskey="&enableExtensionUpdate.accesskey;"
79
                  label="&enableExtensionUpdate.label;" accesskey="&enableExtensionUpdate.accesskey;"
80
                  prefstring="extensions.update.autoUpdateEnabled"/>      
80
                  prefstring="extensions.update.autoUpdateEnabled"/>      
Lines 112-118 Link Here
112
        <hbox align="center">
112
        <hbox align="center">
113
          <button label="&managecerts.button;"
113
          <button label="&managecerts.button;"
114
                  oncommand="openCertManager();" 
114
                  oncommand="openCertManager();" 
115
                  id="openCertManagerButton"
115
                  id="openCertManagerButton" icon="properties"
116
                  accesskey="&managecerts.accesskey;"
116
                  accesskey="&managecerts.accesskey;"
117
                  prefstring="security.disable_button.openCertManager"/>
117
                  prefstring="security.disable_button.openCertManager"/>
118
        </hbox>
118
        </hbox>
Lines 125-131 Link Here
125
        <hbox align="center">
125
        <hbox align="center">
126
          <button label="&managedevices.button;"
126
          <button label="&managedevices.button;"
127
                  oncommand="openDeviceManager();"
127
                  oncommand="openDeviceManager();"
128
                  id="openDeviceManagerButton"
128
                  id="openDeviceManagerButton" icon="properties"
129
                  accesskey="&managedevices.accesskey;"
129
                  accesskey="&managedevices.accesskey;"
130
                  prefstring="security.disable_button.openDeviceManager"/>
130
                  prefstring="security.disable_button.openDeviceManager"/>
131
        </hbox>
131
        </hbox>
Lines 139-145 Link Here
139
        <hbox align="center">
139
        <hbox align="center">
140
          <button label="&validation.managecrls.button;"
140
          <button label="&validation.managecrls.button;"
141
                  oncommand="openCrlManager();"
141
                  oncommand="openCrlManager();"
142
                  id="managecrlbutton"
142
                  id="managecrlbutton" icon="properties"
143
                  accesskey="&validation.managecrls.accesskey;"
143
                  accesskey="&validation.managecrls.accesskey;"
144
                  prefstring="security.OCSP.disable_button.managecrl"/>
144
                  prefstring="security.OCSP.disable_button.managecrl"/>
145
        </hbox>
145
        </hbox>
146
-- browser/components/prefwindow/content/pref-features-images.xul
146
++ browser/components/prefwindow/content/pref-features-images.xul
Lines 54-64 Link Here
54
    <treechildren/>
54
    <treechildren/>
55
  </tree>
55
  </tree>
56
  <hbox>
56
  <hbox>
57
    <button id="removePermission" disabled="true" 
57
    <button id="removePermission" disabled="true" icon="remove"
58
                  label="&removepermission.label;" 
58
                  label="&removepermission.label;" 
59
                  oncommand="DeletePermission();"/>
59
                  oncommand="DeletePermission();"/>
60
    <button id="removeAllPermissions"
60
    <button id="removeAllPermissions"
61
                  label="&removeallpermissions.label;" 
61
                  label="&removeallpermissions.label;" icon="clear"
62
                  oncommand="DeleteAllPermissions();"/>
62
                  oncommand="DeleteAllPermissions();"/>
63
  </hbox>
63
  </hbox>
64
</dialog>
64
</dialog>
65
-- browser/components/prefwindow/content/pref-navigator.xul
65
++ browser/components/prefwindow/content/pref-navigator.xul
Lines 86-92 Link Here
86
    <caption label="&fonts.caption;"/>
86
    <caption label="&fonts.caption;"/>
87
    <hbox align="center">
87
    <hbox align="center">
88
      <description flex="1">&fontsInfo.label;</description>
88
      <description flex="1">&fontsInfo.label;</description>
89
      <button label="&showFontsAndColors.label;" 
89
      <button label="&showFontsAndColors.label;" icon="select-font" 
90
              accesskey="&showFontsAndColors.accesskey;" 
90
              accesskey="&showFontsAndColors.accesskey;" 
91
              oncommand="showFontsAndColors();"/>
91
              oncommand="showFontsAndColors();"/>
92
    </hbox>
92
    </hbox>
Lines 118-124 Link Here
118
    <hbox align="center">
118
    <hbox align="center">
119
      <description flex="1">&proxiesInfo.label;</description>
119
      <description flex="1">&proxiesInfo.label;</description>
120
      <button id="catProxiesButton" label="&showConnections.label;" 
120
      <button id="catProxiesButton" label="&showConnections.label;" 
121
              accesskey="&showConnections.accesskey;" 
121
              accesskey="&showConnections.accesskey;" icon="network"
122
              oncommand="showConnections();"/>
122
              oncommand="showConnections();"/>
123
    </hbox>
123
    </hbox>
124
  </groupbox>
124
  </groupbox>
125
-- browser/components/shell/src/nsGNOMEShellService.h
125
++ browser/components/shell/src/nsGNOMEShellService.h
Lines 43-49 Link Here
43
class nsGNOMEShellService : public nsIShellService
43
class nsGNOMEShellService : public nsIShellService
44
{
44
{
45
public:
45
public:
46
  nsGNOMEShellService() : mCheckedThisSession(PR_FALSE) { }
46
  nsGNOMEShellService() : mCheckedThisSession(PR_TRUE) { }
47
47
48
  NS_DECL_ISUPPORTS
48
  NS_DECL_ISUPPORTS
49
  NS_DECL_NSISHELLSERVICE
49
  NS_DECL_NSISHELLSERVICE
50
-- browser/locales/en-US/chrome/browser-region/region.properties
50
++ browser/locales/en-US/chrome/browser-region/region.properties
Lines 1-21 Link Here
1
general.useragent.contentlocale=US
1
general.useragent.contentlocale=US
2
2
3
homePageDefault=http://www.mozilla.org/products/firefox/start/
3
homePageDefault=file:///usr/share/ubuntu-artwork/home/index.html
4
fallbackDefaultSearchURL=http://www.google.com/search?&q=
4
fallbackDefaultSearchURL=http://www.google.com/search?&q=
5
5
6
tellAFriendURL=http://www.spreadfirefox.com/
6
tellAFriendURL=http://www.spreadfirefox.com/
7
promoteURL=http://www.spreadfirefox.com/promote/
7
promoteURL=http://www.spreadfirefox.com/promote/
8
8
9
# firefox.js
9
# firefox.js
10
browser.startup.homepage=http://start.mozilla.org/firefox/
10
browser.startup.homepage=file:///usr/share/ubuntu-artwork/home/index.html
11
browser.throbber.url=http://www.mozilla.org/products/firefox/central.html
11
browser.throbber.url=file:///usr/share/ubuntu-artwork/home/index.html
12
browser.search.defaulturl=http://www.google.com/search?lr=&ie=UTF-8&oe=UTF-8&q=
12
browser.search.defaulturl=http://www.google.com/search?lr=&ie=UTF-8&oe=UTF-8&q=
13
13
14
browser.search.order.1=Google
14
browser.search.order.1=Google
15
browser.search.order.2=Yahoo
15
browser.search.order.2=Yahoo
16
16
17
#config.js
17
#config.js
18
startup.homepage_override_url=http://www.mozilla.org/products/firefox/start/
18
startup.homepage_override_url=file:///usr/share/ubuntu-artwork/home/index.html
19
19
20
# search-panel.properties
20
# search-panel.properties
21
defaultSearchURL=http://www.google.com/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=
21
defaultSearchURL=http://www.google.com/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=
22
-- browser/locales/en-US/searchplugins/list.txt
22
++ browser/locales/en-US/searchplugins/list.txt
Lines 3-6 Link Here
3
dictionary
3
dictionary
4
eBay
4
eBay
5
yahoo
5
yahoo
6
creativecommons
6
creativecommons
7
-- browser/themes/Makefile.in
7
++ browser/themes/Makefile.in
Lines 45-52 Link Here
45
#
45
#
46
# Theme Selection
46
# Theme Selection
47
#
47
#
48
# Windows, GNOME/Linux    Winstripe
48
# Windows                 Winstripe
49
# MacOS X                 Pinstripe
49
# MacOS X                 Pinstripe
50
# GNOME/Linux             Gnomestripe
50
#
51
#
51
52
52
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
53
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
53
-- build/unix/run-mozilla.sh
54
++ build/unix/run-mozilla.sh
Lines 249-264 Link Here
249
	fi
249
	fi
250
    if [ -x "$debugger" ] 
250
    if [ -x "$debugger" ] 
251
    then
251
    then
252
        echo "set args ${1+"$@"}" > /tmp/mozargs$$ 
252
    	tmpfile=`mktemp -t` || { echo "Cannot create temporary file" >&2; exit 1; }
253
	trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15
254
        echo "set args ${1+"$@"}" > $tmpfile
253
# If you are not using ddd, gdb and know of a way to convey the arguments 
255
# If you are not using ddd, gdb and know of a way to convey the arguments 
254
# over to the prog then add that here- Gagan Saksena 03/15/00
256
# over to the prog then add that here- Gagan Saksena 03/15/00
255
        case `basename $debugger` in
257
        case `basename $debugger` in
256
            gdb) echo "$debugger $prog -x /tmp/mozargs$$"
258
            gdb) echo "$debugger $prog -x $tmpfile"
257
                $debugger "$prog" -x /tmp/mozargs$$
259
                $debugger "$prog" -x $tmpfile
258
		exitcode=$?
260
		exitcode=$?
259
                ;;
261
                ;;
260
            ddd) echo "$debugger --debugger \"gdb -x /tmp/mozargs$$\" $prog"
262
            ddd) echo "$debugger --debugger \"gdb -x $tmpfile\" $prog"
261
                $debugger --debugger "gdb -x /tmp/mozargs$$" "$prog"
263
                $debugger --debugger "gdb -x $tmpfile" "$prog"
262
		exitcode=$?
264
		exitcode=$?
263
                ;;
265
                ;;
264
            *) echo "$debugger $prog ${1+"$@"}"
266
            *) echo "$debugger $prog ${1+"$@"}"
Lines 266-272 Link Here
266
		exitcode=$?
268
		exitcode=$?
267
                ;;
269
                ;;
268
        esac
270
        esac
269
        /bin/rm /tmp/mozargs$$
270
    else
271
    else
271
        echo "Could not find a debugger on your system." 
272
        echo "Could not find a debugger on your system." 
272
    fi
273
    fi
273
-- build/unix/firefox-config
274
++ build/unix/firefox-config
Line 0 Link Here
0
-- nsprpub/lib/tests/Makefile
1
#!/bin/sh
2
3
prefix=/usr
4
exec_prefix=/usr
5
exec_prefix_set=no
6
7
usage()
8
{
9
	cat <<EOF
10
Usage: $0 [OPTIONS] [LIBRARIES]
11
Options:
12
	[--prefix[=DIR]]
13
	[--exec-prefix[=DIR]]
14
	[--version]
15
	[--defines]
16
	[--libs] [libraries]
17
	[--cflags] [components]
18
        [--idlflags]
19
Components:
20
    *
21
Libraries:
22
    xpcom
23
    nspr
24
    js
25
    jsj
26
    gfx
27
EOF
28
	exit $1
29
}
30
31
if test $# -eq 0; then
32
	usage 1 1>&2
33
fi
34
35
while test $# -gt 0; do
36
  case "$1" in
37
  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
38
  *) optarg= ;;
39
  esac
40
41
  case $1 in
42
    --prefix=*)
43
      prefix=$optarg
44
      if test $exec_prefix_set = no ; then
45
        exec_prefix=$optarg
46
      fi
47
      ;;
48
    --prefix)
49
      echo_prefix=yes
50
      ;;
51
    --exec-prefix=*)
52
      exec_prefix=$optarg
53
      exec_prefix_set=yes
54
      ;;
55
    --exec-prefix)
56
      echo_exec_prefix=yes
57
      ;;
58
    --version)
59
      echo 1.0.2
60
      exit 0
61
      ;;
62
    --cflags)
63
      if test "/usr/include/mozilla-firefox" != /usr/include ; then
64
        includes="-I/usr/include/mozilla-firefox"
65
      fi
66
      echo_cflags=yes
67
      ;;
68
    --defines)
69
      echo_defines=yes
70
      ;;
71
    --libs)
72
      echo_libs=yes
73
      ;;
74
    --idlflags)
75
      echo_idlflags=yes
76
      ;;
77
    xpcom|js|nspr|gfx|jsj)
78
      echo_components="$echo_components $1"
79
      echo_libraries="$echo_libraries $1"
80
      ;;
81
    xpconnect)
82
      echo_components="$echo_components $1"
83
      ;;
84
    "")
85
      usage 1 1>&2
86
      ;;
87
    *)
88
      echo_components="$echo_components $1"
89
      ;;
90
  esac
91
  shift
92
done
93
94
if test "$echo_prefix" = "yes"; then
95
	echo $prefix
96
fi
97
if test "$echo_exec_prefix" = "yes"; then
98
	echo $exec_prefix
99
fi
100
101
if test "$echo_defines" = "yes"; then
102
    echo -DHAVE_64BIT_OS=1 -DMOZILLA_VERSION=\"1.7.6\" -DD_INO=d_ino -DSTDC_HEADERS=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_SIGINFO_T=1 -DHAVE_INT16_T=1 -DHAVE_INT32_T=1 -DHAVE_INT64_T=1 -DHAVE_UINT=1 -DHAVE_UNAME_DOMAINNAME_FIELD=1 -DHAVE_VISIBILITY_ATTRIBUTE=1 -DHAVE_DIRENT_H=1 -DHAVE_GETOPT_H=1 -DHAVE_SYS_BITYPES_H=1 -DHAVE_MEMORY_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GNU_LIBC_VERSION_H=1 -DHAVE_NL_TYPES_H=1 -DHAVE_MALLOC_H=1 -DHAVE_X11_XKBLIB_H=1 -DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_STATFS_H=1 -DHAVE_SYS_CDEFS_H=1 -DHAVE_LIBM=1 -DHAVE_LIBDL=1 -DFUNCPROTO=15 -DHAVE_XSHM=1 -D_REENTRANT=1 -DHAVE_RANDOM=1 -DHAVE_STRERROR=1 -DHAVE_LCHOWN=1 -DHAVE_FCHMOD=1 -DHAVE_SNPRINTF=1 -DHAVE_MEMMOVE=1 -DHAVE_RINT=1 -DHAVE_FLOCKFILE=1 -DHAVE_LOCALTIME_R=1 -DHAVE_STRTOK_R=1 -DHAVE_RES_NINIT=1 -DHAVE_GNU_GET_LIBC_VERSION=1 -DHAVE_LANGINFO_CODESET=1 -DVA_COPY=va_copy -DHAVE_VA_COPY=1 -DHAVE_VA_LIST_AS_ARRAY=1 -DHAVE_I18N_LC_MESSAGES=1 -DMOZ_DEFAULT_TOOLKIT=\"gtk2\" -DMOZ_WIDGET_GTK2=1 -DMOZ_ENABLE_XREMOTE=1 -DMOZ_X11=1 -DMOZ_DISTRIBUTION_ID_UNQUOTED=org.mozilla -DMOZ_DISTRIBUTION_ID=\"org.mozilla\" -DMOZ_PHOENIX=1 -DMOZ_XUL_APP=1 -DMOZ_APP_NAME=\"firefox\" -DMOZ_ENABLE_XFT=1 -DMOZ_ENABLE_PANGO=1 -DHAVE_LIBPANGOFT2_1_0=1 -DMOZ_ENABLE_COREXFONTS=1 -DMOZ_EXTRA_X11CONVERTERS=1 -DOJI=1 -DMOZ_ENABLE_XINERAMA=1 -DIBMBIDI=1 -DMOZ_VIEW_SOURCE=1 -DACCESSIBILITY=1 -DMOZ_XPINSTALL=1 -DMOZ_JSLOADER=1 -DHAVE_GSSAPI_GSSAPI_H=1 -DHAVE_GSSAPI_GSSAPI_GENERIC_H=1 -DHAVE_GSS_C_NT_HOSTBASED_SERVICE=1 -DMOZ_MATHML=1 -DMOZ_LOGGING=1 -DHAVE___CXA_DEMANGLE=1 -DMOZ_DEFAULT_MOZILLA_FIVE_HOME=\"/usr/lib/mozilla-firefox\" -DMOZ_USER_DIR=\".mozilla\" -DMOZ_XUL=1 -DMOZ_PROFILELOCKING=1 -DMOZ_DLL_SUFFIX=\".so\" -DXP_UNIX=1 -DUNIX_ASYNC_DNS=1 -DJS_THREADSAFE=1 -DNS_PRINT_PREVIEW=1 -DNS_PRINTING=1 -DMOZ_ACCESSIBILITY_ATK=1 -DMOZILLA_LOCALE_VERSION=\"1.7\" -DMOZILLA_REGION_VERSION=\"1.7\" -DMOZILLA_SKIN_VERSION=\"1.5\" 
103
fi
104
105
if test "$echo_cflags" = "yes"; then
106
    nspr_cflags="-I/usr/include/mozilla-firefox/nspr"
107
    for n in $echo_components; do
108
	component_includes="$component_includes -I/usr/include/mozilla-firefox/$n"
109
    done
110
    echo $component_includes $includes $nspr_cflags
111
fi
112
113
if test "$echo_idlflags" = "yes"; then
114
    echo "-I%{idldir}"
115
fi
116
117
_nspr_libs="-L/usr/lib/mozilla-firefox -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
118
_xpcom_libs="-lxpcom $_nspr_libs"
119
_js_libs="-ljs"
120
121
if test "$echo_libs" = "yes"; then
122
    for l in $echo_libraries; do
123
	case "$l" in
124
	gfx) 
125
	    libs="$libs -lgkgfx $_xpcom_libs"
126
	    ;;
127
	xpcom)
128
	    libs="$libs $_xpcom_libs"
129
	    ;;
130
	nspr)
131
	    libs="$libs $_nspr_libs"
132
	    ;;
133
	js)
134
	    libs="$libs $_js_libs"
135
	    ;;
136
	jsj)
137
	    libs="$libs -ljsj $_js_libs $_xpcom_libs"
138
	    ;;
139
        esac
140
    done
141
    echo -L/usr/lib/mozilla-firefox $libs
142
fi
143
++ nsprpub/lib/tests/Makefile
Line 0 Link Here
0
-- nsprpub/pkg/linux/Makefile
1
# Generated automatically from Makefile.in by configure.
2
# 
3
# The contents of this file are subject to the Mozilla Public
4
# License Version 1.1 (the "License"); you may not use this file
5
# except in compliance with the License. You may obtain a copy of
6
# the License at http://www.mozilla.org/MPL/
7
# 
8
# Software distributed under the License is distributed on an "AS
9
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
10
# implied. See the License for the specific language governing
11
# rights and limitations under the License.
12
# 
13
# The Original Code is the Netscape Portable Runtime (NSPR).
14
# 
15
# The Initial Developer of the Original Code is Netscape
16
# Communications Corporation.  Portions created by Netscape are 
17
# Copyright (C) 1998-2000 Netscape Communications Corporation.  All
18
# Rights Reserved.
19
# 
20
# Contributor(s):
21
# 
22
# Alternatively, the contents of this file may be used under the
23
# terms of the GNU General Public License Version 2 or later (the
24
# "GPL"), in which case the provisions of the GPL are applicable 
25
# instead of those above.  If you wish to allow use of your 
26
# version of this file only under the terms of the GPL and not to
27
# allow others to use your version of this file under the MPL,
28
# indicate your decision by deleting the provisions above and
29
# replace them with the notice and other provisions required by
30
# the GPL.  If you do not delete the provisions above, a recipient
31
# may use your version of this file under either the MPL or the
32
# GPL.
33
# 
34
35
#! gmake
36
37
MOD_DEPTH	= ../..
38
topsrcdir	= ../..
39
srcdir		= .
40
41
include $(MOD_DEPTH)/config/autoconf.mk
42
43
include $(topsrcdir)/config/config.mk
44
45
ifeq ($(OS_ARCH), WINNT)
46
# DIRS = windows
47
endif
48
49
ifeq ($(OS_TARGET), WIN16)
50
OS_CFLAGS = $(OS_EXE_CFLAGS)
51
endif
52
53
CSRCS = \
54
	arena.c \
55
	string.c \
56
	base64t.c
57
58
ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
59
CSRCS += arena.c
60
endif
61
62
ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
63
PROG_SUFFIX = .exe
64
else
65
PROG_SUFFIX =
66
endif
67
68
PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
69
70
TARGETS = $(PROGS) $(OBJS)
71
72
INCLUDES = -I$(dist_includedir)
73
74
# Setting the variables LDOPTS and LIBPR.  We first initialize
75
# them to the default values, then adjust them for some platforms.
76
LDOPTS = -L$(dist_libdir)
77
LIBPR = -lnspr$(MOD_MAJOR_VERSION)
78
LIBPLC = -lplc$(MOD_MAJOR_VERSION)
79
LIBPLDS = -lplds$(MOD_MAJOR_VERSION)
80
81
ifeq ($(OS_ARCH), WINNT)
82
ifeq ($(OS_TARGET), WIN16)
83
  LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
84
  LIBPLC= $(dist_libdir)/plc$(MOD_MAJOR_VERSION).lib
85
  LIBPLDS= $(dist_libdir)/plds$(MOD_MAJOR_VERSION).lib
86
else
87
  LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
88
  ifeq ($(OS_TARGET), WIN95)
89
  LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
90
  LIBPLC= $(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
91
  LIBPLDS= $(dist_libdir)/plds$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
92
  else
93
  LIBPR = $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
94
  LIBPLC= $(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
95
  LIBPLDS= $(dist_libdir)/libplds$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
96
  endif
97
endif
98
endif
99
100
ifeq ($(OS_ARCH),OS2)
101
  ifeq ($(MOZ_OS2_TOOLS),VACPP)
102
    LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO /S:32768
103
    LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
104
    LIBPLC = $(dist_libdir)/plc$(MOD_MAJOR_VERSION).lib
105
    LIBPLDS= $(dist_libdir)/plds$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)	
106
  else
107
    LDOPTS += -Zomf -Zlinker /PM:VIO
108
  endif
109
endif
110
111
ifneq ($(OS_ARCH), WINNT)
112
PWD = $(shell pwd)
113
endif
114
115
ifeq ($(OS_ARCH), IRIX)
116
LDOPTS += -rpath $(PWD)/$(dist_libdir)
117
endif
118
119
ifeq ($(OS_ARCH), Linux)
120
    ifeq ($(OS_RELEASE), 1.2)
121
        EXTRA_LIBS = -ldl
122
    else
123
        LDOPTS += -Xlinker -rpath $(PWD)/$(dist_libdir)
124
        ifeq ($(USE_PTHREADS),1)
125
            EXTRA_LIBS = -lpthread
126
        endif
127
    endif
128
endif
129
130
ifeq ($(OS_ARCH), OSF1)
131
LDOPTS += -rpath $(PWD)/$(dist_libdir) -lpthread
132
endif
133
134
ifeq ($(OS_ARCH), HP-UX)
135
LDOPTS += -Wl,+s,+b,$(PWD)/$(dist_libdir)
136
endif
137
138
# AIX
139
ifeq ($(OS_ARCH),AIX)
140
LDOPTS += -blibpath:$(PWD)/$(dist_libdir):/usr/lib:/lib
141
LIBPR = -lnspr$(MOD_MAJOR_VERSION)_shr
142
LIBPLC = -lplc$(MOD_MAJOR_VERSION)_shr
143
endif
144
145
# Solaris
146
ifeq ($(OS_ARCH), SunOS)
147
ifneq ($(OS_RELEASE), 4.1.3_U1)
148
ifdef NS_USE_GCC
149
LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(dist_libdir)
150
else
151
LDOPTS += -R $(PWD)/$(dist_libdir)
152
endif
153
endif
154
155
# SunOS 5.4 and 5.5 need to link with -lthread or -lpthread,
156
# even though we already linked with these system libraries
157
# when we built libnspr.so.
158
ifeq ($(OS_RELEASE), 5.4)
159
EXTRA_LIBS = -lthread
160
endif
161
162
ifeq ($(OS_RELEASE), 5.5)
163
ifdef USE_PTHREADS
164
EXTRA_LIBS = -lpthread
165
else
166
EXTRA_LIBS = -lthread
167
endif
168
endif
169
endif # SunOS
170
171
ifeq ($(OS_ARCH), NCR)
172
# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
173
# implicitly by $(CC)) again even though we already linked with these
174
# system libraries when we built libnspr.so.
175
EXTRA_LIBS = -lsocket -lnsl
176
# This hardcodes in the executable programs the directory to find
177
# libnspr.so etc. at program startup.  Equivalent to the -R or -rpath
178
# option for ld on other platforms.
179
export LD_RUN_PATH = $(PWD)/$(dist_libdir)
180
endif
181
182
#####################################################
183
#
184
# The rules
185
#
186
#####################################################
187
188
include $(topsrcdir)/config/rules.mk
189
190
AIX_PRE_4_2 = 0
191
ifeq ($(OS_ARCH),AIX)
192
ifneq ($(OS_RELEASE),4.2)
193
ifneq ($(USE_PTHREADS), 1)
194
#AIX_PRE_4_2 = 1
195
endif
196
endif
197
endif
198
199
ifeq ($(AIX_PRE_4_2),1)
200
201
# AIX releases prior to 4.2 need a special two-step linking hack
202
# in order to both override the system select() and be able to 
203
# get at the original system select().
204
#
205
# We use a pattern rule in ns/nspr20/config/rules.mk to generate
206
# the .$(OBJ_SUFFIX) file from the .c source file, then do the
207
# two-step linking hack below.
208
209
$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
210
	@$(MAKE_OBJDIR)
211
	rm -f $@ $(AIX_TMP)
212
	$(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
213
	$(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
214
	rm -f $(AIX_TMP)
215
216
else
217
218
# All platforms that are not AIX pre-4.2.
219
220
$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
221
	@$(MAKE_OBJDIR)
222
223
ifeq ($(OS_ARCH), WINNT)
224
ifeq ($(OS_TARGET),WIN16)
225
	echo system windows >w16link
226
	echo option map >>w16link
227
	echo option stack=10K >>w16link
228
	echo option heapsize=32K >>w16link
229
	echo debug $(DEBUGTYPE) all >>w16link
230
	echo name $@  >>w16link
231
	echo file >>w16link
232
	echo $<  >>w16link
233
	echo library  >>w16link
234
	echo $(LIBPR),	     >>w16link
235
	echo $(LIBPLC),		 >>w16link
236
	echo winsock.lib     >>w16link
237
	wlink @w16link.
238
else
239
	link $(LDOPTS) $< $(LIBPLC) $(LIBPLDS) $(LIBPR) wsock32.lib -out:$@
240
endif
241
else
242
ifeq ($(OS_ARCH),OS2)
243
	$(LINK) $(EXEFLAGS) $(LDOPTS) $< $(LIBPLC)  $(LIBPLDS) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS)
244
else
245
	$(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPLDS) $(LIBPR) $(EXTRA_LIBS) -o $@
246
endif
247
endif
248
endif
249
250
export:: $(TARGETS)
251
clean::
252
	rm -f $(TARGETS)
253
254
255
256
++ nsprpub/pkg/linux/Makefile
Line 0 Link Here
0
-- nsprpub/pkg/solaris/SUNWpr/Makefile
1
# Generated automatically from Makefile.in by configure.
2
#
3
# Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
4
# Use is subject to license terms.
5
#
6
#ident	"$Id: Makefile.in,v 1.2.2.1 2003/02/26 06:17:31 wtc%netscape.com Exp $"
7
#
8
9
MOD_DEPTH = ../..
10
topsrcdir   = ../..
11
srcdir	    = .
12
13
NAME        = sun-nspr
14
RELEASE     = 1
15
TOPDIR      = /usr/src/redhat
16
VERSION     = `grep PR_VERSION $(dist_includedir)/prinit.h \
17
                  | sed -e 's/"$$//' -e 's/.*"//' -e 's/ .*//'`
18
19
include $(MOD_DEPTH)/config/autoconf.mk
20
21
publish:
22
	$(MAKE) clean
23
	mkdir -p usr/lib/mps
24
	cp -L $(MOD_DEPTH)/dist/lib/* usr/lib/mps
25
	mkdir -p usr/include/mps
26
	cp -Lr $(MOD_DEPTH)/dist/include/* usr/include/mps
27
	tar czvf $(NAME)-$(VERSION).tar.gz usr
28
	echo "%define name $(NAME)" >$(NAME).spec
29
	echo "%define version $(VERSION)" >>$(NAME).spec
30
	echo "%define release $(RELEASE)" >>$(NAME).spec
31
32
	cat $(srcdir)/$(NAME).spec >>$(NAME).spec
33
	cp $(NAME)-$(VERSION).tar.gz $(TOPDIR)/SOURCES
34
	rpm -ba $(NAME).spec
35
	if [ ! -d RPMS ] ; then mkdir -p RPMS ; fi
36
	if [ ! -d SRPMS ] ; then mkdir -p SRPMS ; fi
37
	cp -v $(TOPDIR)/RPMS/i386/$(NAME)-$(VERSION)-* RPMS
38
	cp -v $(TOPDIR)/RPMS/i386/$(NAME)-devel-$(VERSION)-* RPMS
39
	cp -v $(TOPDIR)/SRPMS/$(NAME)-$(VERSION)-* SRPMS
40
41
clean:
42
	rm -rf $(TOPDIR)/BUILD/$(NAME)
43
	rm -rf RPMS SRPMS usr
44
	rm -f $(NAME)-$(VERSION).tar.gz
45
++ nsprpub/pkg/solaris/SUNWpr/Makefile
Line 0 Link Here
0
-- nsprpub/pkg/solaris/SUNWprx/Makefile
1
# Generated automatically from Makefile.in by configure.
2
#
3
# Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
4
# Use is subject to license terms.
5
#
6
#ident	"$Id: Makefile.in,v 1.1.2.1 2003/01/07 15:29:37 wtc%netscape.com Exp $"
7
#
8
9
MOD_DEPTH = ../../..
10
topsrcdir   = ../../..
11
srcdir	    = .
12
13
include $(MOD_DEPTH)/config/autoconf.mk
14
15
include $(srcdir)/../Makefile.com
16
17
DATAFILES += 
18
19
all:: $(FILES)
20
publish:: all pkg
21
22
include $(srcdir)/../Makefile.targ
23
++ nsprpub/pkg/solaris/SUNWprx/Makefile
Line 0 Link Here
0
-- nsprpub/pkg/solaris/Makefile
1
# Generated automatically from Makefile.in by configure.
2
#
3
# Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
4
# Use is subject to license terms.
5
#
6
#ident	"$Id: Makefile.in,v 1.1.2.1 2003/01/07 15:29:43 wtc%netscape.com Exp $"
7
#
8
9
MOD_DEPTH = ../../..
10
topsrcdir   = ../../..
11
srcdir	    = .
12
13
include $(MOD_DEPTH)/config/autoconf.mk
14
15
include $(srcdir)/../Makefile.com
16
17
DATAFILES += 
18
19
all:: $(FILES)
20
publish:: all pkg
21
22
include $(srcdir)/../Makefile.targ
23
++ nsprpub/pkg/solaris/Makefile
Line 0 Link Here
0
-- nsprpub/pkg/Makefile
1
# Generated automatically from Makefile.in by configure.
2
#
3
# Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
4
# Use is subject to license terms.
5
#
6
#ident	"$Id: Makefile.in,v 1.1.2.1 2003/01/07 15:29:33 wtc%netscape.com Exp $"
7
#
8
9
MOD_DEPTH = ../..
10
topsrcdir   = ../..
11
srcdir	    = .
12
13
include $(MOD_DEPTH)/config/autoconf.mk
14
15
%: %.ksh
16
	$(RM) $@
17
	cp $< $@
18
	chmod +x $@
19
20
ifeq ($(USE_64), 1)
21
DIRS = \
22
	SUNWprx
23
else
24
DIRS = \
25
	SUNWpr
26
endif
27
28
PROTO = \
29
	$(ROOT) \
30
	$(ROOT)/usr \
31
	$(ROOT)/usr/lib \
32
	$(ROOT)/usr/lib/mps
33
34
ifdef USE_64
35
PROTO += $(ROOT)/usr/lib/mps/sparcv9
36
endif
37
38
include $(srcdir)/Makefile.com
39
40
awk_pkginfo: bld_awk_pkginfo
41
	./bld_awk_pkginfo -m $(MACH) -p "$(PRODUCT_VERSION)" -o $@ -v $(PRODUCT_VERSION)
42
43
all:: awk_pkginfo $(PROTO)
44
publish: awk_pkginfo $(PROTO)
45
	+$(LOOP_OVER_DIRS)
46
47
clean clobber::
48
	$(RM) awk_pkginfo bld_awk_pkginfo
49
	$(RM) -r $(ROOT)
50
51
$(ROOT) $(ROOT)/%:
52
	mkdir -p $@
53
54
ifdef USE_64
55
$(ROOT)/usr/lib/mps/sparcv9:
56
	$(LN) -sf ../../../../$(dist_libdir) $@
57
else
58
$(ROOT)/usr/lib/mps:
59
	$(LN) -sf ../../../$(dist_libdir) $@
60
endif
61
++ nsprpub/pkg/Makefile
Line 0 Link Here
0
-- security/nss/lib/freebl/unix_rand.c
1
# Generated automatically from Makefile.in by configure.
2
# 
3
# The contents of this file are subject to the Mozilla Public
4
# License Version 1.1 (the "License"); you may not use this file
5
# except in compliance with the License. You may obtain a copy of
6
# the License at http://www.mozilla.org/MPL/
7
# 
8
# Software distributed under the License is distributed on an "AS
9
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
10
# implied. See the License for the specific language governing
11
# rights and limitations under the License.
12
# 
13
# The Original Code is the Netscape Portable Runtime (NSPR).
14
# 
15
# The Initial Developer of the Original Code is Netscape
16
# Communications Corporation.  Portions created by Netscape are 
17
# Copyright (C) 1998-2000 Netscape Communications Corporation.  All
18
# Rights Reserved.
19
# 
20
# Contributor(s):
21
# 
22
# Alternatively, the contents of this file may be used under the
23
# terms of the GNU General Public License Version 2 or later (the
24
# "GPL"), in which case the provisions of the GPL are applicable 
25
# instead of those above.  If you wish to allow use of your 
26
# version of this file only under the terms of the GPL and not to
27
# allow others to use your version of this file under the MPL,
28
# indicate your decision by deleting the provisions above and
29
# replace them with the notice and other provisions required by
30
# the GPL.  If you do not delete the provisions above, a recipient
31
# may use your version of this file under either the MPL or the
32
# GPL.
33
# 
34
35
#! gmake
36
37
MOD_DEPTH	= ..
38
topsrcdir	= ..
39
srcdir		= .
40
41
include $(MOD_DEPTH)/config/autoconf.mk
42
43
DIRS = 
44
ifeq ($(OS_TARGET),Linux)
45
DIRS = linux
46
endif
47
ifeq ($(OS_TARGET),SunOS)
48
DIRS = solaris
49
endif
50
51
publish::
52
	+$(LOOP_OVER_DIRS)
53
54
include $(topsrcdir)/config/rules.mk
55
++ security/nss/lib/freebl/unix_rand.c
Lines 875-886 Link Here
875
	safe_pclose(fp);
875
	safe_pclose(fp);
876
    }
876
    }
877
#endif
877
#endif
878
#ifndef LINUX 
878
    fp = safe_popen(netstat_ni_cmd);
879
    fp = safe_popen(netstat_ni_cmd);
879
    if (fp != NULL) {
880
    if (fp != NULL) {
880
	while ((bytes = fread(buf, 1, sizeof(buf), fp)) > 0)
881
	while ((bytes = fread(buf, 1, sizeof(buf), fp)) > 0)
881
	    RNG_RandomUpdate(buf, bytes);
882
	    RNG_RandomUpdate(buf, bytes);
882
	safe_pclose(fp);
883
	safe_pclose(fp);
883
    }
884
    }
885
#endif
884
886
885
}
887
}
886
#else
888
#else
887
-- security/coreconf/Linux.mk
889
++ security/coreconf/Linux.mk
Lines 69-74 Link Here
69
ifeq ($(OS_TEST),x86_64)
69
ifeq ($(OS_TEST),x86_64)
70
	OS_REL_CFLAGS	= -DLINUX1_2 -D_XOPEN_SOURCE
70
	OS_REL_CFLAGS	= -DLINUX1_2 -D_XOPEN_SOURCE
71
	CPU_ARCH	= x86_64
71
	CPU_ARCH	= x86_64
72
	CC 		= gcc-3.4
73
	CCC		= g++-3.4
72
else
74
else
73
ifeq ($(OS_TEST),sparc)
75
ifeq ($(OS_TEST),sparc)
74
	OS_REL_CFLAGS   = -DLINUX1_2 -D_XOPEN_SOURCE
76
	OS_REL_CFLAGS   = -DLINUX1_2 -D_XOPEN_SOURCE
75
-- security/manager/boot/src/nsSecureBrowserUIImpl.cpp
77
++ security/manager/boot/src/nsSecureBrowserUIImpl.cpp
Lines 1325-1330 Link Here
1325
1325
1326
    rv = internal->GetPrompter(&prompt);
1326
    rv = internal->GetPrompter(&prompt);
1327
    *result = prompt;
1327
    *result = prompt;
1328
  } else if (uuid.Equals(NS_GET_IID(nsIDOMWindow))) {
1329
    *result = mWindow;
1330
    NS_ADDREF ((nsISupports*) *result);
1331
    rv = NS_OK;
1328
  } else {
1332
  } else {
1329
    rv = NS_ERROR_NO_INTERFACE;
1333
    rv = NS_ERROR_NO_INTERFACE;
1330
  }
1334
  }
1331
-- modules/libpr0n/build/_img_list
1335
++ modules/libpr0n/build/_img_list
Line 0 Link Here
0
-- modules/libpr0n/decoders/icon/win/nsIconChannel.h
1
png gif jpeg bmp xbm icon
2
++ modules/libpr0n/decoders/icon/win/nsIconChannel.h
Lines 45-51 Link Here
45
  NS_DECL_NSISTREAMLISTENER
45
  NS_DECL_NSISTREAMLISTENER
46
46
47
  nsIconChannel();
47
  nsIconChannel();
48
  virtual ~nsIconChannel();
48
  ~nsIconChannel();
49
49
50
  nsresult Init(nsIURI* uri);
50
  nsresult Init(nsIURI* uri);
51
51
52
-- modules/libpr0n/decoders/icon/Makefile.in
52
++ modules/libpr0n/decoders/icon/Makefile.in
Lines 35-40 Link Here
35
35
36
PACKAGE_FILE = imgicon.pkg
36
PACKAGE_FILE = imgicon.pkg
37
37
38
ifdef MOZ_ENABLE_GNOMEUI
39
EXTRA_DSO_LDOPTS = $(MOZ_GNOMEUI_LIBS)
40
PLATFORM = gtk
41
FORCE_SHARED_LIB = 1
42
EXPORT_LIBRARY =
43
endif
44
38
ifeq ($(OS_ARCH),WINNT)
45
ifeq ($(OS_ARCH),WINNT)
39
EXTRA_DSO_LIBS	= gkgfx
46
EXTRA_DSO_LIBS	= gkgfx
40
PLATFORM = win
47
PLATFORM = win
Lines 48-53 Link Here
48
PLATFORM = mac
55
PLATFORM = mac
49
endif
56
endif
50
57
58
ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
59
PLATFORM = gtk
60
endif
61
51
DIRS		= $(PLATFORM)
62
DIRS		= $(PLATFORM)
52
63
53
REQUIRES	= xpcom \
64
REQUIRES	= xpcom \
Lines 68-74 Link Here
68
79
69
SHARED_LIBRARY_LIBS = $(DIST)/lib/$(LIB_PREFIX)imgicon$(PLATFORM)_s.$(LIB_SUFFIX)
80
SHARED_LIBRARY_LIBS = $(DIST)/lib/$(LIB_PREFIX)imgicon$(PLATFORM)_s.$(LIB_SUFFIX)
70
81
71
EXTRA_DSO_LDOPTS = \
82
EXTRA_DSO_LDOPTS += \
72
		$(EXTRA_DSO_LIBS) \
83
		$(EXTRA_DSO_LIBS) \
73
		$(MOZ_COMPONENT_LIBS) \
84
		$(MOZ_COMPONENT_LIBS) \
74
		$(NULL)
85
		$(NULL)
75
-- modules/libpr0n/decoders/icon/nsIIconURI.idl
86
++ modules/libpr0n/decoders/icon/nsIIconURI.idl
Lines 21-46 Link Here
21
21
22
#include "nsIURI.idl"
22
#include "nsIURI.idl"
23
23
24
//
24
  /**
25
//  moz-icon URLs have the following syntax
25
   * nsIIconURI
26
// 
26
   *
27
//  moz-icon:<file-uri>?size=16&contentType=text/html
27
   * This interface derives from nsIURI, to provide additional information
28
// OR
28
   * about moz-icon URIs.  These URIs
29
// moz-icon://dummyfile.html
29
   *
30
// moz-icon://dummyfile.html?size=32
30
   * What *is* a moz-icon URI you ask?  Well, it has the following syntax:
31
// 
31
   *
32
//  The content type field is optional. The size field is optional. You only need to specify a file url inside the icon
32
   * moz-icon://[<file-uri> | <file-with-extension>]? ['?'[<parameter-value-pairs>]]
33
// if the file you want the icon for actually exists. Otherwise you can omit the file:// and just place a dummy file name with the extension
33
   *
34
// or content type you want: moz-icon://dummy.html. 
34
   * <file-uri> is a legal file: URI spec.  You only need to specify a file: URI inside the icon
35
// 
35
   * if the file you want the icon for actually exists.
36
   *
37
   * <file-with-extension> is any filename with an extension, e.g. "dummy.html".
38
   * If the file you want an icon for isn't known to exist, you can omit the file URI, and just
39
   * place a dummy file name with the extension or content type you want: moz-icon://dummy.html.
40
   *
41
   * <stock-image> is of the format:   stock/<icon-name>
42
   *
43
   * <icon-name> is a valid icon name, such as 'ok', 'cancel', 'yes', 'no'.
44
   * XXXcaa document or reference to all 76 (yes, 76) of them.
45
   *
46
   * Legal parameter value pairs are listed below:
47
   *
48
   *   Parameter:   size
49
   *   Values:      [<integer> | button | toolbar | toolbarsmall | menu | dialog]
50
   *   Description: If integer, this is the desired size in square pixels of the icon
51
   *                Else, use the OS default for the specified keyword context.
52
   *                Note that stock images require a keyword, not an integer pixel value.
53
   *
54
   *   Parameter:   contentType
55
   *   Values:      <mime-type>
56
   *   Description: A valid mime type for the icon.
57
   */
36
58
37
[scriptable, uuid(733A7A16-2D36-11d5-9907-001083010E9B)]
59
[scriptable, uuid(733A7A16-2D36-11d5-9907-001083010E9B)]
38
interface nsIMozIconURI : nsIURI 
60
interface nsIMozIconURI : nsIURI 
39
{
61
{
40
  // Returns the file URL contained within this -moz-icon url.
62
  /**
41
  attribute nsIURI IconFile; // maybe null if there isn't a real file we are trying to fetch
63
   * iconFile
64
   *
65
   * the file URL contained within this moz-icon url, or null.
66
   */
67
  attribute nsIURI iconFile;
68
  /**
69
   * imageSize
70
   *
71
   * The image area in square pixels, defaulting to 16 if unspecified.
72
   */
73
  attribute unsigned long imageSize;
42
74
43
  attribute unsigned long imageSize; // measured by # of pixels in a row. defaults to 16.
75
  /**
44
  attribute ACString contentType;      // may be an empty string
76
   * contentType
77
   *
78
   * A valid mime type, or the empty string.
79
   */
80
81
  attribute ACString contentType;
82
83
  /**
84
   * fileExtension
85
   *
86
   * The file extension of the file which we are looking up.
87
   */
45
  readonly attribute ACString fileExtension;    
88
  readonly attribute ACString fileExtension;    
89
90
  /**
91
   * stockIcon
92
   *
93
   * The stock icon name requested from the OS.
94
   */
95
   readonly attribute ACString stockIcon;
96
97
  /**
98
   * stockIconSize
99
   *
100
   * The stock icon size requested from the OS.
101
   */
102
   readonly attribute ACString stockIconSize;
103
104
  /**
105
   * stockIconState
106
   *
107
   * The stock icon state requested from the OS.
108
   */
109
   readonly attribute ACString stockIconState;
46
};
110
};
47
-- modules/libpr0n/decoders/icon/nsIconModule.cpp
111
++ modules/libpr0n/decoders/icon/nsIconModule.cpp
Lines 26-31 Link Here
26
26
27
#include "nsIconDecoder.h"
27
#include "nsIconDecoder.h"
28
#include "nsIconProtocolHandler.h"
28
#include "nsIconProtocolHandler.h"
29
#include "nsIconURI.h"
29
30
30
// objects that just require generic constructors
31
// objects that just require generic constructors
31
/******************************************************************************
32
/******************************************************************************
Lines 41-47 Link Here
41
  { "icon decoder",
42
  { "icon decoder",
42
    NS_ICONDECODER_CID,
43
    NS_ICONDECODER_CID,
43
    "@mozilla.org/image/decoder;2?type=image/icon",
44
    "@mozilla.org/image/decoder;2?type=image/icon",
44
    nsIconDecoderConstructor, },
45
    nsIconDecoderConstructor
46
  },
45
47
46
   { "Icon Protocol Handler",      
48
   { "Icon Protocol Handler",      
47
      NS_ICONPROTOCOL_CID,
49
      NS_ICONPROTOCOL_CID,
Lines 50-53 Link Here
50
    }
52
    }
51
};
53
};
52
54
53
NS_IMPL_NSGETMODULE(nsIconDecoderModule, components)
55
PR_STATIC_CALLBACK(nsresult)
56
IconDecoderModuleCtor(nsIModule* aSelf)
57
{
58
  nsMozIconURI::InitAtoms();
59
  return NS_OK;
60
}
61
62
NS_IMPL_NSGETMODULE_WITH_CTOR(nsIconDecoderModule, components,
63
                              IconDecoderModuleCtor)
54
-- modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp
64
++ modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp
Lines 89-103 Link Here
89
89
90
NS_IMETHODIMP nsIconProtocolHandler::NewChannel(nsIURI* url, nsIChannel* *result)
90
NS_IMETHODIMP nsIconProtocolHandler::NewChannel(nsIURI* url, nsIChannel* *result)
91
{
91
{
92
  nsCOMPtr<nsIChannel> channel;
92
  nsIconChannel* channel = new nsIconChannel;
93
  NS_NEWXPCOM(channel, nsIconChannel);
93
  if (!channel)
94
    return NS_ERROR_OUT_OF_MEMORY;
95
  NS_ADDREF(channel);
94
96
95
  if (channel)
97
  nsresult rv = channel->Init(url);
96
    NS_STATIC_CAST(nsIconChannel*,NS_STATIC_CAST(nsIChannel*, channel))->Init(url);
98
  if (NS_FAILED(rv)) {
99
    delete channel;
100
    return rv;
101
  }
97
102
98
  *result = channel;
103
  *result = channel;
99
  NS_IF_ADDREF(*result);
100
101
  return NS_OK;
104
  return NS_OK;
102
}
105
}
103
106
104
-- modules/libpr0n/decoders/icon/nsIconURI.cpp
107
++ modules/libpr0n/decoders/icon/nsIconURI.cpp
Lines 26-31 Link Here
26
#include "nsCRT.h"
26
#include "nsCRT.h"
27
#include "nsReadableUtils.h"
27
#include "nsReadableUtils.h"
28
#include "nsPrintfCString.h"
28
#include "nsPrintfCString.h"
29
#include "nsIAtom.h"
30
#include "nsStaticAtom.h"
29
31
30
static NS_DEFINE_CID(kIOServiceCID,     NS_IOSERVICE_CID);
32
static NS_DEFINE_CID(kIOServiceCID,     NS_IOSERVICE_CID);
31
#define DEFAULT_IMAGE_SIZE          16
33
#define DEFAULT_IMAGE_SIZE          16
Lines 34-50 Link Here
34
// from the icon url.
36
// from the icon url.
35
static void extractAttributeValue(const char * searchString, const char * attributeName, char ** result);
37
static void extractAttributeValue(const char * searchString, const char * attributeName, char ** result);
36
 
38
 
39
static nsIAtom *sStockSizeButton = nsnull;
40
static nsIAtom *sStockSizeToolbar = nsnull;
41
static nsIAtom *sStockSizeToolbarsmall = nsnull;
42
static nsIAtom *sStockSizeMenu = nsnull;
43
static nsIAtom *sStockSizeDialog = nsnull;
44
static nsIAtom *sStockStateNormal = nsnull;
45
static nsIAtom *sStockStateDisabled = nsnull;
46
47
/* static */ const nsStaticAtom nsMozIconURI::sSizeAtoms[] =
48
{
49
  { "button", &sStockSizeButton },
50
  { "toolbar", &sStockSizeToolbar },
51
  { "toolbarsmall", &sStockSizeToolbarsmall },
52
  { "menu", &sStockSizeMenu },
53
  { "dialog", &sStockSizeDialog }
54
};
55
56
/* static */ const nsStaticAtom nsMozIconURI::sStateAtoms[] =
57
{
58
  { "normal", &sStockStateNormal },
59
  { "disabled", &sStockStateDisabled }
60
};
61
37
////////////////////////////////////////////////////////////////////////////////
62
////////////////////////////////////////////////////////////////////////////////
38
 
63
 
39
nsMozIconURI::nsMozIconURI()
64
nsMozIconURI::nsMozIconURI()
65
  : mSize(DEFAULT_IMAGE_SIZE)
40
{
66
{
41
  mSize = DEFAULT_IMAGE_SIZE;
42
}
67
}
43
 
68
 
44
nsMozIconURI::~nsMozIconURI()
69
nsMozIconURI::~nsMozIconURI()
45
{
70
{
46
}
71
}
47
72
73
74
/* static */ void
75
nsMozIconURI::InitAtoms()
76
{
77
  NS_RegisterStaticAtoms(sSizeAtoms, NS_ARRAY_LENGTH(sSizeAtoms));
78
  NS_RegisterStaticAtoms(sStateAtoms, NS_ARRAY_LENGTH(sStateAtoms));
79
}
80
48
NS_IMPL_THREADSAFE_ISUPPORTS2(nsMozIconURI, nsIMozIconURI, nsIURI)
81
NS_IMPL_THREADSAFE_ISUPPORTS2(nsMozIconURI, nsIMozIconURI, nsIURI)
49
82
50
#define NS_MOZICON_SCHEME           "moz-icon:"
83
#define NS_MOZICON_SCHEME           "moz-icon:"
Lines 64-69 Link Here
64
    NS_ENSURE_SUCCESS(rv, rv);
97
    NS_ENSURE_SUCCESS(rv, rv);
65
    spec += fileIconSpec;
98
    spec += fileIconSpec;
66
  }
99
  }
100
  else if (!mStockIcon.IsEmpty())
101
  {
102
    spec += "//stock/";
103
    spec += mStockIcon;
104
    if (mStockIconSize) {
105
      spec += NS_MOZ_ICON_DELIMITER;
106
      spec += "size=";
107
      const char *size_string;
108
      mStockIconSize->GetUTF8String(&size_string);
109
      spec.Append(nsPrintfCString("%s", size_string));
110
    }
111
    if (mStockIconState) {
112
      spec += NS_MOZ_ICON_DELIMITER;
113
      spec += "state=";
114
      const char *state_string;
115
      mStockIconSize->GetUTF8String(&state_string);
116
      spec.Append(nsPrintfCString("%s", state_string));
117
    }
118
    return NS_OK;
119
  }
67
  else
120
  else
68
  {
121
  {
69
    spec += "//";
122
    spec += "//";
Lines 116-127 Link Here
116
				else // there is nothing left so eat up rest of line.
169
				else // there is nothing left so eat up rest of line.
117
					attributeValue = PL_strdup(startOfAttribute);
170
					attributeValue = PL_strdup(startOfAttribute);
118
			} // if we have a attribute value
171
			} // if we have a attribute value
119
120
		} // if we have a attribute name
172
		} // if we have a attribute name
121
	} // if we got non-null search string and attribute name values
173
	} // if we got non-null search string and attribute name values
122
174
123
  *result = attributeValue; // passing ownership of attributeValue into result...no need to 
175
  *result = attributeValue; // passing ownership of attributeValue into result...no need to 
124
	return;
125
}
176
}
126
177
127
NS_IMETHODIMP
178
NS_IMETHODIMP
Lines 138-143 Link Here
138
  if (strcmp("moz-icon", scheme.get()) != 0) 
189
  if (strcmp("moz-icon", scheme.get()) != 0) 
139
    return NS_ERROR_MALFORMED_URI;
190
    return NS_ERROR_MALFORMED_URI;
140
191
192
  nsXPIDLCString sizeString;
193
  nsXPIDLCString stateString;
141
  nsCAutoString mozIconPath(aSpec);
194
  nsCAutoString mozIconPath(aSpec);
142
  PRInt32 endPos = mozIconPath.FindChar(':') + 1; // guaranteed to exist!
195
  PRInt32 endPos = mozIconPath.FindChar(':') + 1; // guaranteed to exist!
143
  PRInt32 pos = mozIconPath.FindChar(NS_MOZ_ICON_DELIMITER);
196
  PRInt32 pos = mozIconPath.FindChar(NS_MOZ_ICON_DELIMITER);
Lines 150-175 Link Here
150
  {
203
  {
151
    mozIconPath.Mid(mDummyFilePath, endPos, pos - endPos);
204
    mozIconPath.Mid(mDummyFilePath, endPos, pos - endPos);
152
    // fill in any size and content type values...
205
    // fill in any size and content type values...
153
    nsXPIDLCString sizeString;
154
    nsXPIDLCString contentTypeString;
206
    nsXPIDLCString contentTypeString;
155
    extractAttributeValue(mozIconPath.get() + pos, "size=", getter_Copies(sizeString));
207
    extractAttributeValue(mozIconPath.get() + pos, "size=", getter_Copies(sizeString));
208
    extractAttributeValue(mozIconPath.get() + pos, "state=", getter_Copies(stateString));
156
    extractAttributeValue(mozIconPath.get() + pos, "contentType=", getter_Copies(contentTypeString));
209
    extractAttributeValue(mozIconPath.get() + pos, "contentType=", getter_Copies(contentTypeString));
157
    mContentType = contentTypeString;
210
    mContentType = contentTypeString;
158
159
    if (sizeString.get())
160
    {
161
      PRInt32 sizeValue = atoi(sizeString);
162
      // if the size value we got back is > 0 then use it
163
      if (sizeValue)
164
        mSize = sizeValue;
165
    }
166
  }
211
  }
167
212
168
  // Okay now we have a bit of a hack here...filePath can have two forms:
213
  // Okay now we have a bit of a hack here...filePath can have three forms:
169
  // (1) file://<some valid platform specific file url>
214
  // (1) file://<some valid platform specific file url>
170
  // (2) //<some dummy file with an extension>
215
  // (2) //<some dummy file with an extension>
216
  // (3) stock/<icon-identifier>
171
  // We need to determine which case we are and behave accordingly...
217
  // We need to determine which case we are and behave accordingly...
172
  if (mDummyFilePath.Length() > 2) // we should at least have two forward slashes followed by a file or a file://
218
  if (mDummyFilePath.Length() > 2)
219
  {
220
    if (!strncmp("//stock/", mDummyFilePath.get(), 8))
221
    {
222
      // we have a stock icon
223
      mStockIcon = Substring(mDummyFilePath, 8);
224
      if (!sizeString.IsEmpty())
225
      {
226
        nsCOMPtr<nsIAtom> atom = do_GetAtom(sizeString);
227
        for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(sSizeAtoms); i++)
228
        {
229
          if (atom == *(sSizeAtoms[i].mAtom))
230
          {
231
            mStockIconSize = atom;
232
            break;
233
          }
234
        }
235
236
        atom = do_GetAtom(stateString);
237
        for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(sStateAtoms); i++)
238
        {
239
          if (atom == *(sStateAtoms[i].mAtom))
240
          {
241
            mStockIconState = atom;
242
            break;
243
          }
244
        }
245
      }
246
    }
247
    else
173
  {
248
  {
174
    if (!nsCRT::strncmp("//", mDummyFilePath.get(), 2))// must not have a url here..
249
    if (!nsCRT::strncmp("//", mDummyFilePath.get(), 2))// must not have a url here..
175
    {
250
    {
Lines 177-192 Link Here
177
      // and remember the rest in mDummyFilePath
252
      // and remember the rest in mDummyFilePath
178
      mDummyFilePath.Cut(0, 2); // cut the first 2 bytes....
253
      mDummyFilePath.Cut(0, 2); // cut the first 2 bytes....
179
    }
254
    }
180
255
      else if (!nsCRT::strncmp("file://", mDummyFilePath.get(), 7))
181
    if (!nsCRT::strncmp("file://", mDummyFilePath.get(), 7))
182
    { 
256
    { 
183
      // we have a file url.....so store it...
257
      // we have a file url.....so store it...
184
      rv = ioService->NewURI(mDummyFilePath, nsnull, nsnull, getter_AddRefs(mFileIcon));
258
      rv = ioService->NewURI(mDummyFilePath, nsnull, nsnull, getter_AddRefs(mFileIcon));
185
      if (NS_FAILED(rv)) return NS_ERROR_MALFORMED_URI;
259
      }
260
      if (!sizeString.IsEmpty())
261
      {
262
        PRInt32 sizeValue = atoi(sizeString);
263
        // if the size value we got back is > 0 then use it
264
        if (sizeValue)
265
          mSize = sizeValue;
266
      }
186
    }
267
    }
187
  }
268
  }
188
  else
269
  else
189
    return NS_ERROR_MALFORMED_URI; // they didn't include a file path...
270
    rv = NS_ERROR_MALFORMED_URI; // they didn't include a file path...
190
  return rv;
271
  return rv;
191
}
272
}
192
273
Lines 436-445 Link Here
436
  const char * chFileName = fileExtension.get(); // get the underlying buffer
517
  const char * chFileName = fileExtension.get(); // get the underlying buffer
437
  const char * fileExt = strrchr(chFileName, '.');
518
  const char * fileExt = strrchr(chFileName, '.');
438
  if (!fileExt) return NS_ERROR_FAILURE; // no file extension to work from.
519
  if (!fileExt) return NS_ERROR_FAILURE; // no file extension to work from.
439
  else
520
440
    aFileExtension = nsDependentCString(fileExt);
521
    aFileExtension = nsDependentCString(fileExt);
441
522
442
  return NS_OK;
523
  return NS_OK;
443
}
524
}
444
525
526
NS_IMETHODIMP
527
nsMozIconURI::GetStockIcon(nsACString &aStockIcon)
528
{
529
  aStockIcon.Assign(mStockIcon);
530
531
  return NS_OK;
532
}
533
534
NS_IMETHODIMP
535
nsMozIconURI::GetStockIconSize(nsACString &aSize)
536
{
537
  if (mStockIconSize)
538
    return mStockIconSize->ToUTF8String(aSize);
539
  aSize.Truncate();
540
  return NS_OK;
541
}
542
543
NS_IMETHODIMP
544
nsMozIconURI::GetStockIconState(nsACString &aState)
545
{
546
  if (mStockIconState)
547
    return mStockIconState->ToUTF8String(aState);
548
  aState.Truncate();
549
  return NS_OK;
550
}
445
////////////////////////////////////////////////////////////////////////////////
551
////////////////////////////////////////////////////////////////////////////////
446
-- modules/libpr0n/decoders/icon/nsIconURI.h
552
++ modules/libpr0n/decoders/icon/nsIconURI.h
Lines 25-30 Link Here
25
#include "nsIIconURI.h"
25
#include "nsIIconURI.h"
26
#include "nsCOMPtr.h"
26
#include "nsCOMPtr.h"
27
#include "nsString.h"
27
#include "nsString.h"
28
class nsStaticAtom;
29
30
class nsIAtom;
28
31
29
#define NS_MOZICONURI_CID                            \
32
#define NS_MOZICONURI_CID                            \
30
{                                                    \
33
{                                                    \
Lines 41-46 Link Here
41
  NS_DECL_NSIURI
44
  NS_DECL_NSIURI
42
  NS_DECL_NSIMOZICONURI
45
  NS_DECL_NSIMOZICONURI
43
46
47
  static void InitAtoms();
48
44
  // nsJARURI
49
  // nsJARURI
45
  nsMozIconURI();
50
  nsMozIconURI();
46
  virtual ~nsMozIconURI();
51
  virtual ~nsMozIconURI();
Lines 50-55 Link Here
50
  PRUint32 mSize; // the # of pixels in a row that we want for this image. Typically 16, 32, 128, etc.
55
  PRUint32 mSize; // the # of pixels in a row that we want for this image. Typically 16, 32, 128, etc.
51
  nsCString mContentType; // optional field explicitly specifying the content type
56
  nsCString mContentType; // optional field explicitly specifying the content type
52
  nsCString mDummyFilePath; // if we don't have a valid file url, the file path is stored here....i.e if mFileIcon is null.....
57
  nsCString mDummyFilePath; // if we don't have a valid file url, the file path is stored here....i.e if mFileIcon is null.....
58
  nsCString mStockIcon;
59
  nsCOMPtr<nsIAtom> mStockIconSize;
60
  nsCOMPtr<nsIAtom> mStockIconState;
61
62
  static const nsStaticAtom sSizeAtoms[];
63
  static const nsStaticAtom sStateAtoms[];
53
64
54
  nsresult FormatSpec(nsACString &result);
65
  nsresult FormatSpec(nsACString &result);
55
};
66
};
56
-- modules/libpr0n/decoders/icon/gtk/Makefile.in
67
++ modules/libpr0n/decoders/icon/gtk/Makefile.in
Line 0 Link Here
0
-- modules/libpr0n/decoders/icon/gtk/nsIconChannel.h
1
# ***** BEGIN LICENSE BLOCK *****
2
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
3
#
4
# The contents of this file are subject to the Mozilla Public License Version
5
# 1.1 (the "License"); you may not use this file except in compliance with
6
# the License. You may obtain a copy of the License at
7
# http://www.mozilla.org/MPL/
8
#
9
# Software distributed under the License is distributed on an "AS IS" basis,
10
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11
# for the specific language governing rights and limitations under the
12
# License.
13
#
14
# The Original Code is the Makefile for the Gnome icon decoder.
15
#
16
# The Initial Developer of the Original Code is
17
# Christian Biesinger <cbiesinger@web.de>.
18
# Portions created by the Initial Developer are Copyright (C) 2004
19
# the Initial Developer. All Rights Reserved.
20
#
21
# Contributor(s):
22
#
23
# Alternatively, the contents of this file may be used under the terms of
24
# either the GNU General Public License Version 2 or later (the "GPL"), or
25
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26
# in which case the provisions of the GPL or the LGPL are applicable instead
27
# of those above. If you wish to allow use of your version of this file only
28
# under the terms of either the GPL or the LGPL, and not to allow others to
29
# use your version of this file under the terms of the MPL, indicate your
30
# decision by deleting the provisions above and replace them with the notice
31
# and other provisions required by the GPL or the LGPL. If you do not delete
32
# the provisions above, a recipient may use your version of this file under
33
# the terms of any one of the MPL, the GPL or the LGPL.
34
#
35
# ***** END LICENSE BLOCK *****
36
37
38
DEPTH		= ../../../../..
39
topsrcdir	= @top_srcdir@
40
srcdir		= @srcdir@
41
VPATH		= @srcdir@
42
43
include $(DEPTH)/config/autoconf.mk
44
45
MODULE		= imgicon
46
LIBRARY_NAME	= imgicongtk_s
47
48
REQUIRES	= xpcom \
49
		  string \
50
		  necko \
51
		  intl \
52
		  mimetype \
53
		  $(NULL)
54
55
CPPSRCS		= nsIconChannel.cpp
56
57
LOCAL_INCLUDES += $(MOZ_GNOMEUI_CFLAGS) $(MOZ_GTK2_CFLAGS)
58
59
# we don't want the shared lib, but we want to force the creation of a static lib.
60
FORCE_STATIC_LIB = 1
61
62
include $(topsrcdir)/config/rules.mk
63
64
++ modules/libpr0n/decoders/icon/gtk/nsIconChannel.h
Line 0 Link Here
0
-- modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp
1
/* ***** BEGIN LICENSE BLOCK *****
2
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3
 *
4
 * The contents of this file are subject to the Mozilla Public License Version
5
 * 1.1 (the "License"); you may not use this file except in compliance with
6
 * the License. You may obtain a copy of the License at
7
 * http://www.mozilla.org/MPL/
8
 *
9
 * Software distributed under the License is distributed on an "AS IS" basis,
10
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11
 * for the specific language governing rights and limitations under the
12
 * License.
13
 *
14
 * The Original Code is the Mozilla icon channel for gnome.
15
 *
16
 * The Initial Developer of the Original Code is
17
 * Christian Biesinger <cbiesinger@web.de>.
18
 * Portions created by the Initial Developer are Copyright (C) 2004
19
 * the Initial Developer. All Rights Reserved.
20
 *
21
 * Contributor(s):
22
 *
23
 * Alternatively, the contents of this file may be used under the terms of
24
 * either the GNU General Public License Version 2 or later (the "GPL"), or
25
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26
 * in which case the provisions of the GPL or the LGPL are applicable instead
27
 * of those above. If you wish to allow use of your version of this file only
28
 * under the terms of either the GPL or the LGPL, and not to allow others to
29
 * use your version of this file under the terms of the MPL, indicate your
30
 * decision by deleting the provisions above and replace them with the notice
31
 * and other provisions required by the GPL or the LGPL. If you do not delete
32
 * the provisions above, a recipient may use your version of this file under
33
 * the terms of any one of the MPL, the GPL or the LGPL.
34
 *
35
 * ***** END LICENSE BLOCK ***** */
36
37
#ifndef nsIconChannel_h_
38
#define nsIconChannel_h_
39
40
#include "nsIChannel.h"
41
#include "nsIStreamListener.h"
42
#include "nsIURI.h"
43
#include "nsIIconURI.h"
44
#include "nsCOMPtr.h"
45
46
/**
47
 * This class is the gnome implementation of nsIconChannel. It basically asks
48
 * gtk/gnome for an icon, saves it as a tmp icon, and creates a new channel for
49
 * that file to which all calls will be proxied.
50
 */
51
class nsIconChannel : public nsIChannel
52
{
53
  public:
54
    NS_DECL_ISUPPORTS
55
    NS_FORWARD_NSIREQUEST(mRealChannel->)
56
    NS_FORWARD_NSICHANNEL(mRealChannel->)
57
58
    nsIconChannel() {}
59
    ~nsIconChannel() {}
60
61
    /**
62
     * Called by nsIconProtocolHandler after it creates this channel.
63
     * Must be called before calling any other function on this object.
64
     * If this method fails, no other function must be called on this object.
65
     */
66
    NS_HIDDEN_(nsresult) Init(nsIURI* aURI);
67
  private:
68
    /**
69
     * The channel to the temp icon file (e.g. to /tmp/2qy9wjqw.html).
70
     * Will always be non-null after a successful Init.
71
     */
72
    nsCOMPtr<nsIChannel> mRealChannel;
73
    /**
74
     * The moz-icon URI we're loading. Always non-null after a successful Init.
75
     */
76
    nsCOMPtr<nsIMozIconURI> mURI;
77
78
    /**
79
     * Called by Init if we need to use the gnomeui library.
80
     */
81
    nsresult InitWithGnome();
82
};
83
84
#endif
85
++ modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp
Line 0 Link Here
0
-- modules/libpr0n/decoders/Makefile.in
1
/* vim:set ts=2 sw=2 sts=2 cin et: */
2
/* ***** BEGIN LICENSE BLOCK *****
3
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
 *
5
 * The contents of this file are subject to the Mozilla Public License Version
6
 * 1.1 (the "License"); you may not use this file except in compliance with
7
 * the License. You may obtain a copy of the License at
8
 * http://www.mozilla.org/MPL/
9
 *
10
 * Software distributed under the License is distributed on an "AS IS" basis,
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
 * for the specific language governing rights and limitations under the
13
 * License.
14
 *
15
 * The Original Code is the Mozilla icon channel for gnome.
16
 *
17
 * The Initial Developer of the Original Code is
18
 * Christian Biesinger <cbiesinger@web.de>.
19
 * Portions created by the Initial Developer are Copyright (C) 2004
20
 * the Initial Developer. All Rights Reserved.
21
 *
22
 * Contributor(s):
23
 *
24
 * Alternatively, the contents of this file may be used under the terms of
25
 * either the GNU General Public License Version 2 or later (the "GPL"), or
26
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27
 * in which case the provisions of the GPL or the LGPL are applicable instead
28
 * of those above. If you wish to allow use of your version of this file only
29
 * under the terms of either the GPL or the LGPL, and not to allow others to
30
 * use your version of this file under the terms of the MPL, indicate your
31
 * decision by deleting the provisions above and replace them with the notice
32
 * and other provisions required by the GPL or the LGPL. If you do not delete
33
 * the provisions above, a recipient may use your version of this file under
34
 * the terms of any one of the MPL, the GPL or the LGPL.
35
 *
36
 * ***** END LICENSE BLOCK ***** */
37
38
#include <stdlib.h>
39
#include <unistd.h>
40
// Older versions of these headers seem to be missing an extern "C"
41
extern "C" {
42
#include <libgnome/libgnome.h>
43
#include <libgnomeui/gnome-icon-theme.h>
44
#include <libgnomeui/gnome-icon-lookup.h>
45
#include <libgnomeui/gnome-ui-init.h>
46
47
#include <libgnomevfs/gnome-vfs-file-info.h>
48
#include <libgnomevfs/gnome-vfs-ops.h>
49
}
50
51
#include <gtk/gtk.h>
52
#include <gdk/gdk.h>
53
54
#include "nsIMIMEService.h"
55
56
#include "nsIStringBundle.h"
57
58
#include "nsEscape.h"
59
#include "nsNetUtil.h"
60
#include "nsIURL.h"
61
#include "prlink.h"
62
#include "nsIconChannel.h"
63
64
NS_IMPL_ISUPPORTS2(nsIconChannel, nsIRequest, nsIChannel)
65
66
/**
67
 * Given a path to a PNG Image, creates a channel from it.
68
 * Note that the channel will delete the file when it's done with it.
69
 *
70
 * (When this function fails, the file will NOT be deleted)
71
 */
72
static nsresult pngfile_to_channel(const char* aFilename, nsIChannel** aChannel) {
73
  // Now we have to create an uri for the file...
74
  nsCOMPtr<nsILocalFile> lf;
75
  nsresult rv = NS_NewNativeLocalFile(nsDependentCString(aFilename), PR_FALSE,
76
                                      getter_AddRefs(lf));
77
  if (NS_FAILED(rv))
78
    return rv;
79
80
  nsCOMPtr<nsIInputStream> is;
81
  rv = NS_NewLocalFileInputStream(getter_AddRefs(is), lf, -1, -1,
82
                                  nsIFileInputStream::DELETE_ON_CLOSE);
83
  if (NS_FAILED(rv))
84
    return rv;
85
86
  nsCOMPtr<nsIURI> realURI;
87
  rv = NS_NewFileURI(getter_AddRefs(realURI), lf);
88
  if (NS_FAILED(rv))
89
    return rv;
90
91
  rv = NS_NewInputStreamChannel(aChannel, realURI, is,
92
                                NS_LITERAL_CSTRING("image/png"));
93
  return rv;
94
}
95
96
static nsresult
97
moz_gdk_pixbuf_to_channel(GdkPixbuf* aPixbuf, nsIChannel **aChannel)
98
{
99
  char tmpfile[] = "/tmp/moziconXXXXXX";
100
  int fd = mkstemp(tmpfile);
101
  if (fd == -1) {
102
    return NS_ERROR_UNEXPECTED;
103
  }
104
105
  GError *err = NULL;
106
  gboolean ok = gdk_pixbuf_save(aPixbuf, tmpfile, "png", &err, NULL);
107
  if (!ok) {
108
    close(fd);
109
    remove(tmpfile);
110
    if (err)
111
      g_error_free(err);
112
    return NS_ERROR_UNEXPECTED;
113
  }
114
115
  nsresult rv = pngfile_to_channel(tmpfile, aChannel);
116
  close(fd);
117
  if (NS_FAILED(rv))
118
    remove(tmpfile);
119
  return rv;
120
}
121
122
static GtkWidget *gProtoWindow = nsnull;
123
static GtkWidget *gStockImageWidget = nsnull;
124
static GtkIconFactory *gIconFactory = nsnull;
125
126
static void
127
ensure_stock_image_widget()
128
{
129
    if (!gProtoWindow) {
130
        gProtoWindow = gtk_window_new(GTK_WINDOW_POPUP);
131
        gtk_widget_realize(gProtoWindow);
132
        GtkWidget* protoLayout = gtk_fixed_new();
133
        gtk_container_add(GTK_CONTAINER(gProtoWindow), protoLayout);
134
135
        gStockImageWidget = gtk_image_new();
136
        gtk_container_add(GTK_CONTAINER(protoLayout), gStockImageWidget);
137
        gtk_widget_realize(gStockImageWidget);
138
    }
139
}
140
141
static void
142
ensure_icon_factory()
143
{
144
  if (!gIconFactory) {
145
    gIconFactory = gtk_icon_factory_new();
146
    gtk_icon_factory_add_default (gIconFactory);
147
    g_object_unref(gIconFactory);
148
  }
149
}
150
151
static GtkIconSize
152
moz_gtk_icon_size(const char *name)
153
{
154
  if (strcmp(name, "button") == 0)
155
    return GTK_ICON_SIZE_BUTTON;
156
157
  if (strcmp(name, "menu") == 0)
158
    return GTK_ICON_SIZE_MENU;
159
160
  if (strcmp(name, "toolbar") == 0)
161
    return GTK_ICON_SIZE_LARGE_TOOLBAR;
162
163
  if (strcmp(name, "toolbarsmall") == 0)
164
    return GTK_ICON_SIZE_SMALL_TOOLBAR;
165
166
  if (strcmp(name, "dialog") == 0)
167
    return GTK_ICON_SIZE_DIALOG;
168
169
  return GTK_ICON_SIZE_INVALID;
170
}
171
172
nsresult
173
nsIconChannel::InitWithGnome()
174
{
175
  if (!gnome_program_get()) {
176
    // Get the brandShortName from the string bundle to pass to GNOME
177
    // as the application name.  This may be used for things such as
178
    // the title of grouped windows in the panel.
179
    nsCOMPtr<nsIStringBundleService> bundleService = 
180
      do_GetService(NS_STRINGBUNDLE_CONTRACTID);
181
182
    NS_ASSERTION(bundleService, "String bundle service must be present!");
183
184
    nsCOMPtr<nsIStringBundle> bundle;
185
    bundleService->CreateBundle("chrome://global/locale/brand.properties",
186
                                getter_AddRefs(bundle));
187
    nsXPIDLString appName;
188
189
    if (bundle) {
190
      bundle->GetStringFromName(NS_LITERAL_STRING("brandShortName").get(),
191
                                getter_Copies(appName));
192
    } else {
193
      NS_WARNING("brand.properties not present, using default application name");
194
      appName.Assign(NS_LITERAL_STRING("Gecko"));
195
    }
196
197
    char* empty[] = { "" };
198
    gnome_init(NS_ConvertUTF16toUTF8(appName).get(), "1.0", 1, empty);
199
  }
200
201
  PRUint32 iconSize;
202
  nsresult rv = mURI->GetImageSize(&iconSize);
203
  NS_ASSERTION(NS_SUCCEEDED(rv), "GetImageSize failed");
204
205
  nsCAutoString type;
206
  mURI->GetContentType(type);
207
208
  GnomeVFSFileInfo fileInfo = {0};
209
  fileInfo.refcount = 1; // In case some GnomeVFS function addrefs and releases it
210
211
  nsCAutoString spec;
212
  nsCOMPtr<nsIURI> fileURI;
213
  rv = mURI->GetIconFile(getter_AddRefs(fileURI));
214
  if (fileURI) {
215
    fileURI->GetAsciiSpec(spec);
216
    // Only ask gnome-vfs for a GnomeVFSFileInfo for file: uris, to avoid a
217
    // network request
218
    PRBool isFile;
219
    if (NS_SUCCEEDED(fileURI->SchemeIs("file", &isFile)) && isFile) {
220
      gnome_vfs_get_file_info(spec.get(), &fileInfo, GNOME_VFS_FILE_INFO_DEFAULT);
221
    }
222
    else {
223
      // We have to get a leaf name from our uri...
224
      nsCOMPtr<nsIURL> url(do_QueryInterface(fileURI));
225
      if (url) {
226
        nsCAutoString name;
227
        // The filename we get is UTF-8-compatible, which matches gnome expectations.
228
        // See also: http://lists.gnome.org/archives/gnome-vfs-list/2004-March/msg00049.html
229
        // "Whenever we can detect the charset used for the URI type we try to
230
        //  convert it to/from utf8 automatically inside gnome-vfs."
231
        // I'll interpret that as "otherwise, this field is random junk".
232
        url->GetFileName(name);
233
        fileInfo.name = g_strdup(name.get());
234
      }
235
      // If this is no nsIURL, nothing we can do really.
236
237
      if (!type.IsEmpty()) {
238
        fileInfo.valid_fields = GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE;
239
        fileInfo.mime_type = g_strdup(type.get());
240
      }
241
    }
242
  }
243
244
245
  if (type.IsEmpty()) {
246
    nsCOMPtr<nsIMIMEService> ms(do_GetService("@mozilla.org/mime;1"));
247
    if (ms) {
248
      nsCAutoString fileExt;
249
      mURI->GetFileExtension(fileExt);
250
      nsXPIDLCString extType;
251
      ms->GetTypeFromExtension(fileExt.get(), getter_Copies(extType));
252
      fileExt.Assign(extType);
253
    }
254
  }
255
256
  // Get the icon theme
257
  GnomeIconTheme *t = gnome_icon_theme_new();
258
  if (!t) {
259
    gnome_vfs_file_info_clear(&fileInfo);
260
    return NS_ERROR_NOT_AVAILABLE;
261
  }
262
 
263
264
  char* name = gnome_icon_lookup(t, NULL, spec.get(), NULL, &fileInfo, type.get(), GNOME_ICON_LOOKUP_FLAGS_NONE, NULL);
265
  gnome_vfs_file_info_clear(&fileInfo);
266
  if (!name) {
267
    g_object_unref(G_OBJECT(t));
268
    return NS_ERROR_NOT_AVAILABLE;
269
  }
270
 
271
  char* file = gnome_icon_theme_lookup_icon(t, name, iconSize, NULL, NULL);
272
  g_free(name);
273
  g_object_unref(G_OBJECT(t));
274
  if (!file)
275
    return NS_ERROR_NOT_AVAILABLE;
276
277
  // Create a GdkPixbuf buffer and scale it
278
  GError *err = nsnull;
279
  GdkPixbuf* buf = gdk_pixbuf_new_from_file(file, &err);
280
  g_free(file);
281
  if (!buf) {
282
    if (err)
283
      g_error_free(err);
284
    return NS_ERROR_UNEXPECTED;
285
  }
286
287
  // scale...
288
  GdkPixbuf* scaled = gdk_pixbuf_scale_simple(buf, iconSize, iconSize, GDK_INTERP_BILINEAR);
289
  gdk_pixbuf_unref(buf);
290
  if (!scaled)
291
    return NS_ERROR_OUT_OF_MEMORY;
292
293
  rv = moz_gdk_pixbuf_to_channel(scaled, getter_AddRefs(mRealChannel));
294
  gdk_pixbuf_unref(scaled);
295
  return rv;
296
}
297
298
nsresult
299
nsIconChannel::Init(nsIURI* aURI) {
300
  mURI = do_QueryInterface(aURI);
301
  NS_ASSERTION(mURI, "URI passed to nsIconChannel is no nsIMozIconURI!");
302
303
  nsCAutoString stockIcon;
304
  mURI->GetStockIcon(stockIcon);
305
  if (stockIcon.IsEmpty()) {
306
    return InitWithGnome();
307
  }
308
309
  nsCAutoString iconSizeString;
310
  mURI->GetStockIconSize(iconSizeString);
311
312
  nsCAutoString iconStateString;
313
  mURI->GetStockIconState(iconStateString);
314
315
  GtkIconSize icon_size = moz_gtk_icon_size(iconSizeString.get());
316
  if (icon_size == GTK_ICON_SIZE_INVALID) {
317
    NS_WARNING(iconSizeString.get());
318
    return NS_ERROR_FAILURE;
319
  }
320
   
321
  ensure_stock_image_widget();
322
323
  gboolean sensitive = strcmp(iconStateString.get(), "disabled");
324
  gtk_widget_set_sensitive (gStockImageWidget, sensitive);
325
  
326
  GdkPixbuf *icon = gtk_widget_render_icon(gStockImageWidget, stockIcon.get(),
327
                                           icon_size, NULL);
328
  if (!icon) {
329
    ensure_icon_factory();
330
      
331
    GtkIconSet *icon_set = gtk_icon_set_new();
332
    GtkIconSource *icon_source = gtk_icon_source_new();
333
    
334
    gtk_icon_source_set_icon_name(icon_source, stockIcon.get());
335
    gtk_icon_set_add_source(icon_set, icon_source);
336
    gtk_icon_factory_add(gIconFactory, stockIcon.get(), icon_set);
337
    gtk_icon_set_unref(icon_set);
338
    gtk_icon_source_free(icon_source);
339
340
    icon = gtk_widget_render_icon(gStockImageWidget, stockIcon.get(),
341
                                  icon_size, NULL);
342
  }
343
344
  if (!icon)
345
    return NS_ERROR_NOT_AVAILABLE;
346
  
347
  nsresult rv = moz_gdk_pixbuf_to_channel(icon, getter_AddRefs(mRealChannel));
348
349
  gdk_pixbuf_unref(icon);
350
351
  return rv;
352
}
353
++ modules/libpr0n/decoders/Makefile.in
Lines 29-34 Link Here
29
DIRS		= $(MOZ_IMG_DECODERS)
29
DIRS		= $(MOZ_IMG_DECODERS)
30
30
31
ifneq (,$(findstring icon,$(MOZ_IMG_DECODERS)))
31
ifneq (,$(findstring icon,$(MOZ_IMG_DECODERS)))
32
#ifdef MOZ_ENABLE_GNOMEUI
33
#DIRS    := icon/gtk $(DIRS)
34
#endif
32
ifeq ($(OS_ARCH),WINNT)
35
ifeq ($(OS_ARCH),WINNT)
33
DIRS		:= icon/win $(DIRS)
36
DIRS		:= icon/win $(DIRS)
34
endif
37
endif
Lines 39-44 Link Here
39
DIRS		:= icon/mac $(DIRS)
42
DIRS		:= icon/mac $(DIRS)
40
endif
43
endif
41
endif # icon
44
endif # icon
45
ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
46
DIRS		:= icon/gtk $(DIRS)
47
endif
42
48
43
include $(topsrcdir)/config/rules.mk
49
include $(topsrcdir)/config/rules.mk
44
50
45
-- modules/libpref/src/init/all.js
51
++ modules/libpref/src/init/all.js
Lines 49-56 Link Here
49
49
50
pref("keyword.URL", "http://www.google.com/search?ie=UTF-8&oe=utf-8&q=");
50
pref("keyword.URL", "http://www.google.com/search?ie=UTF-8&oe=utf-8&q=");
51
pref("keyword.enabled", false);
51
pref("keyword.enabled", false);
52
pref("general.useragent.locale", "chrome://navigator/locale/navigator.properties");
52
pref("general.useragent.locale", "chrome://global/locale/intl.properties");
53
pref("general.useragent.contentlocale", "chrome://navigator-region/locale/region.properties");
53
pref("general.useragent.contentlocale", "chrome://browser-region/locale/region.properties");
54
54
55
pref("general.config.obscure_value", 13); // for MCD .cfg files
55
pref("general.config.obscure_value", 13); // for MCD .cfg files
56
56
Lines 645-675 Link Here
645
pref("converter.html2txt.structs",          true); // Output structured phrases (strong, em, code, sub, sup, b, i, u)
645
pref("converter.html2txt.structs",          true); // Output structured phrases (strong, em, code, sub, sup, b, i, u)
646
pref("converter.html2txt.header_strategy",  1); // 0 = no indention; 1 = indention, increased with header level; 2 = numbering and slight indention
646
pref("converter.html2txt.header_strategy",  1); // 0 = no indention; 1 = indention, increased with header level; 2 = numbering and slight indention
647
647
648
pref("intl.accept_languages",               "chrome://navigator/locale/navigator.properties");
648
pref("intl.accept_languages",               "chrome://global/locale/intl.properties");
649
pref("intl.accept_charsets",                "iso-8859-1,*,utf-8");
649
pref("intl.accept_charsets",                "iso-8859-1,*,utf-8");
650
pref("intl.collationOption",                "chrome://navigator-platform/locale/navigator.properties");
650
pref("intl.collationOption",                "chrome://global-platform/locale/intl.properties");
651
pref("intl.menuitems.alwaysappendaccesskeys","chrome://navigator/locale/navigator.properties");
651
pref("intl.menuitems.alwaysappendaccesskeys","chrome://global/locale/intl.properties");
652
pref("intl.charsetmenu.browser.static",     "chrome://navigator/locale/navigator.properties");
652
pref("intl.charsetmenu.browser.static",     "chrome://global/locale/intl.properties");
653
pref("intl.charsetmenu.browser.more1",      "chrome://navigator/locale/navigator.properties");
653
pref("intl.charsetmenu.browser.more1",      "chrome://global/locale/intl.properties");
654
pref("intl.charsetmenu.browser.more2",      "chrome://navigator/locale/navigator.properties");
654
pref("intl.charsetmenu.browser.more2",      "chrome://global/locale/intl.properties");
655
pref("intl.charsetmenu.browser.more3",      "chrome://navigator/locale/navigator.properties");
655
pref("intl.charsetmenu.browser.more3",      "chrome://global/locale/intl.properties");
656
pref("intl.charsetmenu.browser.more4",      "chrome://navigator/locale/navigator.properties");
656
pref("intl.charsetmenu.browser.more4",      "chrome://global/locale/intl.properties");
657
pref("intl.charsetmenu.browser.more5",      "chrome://navigator/locale/navigator.properties");
657
pref("intl.charsetmenu.browser.more5",      "chrome://global/locale/intl.properties");
658
pref("intl.charsetmenu.browser.unicode",    "chrome://navigator/locale/navigator.properties");
658
pref("intl.charsetmenu.browser.unicode",    "chrome://global/locale/intl.properties");
659
pref("intl.charsetmenu.mailedit",           "chrome://navigator/locale/navigator.properties");
659
pref("intl.charsetmenu.mailedit",           "chrome://global/locale/intl.properties");
660
pref("intl.charsetmenu.browser.cache",      "");
660
pref("intl.charsetmenu.browser.cache",      "");
661
pref("intl.charsetmenu.mailview.cache",     "");
661
pref("intl.charsetmenu.mailview.cache",     "");
662
pref("intl.charsetmenu.composer.cache",     "");
662
pref("intl.charsetmenu.composer.cache",     "");
663
pref("intl.charsetmenu.browser.cache.size", 5);
663
pref("intl.charsetmenu.browser.cache.size", 5);
664
pref("intl.charset.detector",               "chrome://navigator/locale/navigator.properties");
664
pref("intl.charset.detector",               "chrome://global/locale/intl.properties");
665
pref("intl.charset.default",                "chrome://navigator-platform/locale/navigator.properties");
665
pref("intl.charset.default",                "chrome://global-platform/locale/intl.properties");
666
pref("intl.content.langcode",               "chrome://communicator-region/locale/region.properties");
667
pref("intl.locale.matchOS",                 false);
666
pref("intl.locale.matchOS",                 false);
668
// fallback charset list for Unicode conversion (converting from Unicode)
667
// fallback charset list for Unicode conversion (converting from Unicode)
669
// currently used for mail send only to handle symbol characters (e.g Euro, trademark, smartquotes)
668
// currently used for mail send only to handle symbol characters (e.g Euro, trademark, smartquotes)
670
// for ISO-8859-1
669
// for ISO-8859-1
671
pref("intl.fallbackCharsetList.ISO-8859-1", "windows-1252");
670
pref("intl.fallbackCharsetList.ISO-8859-1", "windows-1252");
672
pref("font.language.group",                 "chrome://navigator/locale/navigator.properties");
671
pref("font.language.group",                 "chrome://global/locale/intl.properties");
673
672
674
pref("images.dither", "auto");
673
pref("images.dither", "auto");
675
pref("security.directory",              "");
674
pref("security.directory",              "");
Lines 725-730 Link Here
725
pref("mousewheel.horizscroll.withaltkey.numlines",-1);
724
pref("mousewheel.horizscroll.withaltkey.numlines",-1);
726
pref("mousewheel.horizscroll.withaltkey.sysnumlines",false);
725
pref("mousewheel.horizscroll.withaltkey.sysnumlines",false);
727
726
727
pref("mousebuttonsextended.buttonlist", "67");
728
pref("mousebuttonsextended.buttons.6.action.up", 2);
729
pref("mousebuttonsextended.buttons.6.numlines.up", -1);
730
pref("mousebuttonsextended.buttons.6.action.down", -1);
731
pref("mousebuttonsextended.buttons.6.numlines.down", -1);
732
pref("mousebuttonsextended.buttons.7.action.up", 2);
733
pref("mousebuttonsextended.buttons.7.numlines.up", 1);
734
pref("mousebuttonsextended.buttons.7.action.down", -1);
735
pref("mousebuttonsextended.buttons.7.numlines.down", -1);
736
728
pref("profile.confirm_automigration",true);
737
pref("profile.confirm_automigration",true);
729
// profile.migration_behavior determines how the profiles root is set
738
// profile.migration_behavior determines how the profiles root is set
730
// 0 - use NS_APP_USER_PROFILES_ROOT_DIR
739
// 0 - use NS_APP_USER_PROFILES_ROOT_DIR
731
-- toolkit/components/filepicker/content/filepicker.js
740
++ toolkit/components/filepicker/content/filepicker.js
Lines 67-72 Link Here
67
    if (o.displayDirectory) {
67
    if (o.displayDirectory) {
68
      const directory = o.displayDirectory.path;
68
      const directory = o.displayDirectory.path;
69
    }
69
    }
70
70
    const initialText = o.defaultString;
71
    const initialText = o.defaultString;
71
    const filterTitles = o.filters.titles;
72
    const filterTitles = o.filters.titles;
72
    const filterTypes = o.filters.types;
73
    const filterTypes = o.filters.types;
Lines 121-133 Link Here
121
    treeView.showOnlyDirectories = true;
122
    treeView.showOnlyDirectories = true;
122
  }
123
  }
123
124
125
  // set up the right icon for GNOME stock icons
126
  if (filePickerMode == nsIFilePicker.modeSave)
127
    okButton.setAttribute("icon","save");
128
  else
129
    okButton.setAttribute("icon","open");
130
124
  // start out with a filename sort
131
  // start out with a filename sort
125
  handleColumnClick("FilenameColumn");
132
  handleColumnClick("FilenameColumn");
126
133
127
  document.documentElement.setAttribute("ondialogcancel", "return onCancel();");
134
  document.documentElement.setAttribute("ondialogcancel", "return onCancel();");
128
  try {
135
  try {
129
    var buttonLabel = getOKAction();
136
    setOKAction();
130
    okButton.setAttribute("label", buttonLabel);
131
  } catch (exception) {
137
  } catch (exception) {
132
    // keep it set to "OK"
138
    // keep it set to "OK"
133
  }
139
  }
Lines 496-503 Link Here
496
  onFileSelected(treeView.selectedFiles);
502
  onFileSelected(treeView.selectedFiles);
497
}
503
}
498
504
499
function getOKAction(file) {
505
function setOKAction(file) {
500
  var buttonLabel;
506
  var buttonLabel;
507
  var buttonIcon = "open"; // used in all but one case
501
508
502
  if (file && file.isDirectory() && filePickerMode != nsIFilePicker.modeGetFolder) {
509
  if (file && file.isDirectory() && filePickerMode != nsIFilePicker.modeGetFolder) {
503
    document.documentElement.setAttribute("ondialogaccept", "return openOnOK();");
510
    document.documentElement.setAttribute("ondialogaccept", "return openOnOK();");
Lines 515-525 Link Here
515
      break;
522
      break;
516
    case nsIFilePicker.modeSave:
523
    case nsIFilePicker.modeSave:
517
      buttonLabel = gFilePickerBundle.getString("saveButtonLabel");
524
      buttonLabel = gFilePickerBundle.getString("saveButtonLabel");
525
      buttonIcon = "save";
518
      break;
526
      break;
519
    }
527
    }
520
  }
528
  }
521
529
  okButton.setAttribute("label", buttonLabel);
522
  return buttonLabel;
530
  okButton.setAttribute("icon", buttonIcon);
523
}
531
}
524
532
525
function onSelect(event) {
533
function onSelect(event) {
Lines 558-565 Link Here
558
  }
566
  }
559
567
560
  if (validFileSelected) {
568
  if (validFileSelected) {
561
    var buttonLabel = getOKAction(file);
569
    setOKAction(file);
562
    okButton.setAttribute("label", buttonLabel);
563
    okButton.disabled = invalidSelection;
570
    okButton.disabled = invalidSelection;
564
  } else
571
  } else
565
    okButton.disabled = (textInput.value == "");
572
    okButton.disabled = (textInput.value == "");
Lines 586-593 Link Here
586
}
593
}
587
594
588
function onTextFieldFocus() {
595
function onTextFieldFocus() {
589
  var buttonLabel = getOKAction(null);
596
  setOKAction(null);
590
  okButton.setAttribute("label", buttonLabel);
591
  doEnabling();
597
  doEnabling();
592
}
598
}
593
599
594
-- toolkit/components/filepicker/content/filepicker.xul
600
++ toolkit/components/filepicker/content/filepicker.xul
Lines 95-101 Link Here
95
<hbox class="dialog-button-box" align="center">
95
<hbox class="dialog-button-box" align="center">
96
  <checkbox label="&showHiddenFiles.label;" oncommand="toggleShowHidden();"
96
  <checkbox label="&showHiddenFiles.label;" oncommand="toggleShowHidden();"
97
            flex="1" align="left"  accesskey="&showHiddenFiles.accesskey;"/>
97
            flex="1" align="left"  accesskey="&showHiddenFiles.accesskey;"/>
98
  <button dlgtype="cancel" class="dialog-button"/>
98
  <button dlgtype="cancel" icon="cancel" class="dialog-button"/>
99
  <button dlgtype="accept" class="dialog-button"/>
99
  <button dlgtype="accept" icon="accept" class="dialog-button"/>
100
</hbox>
100
</hbox>
101
</dialog>
101
</dialog>
102
-- toolkit/components/passwordmgr/resources/content/passwordManager.xul
102
++ toolkit/components/passwordmgr/resources/content/passwordManager.xul
Lines 29-34 Link Here
29
        title="&windowtitle.label;"
29
        title="&windowtitle.label;"
30
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
30
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
31
        buttons="accept"
31
        buttons="accept"
32
        buttoniconaccept="close"
32
        onload="Startup()"
33
        onload="Startup()"
33
        onunload="Shutdown()"
34
        onunload="Shutdown()"
34
        persist="screenX screenY width height">
35
        persist="screenX screenY width height">
Lines 66-74 Link Here
66
          </tree>
67
          </tree>
67
          <separator class="thin"/>
68
          <separator class="thin"/>
68
          <hbox>
69
          <hbox>
69
            <button id="removeSignon" disabled="true"
70
            <button id="removeSignon" disabled="true" icon="remove"
70
                          label="&remove.label;" oncommand="DeleteSignon();"/>
71
                          label="&remove.label;" oncommand="DeleteSignon();"/>
71
            <button id="removeAllSignons"
72
            <button id="removeAllSignons" icon="remove"
72
                          label="&removeall.label;"
73
                          label="&removeall.label;"
73
                          oncommand="DeleteAllSignons();"/>
74
                          oncommand="DeleteAllSignons();"/>
74
            <spacer flex="1"/>
75
            <spacer flex="1"/>
Lines 91-99 Link Here
91
          </tree>
92
          </tree>
92
          <separator class="thin"/>
93
          <separator class="thin"/>
93
          <hbox>
94
          <hbox>
94
            <button id="removeReject" disabled="true"
95
            <button id="removeReject" disabled="true" icon="remove"
95
                          label="&remove.label;" oncommand="DeleteReject();"/>
96
                          label="&remove.label;" oncommand="DeleteReject();"/>
96
            <button id="removeAllRejects"
97
            <button id="removeAllRejects" icon="remove"
97
                          label="&removeall.label;"
98
                          label="&removeall.label;"
98
                          oncommand="DeleteAllRejects();"/>
99
                          oncommand="DeleteAllRejects();"/>
99
          </hbox>
100
          </hbox>
100
-- toolkit/components/printing/content/printPreviewBindings.xml
101
++ toolkit/components/printing/content/printPreviewBindings.xml
Lines 53-59 Link Here
53
53
54
    <content>
54
    <content>
55
      <xul:button label="&print.label;" accesskey="&print.accesskey;"
55
      <xul:button label="&print.label;" accesskey="&print.accesskey;"
56
        oncommand="PrintUtils.print();"/>
56
        oncommand="PrintUtils.print();" icon="print"/>
57
57
58
      <xul:button label="&pageSetup.label;" accesskey="&pageSetup.accesskey;"
58
      <xul:button label="&pageSetup.label;" accesskey="&pageSetup.accesskey;"
59
        oncommand="this.parentNode.doPageSetup();"/>
59
        oncommand="this.parentNode.doPageSetup();"/>
Lines 118-124 Link Here
118
118
119
      <xul:toolbarseparator class="toolbarseparator-primary"/>
119
      <xul:toolbarseparator class="toolbarseparator-primary"/>
120
      <xul:button label="&close.label;" accesskey="&close.accesskey;"
120
      <xul:button label="&close.label;" accesskey="&close.accesskey;"
121
        oncommand="PrintUtils.exitPrintPreview();"/>
121
        oncommand="PrintUtils.exitPrintPreview();" icon="close"/>
122
      <xul:data value="&customPrompt.title;"/>
122
      <xul:data value="&customPrompt.title;"/>
123
    </content>
123
    </content>
124
124
125
-- toolkit/components/printing/content/printProgress.xul
125
++ toolkit/components/printing/content/printProgress.xul
Lines 94-100 Link Here
94
    </grid>
94
    </grid>
95
    <separator/>
95
    <separator/>
96
    <hbox id="CancelButton" pack="end">
96
    <hbox id="CancelButton" pack="end">
97
      <button id="cancel" label="&dialogCancel.label;" 
97
      <button id="cancel" label="&dialogCancel.label;" icon="cancel"
98
        oncommand="doCancelButton()"/>
98
        oncommand="doCancelButton()"/>
99
    </hbox>
99
    </hbox>
100
</window>
100
</window>
101
-- toolkit/components/printing/content/printdialog.xul
101
++ toolkit/components/printing/content/printdialog.xul
Lines 48-53 Link Here
48
  onload="onLoad();"
48
  onload="onLoad();"
49
  ondialogaccept="return onAccept();"
49
  ondialogaccept="return onAccept();"
50
  oncancel="return onCancel();"
50
  oncancel="return onCancel();"
51
  buttoniconaccept="print"
51
  title="&printDialog.title;"
52
  title="&printDialog.title;"
52
  persist="screenX screenY"
53
  persist="screenX screenY"
53
  screenX="24" screenY="24">
54
  screenX="24" screenY="24">
Lines 82-95 Link Here
82
          <menulist id="printerList" flex="1" oncommand="setPrinterDefaultsForSelectedPrinter();">
83
          <menulist id="printerList" flex="1" oncommand="setPrinterDefaultsForSelectedPrinter();">
83
            <menupopup/>
84
            <menupopup/>
84
          </menulist>
85
          </menulist>
85
          <button id="properties" label="&propertiesButton.label;" oncommand="displayPropertiesDialog();"/>
86
          <button id="properties" label="&propertiesButton.label;" icon="properties" oncommand="displayPropertiesDialog();"/>
86
        </row>
87
        </row>
87
        <row align="center">
88
        <row align="center">
88
          <hbox align="center" pack="end">
89
          <hbox align="center" pack="end">
89
            <label id="fileLabel" control="fileInput" value="&fileInput.label;"/>
90
            <label id="fileLabel" control="fileInput" value="&fileInput.label;"/>
90
          </hbox>
91
          </hbox>
91
          <textbox id="fileInput" flex="1" onblur="stripTrailingWhitespace(this)"/>
92
          <textbox id="fileInput" flex="1" onblur="stripTrailingWhitespace(this)"/>
92
          <button id="chooseFile" label="&chooseButton.label;" oncommand="onChooseFile()"/>
93
          <button id="chooseFile" label="&chooseButton.label;" icon="open" oncommand="onChooseFile()"/>
93
        </row>
94
        </row>
94
      </rows>
95
      </rows>
95
96
96
-- toolkit/content/widgets/browser.xml
97
++ toolkit/content/widgets/browser.xml
Lines 577-582 Link Here
577
          
577
          
578
          this.securityUI = null;
578
          this.securityUI = null;
579
          this._fastFind = null;
579
          this._fastFind = null;
580
          this._webBrowserFind = null;
580
581
581
          this.removeEventListener("load", this.onLoad, true);
582
          this.removeEventListener("load", this.onLoad, true);
582
          this.removeEventListener("unload", this.onUnload, true);
583
          this.removeEventListener("unload", this.onUnload, true);
583
-- toolkit/content/widgets/dialog.xml
584
++ toolkit/content/widgets/dialog.xml
Lines 221-226 Link Here
221
                  button.setAttribute("accesskey", accessKey);
221
                  button.setAttribute("accesskey", accessKey);
222
              }
222
              }
223
            }
223
            }
224
            // allow specifying alternate icons in the dialog header
225
            if (!button.hasAttribute("icon")) {
226
              // if there's an icon specified, use that
227
              if (this.hasAttribute("buttonicon"+dlgtype))
228
                button.setAttribute("icon", this.getAttribute("buttonicon"+dlgtype));
229
              // otherwise set defaults
230
              else
231
                switch (dlgtype) {
232
                  case "accept":
233
                    button.setAttribute("icon","accept");
234
                    break;
235
                  case "cancel":
236
                    button.setAttribute("icon","cancel");
237
                    break;
238
                  case "disclosue":
239
                    button.setAttribute("icon","properties");
240
                    break;
241
                  case "help":
242
                    button.setAttribute("icon","help");
243
                    break;
244
                  default:
245
                    break;
246
                }
247
            }
224
          }
248
          }
225
249
226
          // ensure that hitting enter triggers ondialogaccept
250
          // ensure that hitting enter triggers ondialogaccept
227
-- toolkit/content/widgets/expander.xml
251
++ toolkit/content/widgets/expander.xml
Lines 12-18 Link Here
12
      <xul:hbox align="center">
12
      <xul:hbox align="center">
13
        <xul:button type="disclosure" class="expanderButton" anonid="disclosure" xbl:inherits="disabled" mousethrough="always"/>
13
        <xul:button type="disclosure" class="expanderButton" anonid="disclosure" xbl:inherits="disabled" mousethrough="always"/>
14
        <xul:label class="header expanderButton" anonid="label" xbl:inherits="value=label,disabled" mousethrough="always" flex="1"/>
14
        <xul:label class="header expanderButton" anonid="label" xbl:inherits="value=label,disabled" mousethrough="always" flex="1"/>
15
        <xul:button anonid="clear-button" xbl:inherits="label=clearlabel,disabled=cleardisabled,hidden=clearhidden" mousethrough="always"/>
15
        <xul:button anonid="clear-button" xbl:inherits="label=clearlabel,disabled=cleardisabled,hidden=clearhidden" mousethrough="always" icon="clear"/>
16
      </xul:hbox>
16
      </xul:hbox>
17
      <xul:vbox flex="1" anonid="settings" class="settingsContainer" collapsed="true" xbl:inherits="align">
17
      <xul:vbox flex="1" anonid="settings" class="settingsContainer" collapsed="true" xbl:inherits="align">
18
        <children/>
18
        <children/>
19
-- toolkit/content/widgets/tabbrowser.xml
19
++ toolkit/content/widgets/tabbrowser.xml
Lines 1144-1150 Link Here
1144
            // clean up the before/afterselected attributes before removing the tab
1144
            // clean up the before/afterselected attributes before removing the tab
1145
            oldTab.selected = false;
1145
            oldTab.selected = false;
1146
1146
1147
            // XXX browser's destructor isn't always called, so we force a cleanup ourselves
1147
            // Because of the way XBL works (fields just set JS
1148
            // properties on the element) and the code we have in place
1149
            // to preserve the JS objects for any elements that have
1150
            // JS properties set on them, the browser element won't be
1151
            // destroyed until the document goes away.
1152
            // This has to hapen before we remove the child so that the
1153
            // XBL implementation of nsIObserver still works.  But
1154
            // clearing focusedWindow happens below because it gets
1155
            // reset by updateCurrentBrowser.
1148
            oldBrowser.destroy();
1156
            oldBrowser.destroy();
1149
            
1157
            
1150
            this.mTabContainer.removeChild(oldTab);
1158
            this.mTabContainer.removeChild(oldTab);
Lines 1154-1159 Link Here
1154
            this.mPanelContainer.selectedIndex = newIndex;
1162
            this.mPanelContainer.selectedIndex = newIndex;
1155
            
1163
            
1156
            this.updateCurrentBrowser();
1164
            this.updateCurrentBrowser();
1165
1166
            // see comment above destroy above
1167
            oldBrowser.focusedWindow = null;
1168
            oldBrowser.focusedElement = null;
1157
            }
1169
            }
1158
          ]]>
1170
          ]]>
1159
        </body>
1171
        </body>
1160
-- toolkit/content/widgets/wizard.xml
1172
++ toolkit/content/widgets/wizard.xml
Lines 64-72 Link Here
64
          if (this.onFirstPage) {
64
          if (this.onFirstPage) {
65
            this.canRewind = false;
65
            this.canRewind = false;
66
            this.setAttribute("firstpage", "true");
66
            this.setAttribute("firstpage", "true");
67
#ifdef XP_UNIX
68
#ifndef XP_MACOSX
69
            this._backButton.setAttribute('hidden', 'true');
70
#endif
71
#endif
67
          } else {
72
          } else {
68
            this.canRewind = true;
73
            this.canRewind = true;
69
            this.setAttribute("firstpage", "false");
74
            this.setAttribute("firstpage", "false");
75
#ifdef XP_UNIX
76
#ifndef XP_MACOSX
77
            this._backButton.setAttribute('hidden', 'false');
78
#endif
79
#endif
70
          }
80
          }
71
                    
81
                    
72
          if (this.onLastPage) {
82
          if (this.onLastPage) {
Lines 328-334 Link Here
328
         var btn = document.getAnonymousElementByAttribute(this._wizardButtons, "dlgtype", aName);
338
         var btn = document.getAnonymousElementByAttribute(this._wizardButtons, "dlgtype", aName);
329
         if (btn) {
339
         if (btn) {
330
           btn.addEventListener("command", this["_"+aName+"Func"], false);
340
           btn.addEventListener("command", this["_"+aName+"Func"], false);
331
           btn.setAttribute("label", this._bundle.GetStringFromName("button-"+aName));
341
#ifdef XP_UNIX
342
#ifndef XP_MACOSX
343
           btn.setAttribute("label", this._bundle.GetStringFromName("button-"+aName+"-gnome"));
344
#endif
345
#endif
332
           this["_"+aName+"Button"] = btn;
346
           this["_"+aName+"Button"] = btn;
333
         }
347
         }
334
         return btn;
348
         return btn;
Lines 478-493 Link Here
478
        <xul:separator class="wizard-buttons-separator groove"/>
492
        <xul:separator class="wizard-buttons-separator groove"/>
479
        <xul:hbox class="wizard-buttons-box-2">
493
        <xul:hbox class="wizard-buttons-box-2">
480
          <xul:spacer flex="1"/>
494
          <xul:spacer flex="1"/>
481
          <xul:button class="wizard-button" dlgtype="back"/>
495
#ifdef XP_UNIX
496
          <xul:button class="wizard-button" dlgtype="cancel" icon="cancel"/>
497
          <xul:spacer style="width: 24px"/>
498
#endif
499
          <xul:button class="wizard-button" dlgtype="back" icon="go-back"/>
482
          <xul:deck class="wizard-next-deck" anonid="WizardButtonDeck">
500
          <xul:deck class="wizard-next-deck" anonid="WizardButtonDeck">
483
            <xul:hbox>
501
            <xul:hbox>
484
              <xul:button class="wizard-button" dlgtype="finish" default="true" flex="1"/> 
502
              <xul:button class="wizard-button" dlgtype="finish" default="true" flex="1"/> 
485
            </xul:hbox>
503
            </xul:hbox>
486
            <xul:hbox>
504
            <xul:hbox>
487
              <xul:button class="wizard-button" dlgtype="next" default="true" flex="1"/> 
505
              <xul:button class="wizard-button" dlgtype="next" icon="go-forward" default="true" flex="1"/> 
488
            </xul:hbox>
506
            </xul:hbox>
489
          </xul:deck>
507
          </xul:deck>
490
          <xul:button class="wizard-button" dlgtype="cancel"/> 
508
#ifdef XP_WIN
509
          <xul:button class="wizard-button" dlgtype="cancel" icon="cancel"/> 
510
#endif
491
        </xul:hbox>
511
        </xul:hbox>
492
      </xul:vbox>
512
      </xul:vbox>
493
    </content>
513
    </content>
494
-- toolkit/content/customizeCharset.xul
514
++ toolkit/content/customizeCharset.xul
Lines 72-78 Link Here
72
      
72
      
73
      <hbox align="center">
73
      <hbox align="center">
74
        <button id="add_button" oncommand="AddAvailableCharset();"
74
        <button id="add_button" oncommand="AddAvailableCharset();"
75
                label="&add.label;" disabled="true"/>
75
                label="&add.label;" icon="add" disabled="true"/>
76
      </hbox>
76
      </hbox>
77
    </vbox>
77
    </vbox>
78
    
78
    
Lines 87-93 Link Here
87
      <separator class="thin"/>
87
      <separator class="thin"/>
88
      <hbox align="center">
88
      <hbox align="center">
89
        <button id="remove_button" oncommand="RemoveActiveCharset();"
89
        <button id="remove_button" oncommand="RemoveActiveCharset();"
90
                disabled="true"
90
                disabled="true" icon="remove"
91
                label="&remove.label;"/>
91
                label="&remove.label;"/>
92
      </hbox>
92
      </hbox>
93
    </vbox> 
93
    </vbox> 
94
-- toolkit/content/customizeToolbar.xul
94
++ toolkit/content/customizeToolbar.xul
Lines 73-86 Link Here
73
    
73
    
74
    <checkbox id="smallicons" oncommand="updateIconSize(this.checked);" label="&useSmallIcons.label;"/>
74
    <checkbox id="smallicons" oncommand="updateIconSize(this.checked);" label="&useSmallIcons.label;"/>
75
    
75
    
76
    <button label="&addNewToolbar.label;" oncommand="addNewToolbar();"/>
76
    <button label="&addNewToolbar.label;" oncommand="addNewToolbar();" icon="add"/>
77
    <button label="&restoreDefaultSet.label;" oncommand="restoreDefaultSet();"/>
77
    <button label="&restoreDefaultSet.label;" oncommand="restoreDefaultSet();" icon="refresh"/>
78
  </box>
78
  </box>
79
79
80
  <separator class="groove"/>
80
  <separator class="groove"/>
81
81
82
  <hbox align="center" pack="end">
82
  <hbox align="center" pack="end">
83
    <button label="&saveChanges.label;" oncommand="onAccept();" default="true"/>
83
    <button label="&saveChanges.label;" oncommand="onAccept();" default="true" icon="close"/>
84
  </hbox>
84
  </hbox>
85
</vbox>
85
</vbox>
86
86
87
-- toolkit/content/finddialog.xul
87
++ toolkit/content/finddialog.xul
Lines 66-73 Link Here
66
    </vbox>
66
    </vbox>
67
    <vbox flex="1">
67
    <vbox flex="1">
68
      <button id="btnFind" label="&findButton.label;" accesskey="&findButton.accesskey;"
68
      <button id="btnFind" label="&findButton.label;" accesskey="&findButton.accesskey;"
69
              dlgtype="accept"/>
69
              dlgtype="accept" icon="find"/>
70
#ifdef XP_UNIX
71
      <button label="&closeButton.label;" icon="close" dlgtype="cancel"/>
72
#else
70
      <button label="&cancelButton.label;" dlgtype="cancel"/>
73
      <button label="&cancelButton.label;" dlgtype="cancel"/>
74
#endif
71
    </vbox>
75
    </vbox>
72
  </hbox>
76
  </hbox>
73
</dialog>
77
</dialog>
74
-- toolkit/locales/en-US/chrome/global/finddialog.dtd
78
++ toolkit/locales/en-US/chrome/global/finddialog.dtd
Lines 13-19 Link Here
13
<!ENTITY findField.tooltip "Type one or more words to search for">
13
<!ENTITY findField.tooltip "Type one or more words to search for">
14
<!ENTITY findButton.label "Find Next">
14
<!ENTITY findButton.label "Find Next">
15
<!ENTITY findButton.accesskey "F">
15
<!ENTITY findButton.accesskey "F">
16
<!ENTITY cancelButton.label "Cancel">
16
<!ENTITY closeButton.label "Close">
17
<!ENTITY up.label "Up">
17
<!ENTITY up.label "Up">
18
<!ENTITY up.accesskey "U">
18
<!ENTITY up.accesskey "U">
19
<!ENTITY down.label "Down">
19
<!ENTITY down.label "Down">
20
-- toolkit/mozapps/downloads/content/pref-downloads.xul
20
++ toolkit/mozapps/downloads/content/pref-downloads.xul
Lines 59-65 Link Here
59
      <radio id="alwaysAsk" label="&alwaysAsk.label;" value="false"/>
59
      <radio id="alwaysAsk" label="&alwaysAsk.label;" value="false"/>
60
      <hbox flex="1">
60
      <hbox flex="1">
61
        <radio id="neverAsk" label="&neverAsk.label;" value="true"/>
61
        <radio id="neverAsk" label="&neverAsk.label;" value="true"/>
62
        <button id="showFolder" label="&showFolder.label;" oncommand="showFolder();"/>
62
        <button id="showFolder" label="&showFolder.label;" oncommand="showFolder();" icon="open"/>
63
      </hbox>
63
      </hbox>
64
    </radiogroup>
64
    </radiogroup>
65
  </groupbox>
65
  </groupbox>
Lines 154-166 Link Here
154
      <separator class="thin"/>
154
      <separator class="thin"/>
155
      <hbox>
155
      <hbox>
156
        <button label="&editFileHandler.label;" accesskey="&editFileHandler.accesskey;"
156
        <button label="&editFileHandler.label;" accesskey="&editFileHandler.accesskey;"
157
                id="editFileHandler" oncommand="editFileHandler();"/>
157
                id="editFileHandler" oncommand="editFileHandler();" icon="properties"/>
158
        <button label="&removeFileHandler.label;" accesskey="&removeFileHandler.accesskey;"              
158
        <button label="&removeFileHandler.label;" accesskey="&removeFileHandler.accesskey;"              
159
                id="removeFileHandler" oncommand="removeFileHandler();"/>
159
                id="removeFileHandler" oncommand="removeFileHandler();" icon="remove"/>
160
#ifdef MOZ_PHOENIX
160
#ifdef MOZ_PHOENIX
161
        <spring flex="1"/>
161
        <spring flex="1"/>
162
        <button label="&plugins.label;" accesskey="&plugins.accesskey;"
162
        <button label="&plugins.label;" accesskey="&plugins.accesskey;"
163
                id="plugins" oncommand="showPlugins();"/>
163
                id="plugins" oncommand="showPlugins();" icon="properties"/>
164
#endif
164
#endif
165
      </hbox>
165
      </hbox>
166
    </vbox>
166
    </vbox>
167
-- toolkit/mozapps/downloads/content/downloads.js
167
++ toolkit/mozapps/downloads/content/downloads.js
Lines 738-743 Link Here
738
#ifdef XP_OS2
738
#ifdef XP_OS2
739
      return aFolderType == "Desktop" ? "Desk" : "Home";
739
      return aFolderType == "Desktop" ? "Desk" : "Home";
740
#endif
740
#endif
741
#ifdef XP_UNIX
742
      return aFolderType == "Desktop" ? "Desktop" : "Home";
743
#endif
741
      return "Home";
744
      return "Home";
742
    }
745
    }
743
    
746
    
744
-- toolkit/mozapps/downloads/content/pref-downloads.js
747
++ toolkit/mozapps/downloads/content/pref-downloads.js
Lines 322-327 Link Here
322
#ifdef XP_OS2
322
#ifdef XP_OS2
323
  return aFolderType == "Desktop" ? "Desk" : "Home";
323
  return aFolderType == "Desktop" ? "Desk" : "Home";
324
#endif
324
#endif
325
#ifdef XP_UNIX
326
  return aFolderType == "Desktop" ? "Desktop" : "Home";
327
#endif
325
  return "Home";
328
  return "Home";
326
}
329
}
327
330
328
-- toolkit/mozapps/downloads/src/nsHelperAppDlg.js
331
++ toolkit/mozapps/downloads/src/nsHelperAppDlg.js
Line 0 Link Here
0
-- toolkit/mozapps/downloads/src/nsHelperAppDlg.js.in
1
/*
2
*/
3
4
/* This file implements the nsIHelperAppLauncherDialog interface.
5
 *
6
 * The implementation consists of a JavaScript "class" named nsUnknownContentTypeDialog,
7
 * comprised of:
8
 *   - a JS constructor function
9
 *   - a prototype providing all the interface methods and implementation stuff
10
 *
11
 * In addition, this file implements an nsIModule object that registers the
12
 * nsUnknownContentTypeDialog component.
13
 */
14
15
16
/* ctor
17
 */
18
function nsUnknownContentTypeDialog() {
19
    // Initialize data properties.
20
    this.mLauncher = null;
21
    this.mContext  = null;
22
    this.mSourcePath = null;
23
    this.chosenApp = null;
24
    this.givenDefaultApp = false;
25
    this.updateSelf = true;
26
    this.mTitle    = "";
27
}
28
29
nsUnknownContentTypeDialog.prototype = {
30
    nsIMIMEInfo  : Components.interfaces.nsIMIMEInfo,
31
32
    // This "class" supports nsIHelperAppLauncherDialog, and nsISupports.
33
    QueryInterface: function (iid) {
34
        if (!iid.equals(Components.interfaces.nsIHelperAppLauncherDialog) &&
35
            !iid.equals(Components.interfaces.nsISupports)) {
36
            throw Components.results.NS_ERROR_NO_INTERFACE;
37
        }
38
        return this;
39
    },
40
41
    // ---------- nsIHelperAppLauncherDialog methods ----------
42
43
    // show: Open XUL dialog using window watcher.  Since the dialog is not
44
    //       modal, it needs to be a top level window and the way to open
45
    //       one of those is via that route).
46
    show: function(aLauncher, aContext)  {  
47
      this.mLauncher = aLauncher;
48
      this.mContext  = aContext;
49
      // Display the dialog using the Window Watcher interface.
50
      
51
      var ir = aContext.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
52
      var dwi = ir.getInterface(Components.interfaces.nsIDOMWindowInternal);
53
      var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
54
                .getService(Components.interfaces.nsIWindowWatcher);
55
      this.mDialog = ww.openWindow(dwi,
56
                                   "chrome://mozapps/content/downloads/unknownContentType.xul",
57
                                   null,
58
                                   "chrome,centerscreen,titlebar,dialog=yes,dependent",
59
                                   null);
60
      // Hook this object to the dialog.
61
      this.mDialog.dialog = this;
62
      
63
      // Hook up utility functions. 
64
      this.getSpecialFolderKey = this.mDialog.getSpecialFolderKey;
65
      
66
      // Watch for error notifications.
67
      this.progressListener.helperAppDlg = this;
68
      this.mLauncher.setWebProgressListener(this.progressListener);
69
    },
70
71
    // promptForSaveToFile:  Display file picker dialog and return selected file.
72
    //                       This is called by the External Helper App Service
73
    //                       after the ucth dialog calls |saveToDisk| with a null
74
    //                       target filename (no target, therefore user must pick).
75
    //
76
    //                       Alternatively, if the user has selected to have all
77
    //                       files download to a specific location, return that
78
    //                       location and don't ask via the dialog. 
79
    //
80
    // Note - this function is called without a dialog, so it cannot access any part
81
    // of the dialog XUL as other functions on this object do. 
82
    promptForSaveToFile: function(aLauncher, aContext, aDefaultFile, aSuggestedFileExtension) {
83
      var result = "";
84
      
85
      this.mLauncher = aLauncher;
86
87
      // If the user is always downloading to the same location, the default download
88
      // folder is stored in preferences. If a value is found stored, use that 
89
      // automatically and don't ask via a dialog. 
90
      const kDownloadFolderPref = "browser.download.defaultFolder";
91
      var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
92
      try {
93
        result = prefs.getComplexValue(kDownloadFolderPref, Components.interfaces.nsILocalFile);
94
        result = this.validateLeafName(result, aDefaultFile, aSuggestedFileExtension);
95
      }
96
      catch (e) { 
97
        // If we get here, it's because we have a new profile and the user has never configured download
98
        // options, so "browser.download.defaultFolder" is not set yet. If the default is autodownload, 
99
        // we need to discover the default save location. 
100
        var autodownload = prefs.getBoolPref("browser.download.useDownloadDir");
101
        if (autodownload) {
102
          function getSpecialFolderKey(aFolderType) 
103
          {
104
            return aFolderType == "Desktop" ? "Desktop" : "Home";
105
            return "Home";
106
          }
107
          
108
          function getDownloadsFolder(aFolder)
109
          {
110
            var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties);
111
112
            var dir = fileLocator.get(getSpecialFolderKey(aFolder), Components.interfaces.nsILocalFile);
113
            
114
            var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
115
            bundle = bundle.createBundle("chrome://mozapps/locale/downloads/unknownContentType.properties");
116
117
            var description = bundle.GetStringFromName("myDownloads");
118
            if (aFolder != "Desktop")
119
              dir.append(description);
120
              
121
            return dir;
122
          }
123
124
          var defaultFolder = null;
125
          switch (prefs.getIntPref("browser.download.folderList")) {
126
          case 0:
127
            defaultFolder = getDownloadsFolder("Desktop")
128
            break;
129
          case 1:
130
            defaultFolder = getDownloadsFolder("Downloads");
131
            break;
132
          case 2:
133
            defaultFolder = prefs.getComplexValue("browser.download.dir", Components.interfaces.nsILocalFile);
134
            break;
135
          }
136
          
137
          // While we're here, set the pref too so that we don't keep coming back into this less efficient
138
          // code block. 
139
          prefs.setComplexValue("browser.download.defaultFolder", Components.interfaces.nsILocalFile, defaultFolder);
140
          
141
          result = this.validateLeafName(defaultFolder, aDefaultFile, aSuggestedFileExtension);
142
        }
143
      }
144
      
145
      if (!result) {
146
        // Use file picker to show dialog.
147
        var nsIFilePicker = Components.interfaces.nsIFilePicker;
148
        var picker = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
149
150
        var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
151
        bundle = bundle.createBundle("chrome://mozapps/locale/downloads/unknownContentType.properties");
152
153
        var windowTitle = bundle.GetStringFromName("saveDialogTitle");
154
        var parent = aContext.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindowInternal);
155
        picker.init(parent, windowTitle, nsIFilePicker.modeSave);
156
        picker.defaultString = aDefaultFile;
157
158
        if (aSuggestedFileExtension) {
159
          // aSuggestedFileExtension includes the period, so strip it
160
          picker.defaultExtension = aSuggestedFileExtension.substring(1);
161
        } 
162
        else {
163
          try {
164
            picker.defaultExtension = this.mLauncher.MIMEInfo.primaryExtension;
165
          } 
166
          catch (ex) { }
167
        }
168
169
        var wildCardExtension = "*";
170
        if (aSuggestedFileExtension) {
171
          wildCardExtension += aSuggestedFileExtension;
172
          picker.appendFilter(this.mLauncher.MIMEInfo.Description, wildCardExtension);
173
        }
174
175
        picker.appendFilters( nsIFilePicker.filterAll );
176
177
        // Pull in the user's preferences and get the default download directory.
178
        var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
179
        try {
180
          var startDir = prefs.getComplexValue("browser.download.dir", Components.interfaces.nsILocalFile);
181
          if (startDir.exists()) {
182
            picker.displayDirectory = startDir;
183
          }
184
        } 
185
        catch(exception) { }
186
187
        var dlgResult = picker.show();
188
189
        if (dlgResult == nsIFilePicker.returnCancel) {
190
          // null result means user cancelled.
191
          return null;
192
        }
193
194
195
        // Be sure to save the directory the user chose through the Save As... 
196
        // dialog  as the new browser.download.dir
197
        result = picker.file;
198
199
        if (result) {
200
          var newDir = result.parent;
201
          prefs.setComplexValue("browser.download.dir", Components.interfaces.nsILocalFile, newDir);
202
        }
203
      }
204
      return result;
205
    },
206
    
207
    validateLeafName: function (aLocalFile, aLeafName, aFileExt)
208
    {
209
      if (aLeafName == "")
210
        aLeafName = "unnamed" + (aFileExt ? "." + aFileExt : "");
211
      aLocalFile.append(aLeafName);
212
213
      this.makeFileUnique(aLocalFile);
214
215
      if (aLocalFile.isExecutable() && !this.mLauncher.targetFile.isExecutable()) {
216
        var f = aLocalFile.clone();
217
        aLocalFile.leafName = aLocalFile.leafName + "." + this.mLauncher.MIMEInfo.primaryExtension; 
218
219
        f.remove(false);
220
        this.makeFileUnique(aLocalFile);
221
      }
222
      return aLocalFile;
223
    },
224
225
    makeFileUnique: function (aLocalFile)
226
    {
227
      try {
228
        // Since we're automatically downloading, we don't get the file picker's 
229
        // logic to check for existing files, so we need to do that here.
230
        //
231
        // Note - this code is identical to that in 
232
        //   browser/base/content/contentAreaUtils.js. 
233
        // If you are updating this code, update that code too! We can't share code
234
        // here since this is called in a js component. 
235
        while (aLocalFile.exists()) {
236
          var parts = /.+-(\d+)(\..*)?$/.exec(aLocalFile.leafName);
237
          if (parts) {
238
            aLocalFile.leafName = aLocalFile.leafName.replace(/((\d+)\.)|((\d+)$)/,
239
                                                              function (str, dot, dotNum, noDot, noDotNum, pos, s) {
240
                                                                return (parseInt(str) + 1) + (dot ? "." : "");
241
                                                              });
242
          }
243
          else {
244
            aLocalFile.leafName = aLocalFile.leafName.replace(/\.|$/, "-1$&");
245
          }
246
        }
247
        aLocalFile.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0600);
248
      }
249
      catch (e) {
250
        dump("*** exception in validateLeafName: " + e + "\n");
251
        if (aLocalFile.leafName == "" || aLocalFile.isDirectory()) {
252
          aLocalFile.append("unnamed");
253
          if (aLocalFile.exists())
254
            aLocalFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0600);
255
        }
256
      }
257
    },
258
    
259
    // ---------- implementation methods ----------
260
261
    // Web progress listener so we can detect errors while mLauncher is
262
    // streaming the data to a temporary file.
263
    progressListener: {
264
        // Implementation properties.
265
        helperAppDlg: null,
266
267
        // nsIWebProgressListener methods.
268
        // Look for error notifications and display alert to user.
269
        onStatusChange: function( aWebProgress, aRequest, aStatus, aMessage ) {
270
            if ( aStatus != Components.results.NS_OK ) {
271
                // Get prompt service.
272
                var prompter = Components.classes[ "@mozilla.org/embedcomp/prompt-service;1" ]
273
                                   .getService( Components.interfaces.nsIPromptService );
274
                // Display error alert (using text supplied by back-end).
275
                prompter.alert( this.dialog, this.helperAppDlg.mTitle, aMessage );
276
277
                // Close the dialog.
278
                this.helperAppDlg.onCancel();
279
                if ( this.helperAppDlg.mDialog ) {
280
                    this.helperAppDlg.mDialog.close();
281
                }
282
            }
283
        },
284
285
        // Ignore onProgressChange, onStateChange, onLocationChange, and onSecurityChange notifications.
286
        onProgressChange: function( aWebProgress,
287
                                    aRequest,
288
                                    aCurSelfProgress,
289
                                    aMaxSelfProgress,
290
                                    aCurTotalProgress,
291
                                    aMaxTotalProgress ) {
292
        },
293
294
        onStateChange: function( aWebProgress, aRequest, aStateFlags, aStatus ) {
295
        },
296
297
        onLocationChange: function( aWebProgress, aRequest, aLocation ) {
298
        },
299
300
        onSecurityChange: function( aWebProgress, aRequest, state ) {
301
        }
302
    },
303
304
    // initDialog:  Fill various dialog fields with initial content.
305
    initDialog : function() {
306
      // Put file name in window title.
307
      var win   = this.dialogElement( "unknownContentType" );
308
      var suggestedFileName = this.mLauncher.suggestedFileName;
309
310
      // Some URIs do not implement nsIURL, so we can't just QI.
311
      var url   = this.mLauncher.source;
312
      var fname = "";
313
      this.mSourcePath = url.prePath;
314
      try {
315
          url = url.QueryInterface( Components.interfaces.nsIURL );
316
          // A url, use file name from it.
317
          fname = url.fileName;
318
          this.mSourcePath += url.directory;
319
      } catch (ex) {
320
          // A generic uri, use path.
321
          fname = url.path;
322
          this.mSourcePath += url.path;
323
      }
324
325
      if (suggestedFileName)
326
        fname = suggestedFileName;
327
      
328
      var displayName = fname.replace(/ +/g, " ");
329
330
      this.mTitle = this.dialogElement("strings").getFormattedString("title", [displayName]);
331
      win.setAttribute( "title", this.mTitle );
332
333
      // Put content type, filename and location into intro.
334
      this.initIntro(url, fname, displayName);
335
336
      var iconString = "moz-icon://" + fname + "?size=16&contentType=" + this.mLauncher.MIMEInfo.MIMEType;
337
      this.dialogElement("contentTypeImage").setAttribute("src", iconString);
338
339
      this.initAppAndSaveToDiskValues();
340
341
      // Initialize "always ask me" box. This should always be disabled
342
      // and set to true for the ambiguous type application/octet-stream.
343
      // We don't also check for application/x-msdownload here since we
344
      // want users to be able to autodownload .exe files. 
345
      var rememberChoice = this.dialogElement("rememberChoice");
346
347
      var mimeType = this.mLauncher.MIMEInfo.MIMEType;
348
      if (mimeType == "application/octet-stream" || 
349
          mimeType == "application/x-msdownload" ||
350
          this.mLauncher.targetFile.isExecutable()) {
351
        rememberChoice.checked = false;
352
        rememberChoice.disabled = true;
353
      }
354
      else {
355
        rememberChoice.checked = !this.mLauncher.MIMEInfo.alwaysAskBeforeHandling;
356
      }
357
      this.toggleRememberChoice(rememberChoice);
358
359
      // XXXben - menulist won't init properly, hack. 
360
      var openHandler = this.dialogElement("openHandler");
361
      openHandler.parentNode.removeChild(openHandler);
362
      var openHandlerBox = this.dialogElement("openHandlerBox");
363
      openHandlerBox.appendChild(openHandler);
364
365
      this.mDialog.setTimeout("dialog.postShowCallback()", 0);
366
      
367
      this.mDialog.document.documentElement.getButton("accept").disabled = true;
368
      const nsITimer = Components.interfaces.nsITimer;
369
      this._timer = Components.classes["@mozilla.org/timer;1"]
370
                              .createInstance(nsITimer);
371
      this._timer.initWithCallback(this, 250, nsITimer.TYPE_ONE_SHOT);
372
    },
373
    
374
    _timer: null,
375
    notify: function (aTimer) {
376
      if (!this._blurred)
377
        this.mDialog.document.documentElement.getButton('accept').disabled = false;
378
      this._delayExpired = true;
379
    },
380
    
381
    postShowCallback: function () {
382
      this.mDialog.sizeToContent();
383
384
      // Set initial focus
385
      this.dialogElement("mode").focus();
386
    },
387
388
    // initIntro:
389
    initIntro: function(url, filename, displayname) {
390
        this.dialogElement( "location" ).value = displayname;
391
        this.dialogElement( "location" ).setAttribute("realname", filename);
392
        this.dialogElement( "location" ).setAttribute("tooltiptext", displayname);
393
394
        // if mSourcePath is a local file, then let's use the pretty path name instead of an ugly
395
        // url...
396
        var pathString = this.mSourcePath;
397
        try 
398
        {
399
          var fileURL = url.QueryInterface(Components.interfaces.nsIFileURL);
400
          if (fileURL)
401
          {
402
            var fileObject = fileURL.file;
403
            if (fileObject)
404
            {
405
              var parentObject = fileObject.parent;
406
              if (parentObject)
407
              {
408
                pathString = parentObject.path;
409
              }
410
            }
411
          }
412
        } catch(ex) {}
413
414
        if (pathString == this.mSourcePath)
415
        {
416
          // wasn't a fileURL
417
          var tmpurl = url.clone(); // don't want to change the real url
418
          tmpurl.userPass = "";
419
          pathString = tmpurl.prePath;
420
        }
421
422
        // Set the location text, which is separate from the intro text so it can be cropped
423
        var location = this.dialogElement( "source" );
424
        location.value = pathString;
425
        location.setAttribute("tooltiptext", this.mSourcePath);
426
        
427
        // Show the type of file. 
428
        var type = this.dialogElement("type");
429
        var mimeInfo = this.mLauncher.MIMEInfo;
430
        
431
        // 1. Try to use the pretty description of the type, if one is available.
432
        var typeString = mimeInfo.Description;
433
        
434
        if (typeString == "") {
435
          // 2. If there is none, use the extension to identify the file, e.g. "ZIP file"
436
          var primaryExtension = "";
437
          try {
438
            primaryExtension = mimeInfo.primaryExtension;
439
          }
440
          catch (ex) {
441
          }
442
          if (primaryExtension != "")
443
            typeString = primaryExtension.toUpperCase() + " file";
444
          // 3. If we can't even do that, just give up and show the MIME type. 
445
          else
446
            typeString = mimeInfo.MIMEType;
447
        }
448
        
449
        type.value = typeString;
450
    },
451
    
452
    _blurred: false,
453
    _delayExpired: false, 
454
    onBlur: function(aEvent) {
455
      if (aEvent.target != this.mDialog.document)
456
        return;
457
      this._blurred = true;
458
      this.mDialog.document.documentElement.getButton("accept").disabled = true;
459
    },
460
    
461
    onFocus: function(aEvent) {
462
      if (aEvent.target != this.mDialog.document)
463
        return;
464
      this._blurred = false;
465
      if (this._delayExpired) {
466
        var script = "document.documentElement.getButton('accept').disabled = false";
467
        this.mDialog.setTimeout(script, 250);
468
      }
469
    },
470
471
    // Returns true if opening the default application makes sense.
472
    openWithDefaultOK: function() {
473
        var result;
474
475
        // The checking is different on Windows...
476
            // On other platforms, default is Ok if there is a default app.
477
            // Note that nsIMIMEInfo providers need to ensure that this holds true
478
            // on each platform.
479
        return this.mLauncher.MIMEInfo.hasDefaultHandler;
480
    },
481
    
482
    // Set "default" application description field.
483
    initDefaultApp: function() {
484
      // Use description, if we can get one.
485
      var desc = this.mLauncher.MIMEInfo.defaultDescription;
486
      if (desc) {
487
        var defaultApp = this.dialogElement("strings").getFormattedString("defaultApp", [desc]);
488
        this.dialogElement("defaultHandler").label = defaultApp;
489
      }
490
      else {
491
        this.dialogElement("modeDeck").setAttribute("selectedIndex", "1");
492
        // Hide the default handler item too, in case the user picks a 
493
        // custom handler at a later date which triggers the menulist to show.
494
        this.dialogElement("defaultHandler").hidden = true;
495
      }
496
    },
497
498
    // getPath:
499
    getPath: function (aFile) {
500
      return aFile.path;
501
    },
502
503
    // initAppAndSaveToDiskValues:
504
    initAppAndSaveToDiskValues: function() {
505
      var modeGroup = this.dialogElement("mode");
506
507
      // We don't let users open .exe files or random binary data directly 
508
      // from the browser at the moment because of security concerns. 
509
      var openWithDefaultOK = this.openWithDefaultOK();
510
      var mimeType = this.mLauncher.MIMEInfo.MIMEType;
511
      if (this.mLauncher.targetFile.isExecutable() || (
512
          (mimeType == "application/octet-stream" ||
513
           mimeType == "application/x-msdownload") && 
514
           !openWithDefaultOK)) {
515
        this.dialogElement("open").disabled = true;
516
        var openHandler = this.dialogElement("openHandler");
517
        openHandler.disabled = true;
518
        openHandler.label = "";
519
        modeGroup.selectedItem = this.dialogElement("save");
520
        return;
521
      }
522
    
523
      // Fill in helper app info, if there is any.
524
      this.chosenApp = this.mLauncher.MIMEInfo.preferredApplicationHandler;
525
      // Initialize "default application" field.
526
      this.initDefaultApp();
527
528
      var otherHandler = this.dialogElement("otherHandler");
529
              
530
      // Fill application name textbox.
531
      if (this.chosenApp && this.chosenApp.path) {
532
        otherHandler.setAttribute("path", this.getPath(this.chosenApp));
533
        otherHandler.label = this.chosenApp.leafName;
534
        otherHandler.hidden = false;
535
      }
536
537
      var useDefault = this.dialogElement("useSystemDefault");
538
      var openHandler = this.dialogElement("openHandler");
539
      openHandler.selectedIndex = 0;
540
541
      if (this.mLauncher.MIMEInfo.preferredAction == this.nsIMIMEInfo.useSystemDefault) {
542
        // Open (using system default).
543
        modeGroup.selectedItem = this.dialogElement("open");
544
      } else if (this.mLauncher.MIMEInfo.preferredAction == this.nsIMIMEInfo.useHelperApp) {
545
        // Open with given helper app.
546
        modeGroup.selectedItem = this.dialogElement("open");
547
        openHandler.selectedIndex = 1;
548
      } else {
549
        // Save to disk.
550
        modeGroup.selectedItem = this.dialogElement("save");
551
      }
552
      
553
      // If we don't have a "default app" then disable that choice.
554
      if (!openWithDefaultOK) {
555
        var useDefault = this.dialogElement("defaultHandler");
556
        var isSelected = useDefault.selected;
557
        
558
        // Disable that choice.
559
        useDefault.hidden = true;
560
        // If that's the default, then switch to "save to disk."
561
        if (isSelected) {
562
          openHandler.selectedIndex = 1;
563
          modeGroup.selectedItem = this.dialogElement("save");
564
        }
565
      }
566
      
567
      // otherHandler is always disabled on Mac
568
      otherHandler.nextSibling.hidden = otherHandler.nextSibling.nextSibling.hidden = false;
569
      this.updateOKButton();
570
    },
571
572
    // Returns the user-selected application
573
    helperAppChoice: function() {
574
      return this.chosenApp;
575
    },
576
    
577
    get saveToDisk() {
578
      return this.dialogElement("save").selected;
579
    },
580
    
581
    get useOtherHandler() {
582
      return this.dialogElement("open").selected && this.dialogElement("openHandler").selectedIndex == 1;
583
    },
584
    
585
    get useSystemDefault() {
586
      return this.dialogElement("open").selected && this.dialogElement("openHandler").selectedIndex == 0;
587
    },
588
    
589
    toggleRememberChoice: function (aCheckbox) {
590
        this.dialogElement("settingsChange").hidden = !aCheckbox.checked;
591
        this.mDialog.sizeToContent();
592
    },
593
    
594
    openHandlerCommand: function () {
595
      var openHandler = this.dialogElement("openHandler");
596
      if (openHandler.selectedItem.id == "choose")
597
        this.chooseApp();
598
      else
599
        openHandler.setAttribute("lastSelectedItemID", openHandler.selectedItem.id);
600
    },
601
602
    updateOKButton: function() {
603
      var ok = false;
604
      if (this.dialogElement("save").selected) {
605
        // This is always OK.
606
        ok = true;
607
      } 
608
      else if (this.dialogElement("open").selected) {
609
        switch (this.dialogElement("openHandler").selectedIndex) {
610
        case 0:
611
          // No app need be specified in this case.
612
          ok = true;
613
          break;
614
        case 1:
615
          // only enable the OK button if we have a default app to use or if 
616
          // the user chose an app....
617
          ok = this.chosenApp || /\S/.test(this.dialogElement("otherHandler").getAttribute("path")); 
618
        break;
619
        }
620
      }
621
622
      // Enable Ok button if ok to press.
623
      this.mDialog.document.documentElement.getButton("accept").disabled = !ok;
624
    },
625
    
626
    // Returns true iff the user-specified helper app has been modified.
627
    appChanged: function() {
628
      return this.helperAppChoice() != this.mLauncher.MIMEInfo.preferredApplicationHandler;
629
    },
630
631
    updateMIMEInfo: function() {
632
      var needUpdate = false;
633
      // If current selection differs from what's in the mime info object,
634
      // then we need to update.
635
      if (this.saveToDisk) {
636
        needUpdate = this.mLauncher.MIMEInfo.preferredAction != this.nsIMIMEInfo.saveToDisk;
637
        if (needUpdate)
638
          this.mLauncher.MIMEInfo.preferredAction = this.nsIMIMEInfo.saveToDisk;
639
      } 
640
      else if (this.useSystemDefault) {
641
        needUpdate = this.mLauncher.MIMEInfo.preferredAction != this.nsIMIMEInfo.useSystemDefault;
642
        if (needUpdate)
643
          this.mLauncher.MIMEInfo.preferredAction = this.nsIMIMEInfo.useSystemDefault;
644
      } 
645
      else {
646
        // For "open with", we need to check both preferred action and whether the user chose
647
        // a new app.
648
        needUpdate = this.mLauncher.MIMEInfo.preferredAction != this.nsIMIMEInfo.useHelperApp || this.appChanged();
649
        if (needUpdate) {
650
          this.mLauncher.MIMEInfo.preferredAction = this.nsIMIMEInfo.useHelperApp;
651
          // App may have changed - Update application and description
652
          var app = this.helperAppChoice();
653
          this.mLauncher.MIMEInfo.preferredApplicationHandler = app;
654
          this.mLauncher.MIMEInfo.applicationDescription = "";
655
        }
656
      }
657
      // We will also need to update if the "always ask" flag has changed.
658
      needUpdate = needUpdate || this.mLauncher.MIMEInfo.alwaysAskBeforeHandling != (!this.dialogElement("rememberChoice").checked);
659
660
      // One last special case: If the input "always ask" flag was false, then we always
661
      // update.  In that case we are displaying the helper app dialog for the first
662
      // time for this mime type and we need to store the user's action in the mimeTypes.rdf
663
      // data source (whether that action has changed or not; if it didn't change, then we need
664
      // to store the "always ask" flag so the helper app dialog will or won't display
665
      // next time, per the user's selection).
666
      needUpdate = needUpdate || !this.mLauncher.MIMEInfo.alwaysAskBeforeHandling;
667
668
      // Make sure mime info has updated setting for the "always ask" flag.
669
      this.mLauncher.MIMEInfo.alwaysAskBeforeHandling = !this.dialogElement("rememberChoice").checked;
670
671
      return needUpdate;        
672
    },
673
    
674
    // See if the user changed things, and if so, update the
675
    // mimeTypes.rdf entry for this mime type.
676
    updateHelperAppPref: function() {
677
      var ha = new this.mDialog.HelperApps();
678
      ha.updateTypeInfo(this.mLauncher.MIMEInfo);
679
    },
680
    
681
    // onOK:
682
    onOK: function() {
683
      // Verify typed app path, if necessary.
684
      if (this.useOtherHandler) {
685
        var helperApp = this.helperAppChoice();
686
        if (!helperApp || !helperApp.exists()) {
687
          // Show alert and try again.        
688
          var bundle = this.dialogElement("strings");                    
689
          var msg = bundle.getFormattedString("badApp", [this.dialogElement("otherHandler").path]);
690
          var svc = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
691
          svc.alert(this.mDialog, bundle.getString("badApp.title"), msg);
692
693
          // Disable the OK button.
694
          this.mDialog.document.documentElement.getButton("accept").disabled = true;
695
          this.dialogElement("mode").focus();          
696
697
          // Clear chosen application.
698
          this.chosenApp = null;
699
700
          // Leave dialog up.
701
          return false;
702
        }
703
      }
704
        
705
      // Remove our web progress listener (a progress dialog will be
706
      // taking over).
707
      this.mLauncher.setWebProgressListener(null);
708
      
709
      // saveToDisk and launchWithApplication can return errors in 
710
      // certain circumstances (e.g. The user clicks cancel in the
711
      // "Save to Disk" dialog. In those cases, we don't want to
712
      // update the helper application preferences in the RDF file.
713
      try {
714
        var needUpdate = this.updateMIMEInfo();
715
        
716
        if (this.dialogElement("save").selected) {
717
          // If we're using a default download location, create a path
718
          // for the file to be saved to to pass to |saveToDisk| - otherwise
719
          // we must ask the user to pick a save name.
720
721
          this.mLauncher.saveToDisk(null, false);
722
        }
723
        else
724
          this.mLauncher.launchWithApplication(null, false);
725
726
        // Update user pref for this mime type (if necessary). We do not
727
        // store anything in the mime type preferences for the ambiguous
728
        // type application/octet-stream. We do NOT do this for 
729
        // application/x-msdownload since we want users to be able to 
730
        // autodownload these to disk. 
731
        if (needUpdate && this.mLauncher.MIMEInfo.MIMEType != "application/octet-stream")
732
          this.updateHelperAppPref();
733
      } catch(e) { }
734
735
      // Unhook dialog from this object.
736
      this.mDialog.dialog = null;
737
738
      // Close up dialog by returning true.
739
      return true;
740
    },
741
742
    // onCancel:
743
    onCancel: function() {
744
      // Remove our web progress listener.
745
      this.mLauncher.setWebProgressListener(null);
746
747
      // Cancel app launcher.
748
      try {
749
        this.mLauncher.Cancel();
750
      } catch(exception) {
751
      }
752
753
      // Unhook dialog from this object.
754
      this.mDialog.dialog = null;
755
756
      // Close up dialog by returning true.
757
      return true;
758
    },
759
760
    // dialogElement:  Convenience. 
761
    dialogElement: function(id) {
762
      return this.mDialog.document.getElementById(id);
763
    },
764
765
    // chooseApp:  Open file picker and prompt user for application.
766
    chooseApp: function() {
767
      var nsIFilePicker = Components.interfaces.nsIFilePicker;
768
      var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
769
      fp.init(this.mDialog,
770
              this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
771
              nsIFilePicker.modeOpen);
772
773
      fp.appendFilters(nsIFilePicker.filterApps);
774
775
      if (fp.show() == nsIFilePicker.returnOK && fp.file) {
776
        // Show the "handler" menulist since we have a (user-specified) 
777
        // application now.
778
        this.dialogElement("modeDeck").setAttribute("selectedIndex", "0");
779
        
780
        // Remember the file they chose to run.
781
        this.chosenApp = fp.file;
782
        // Update dialog.
783
        var otherHandler = this.dialogElement("otherHandler");
784
        otherHandler.removeAttribute("hidden");
785
        otherHandler.setAttribute("path", this.getPath(this.chosenApp));
786
        otherHandler.label = this.chosenApp.leafName;
787
        this.dialogElement("openHandler").selectedIndex = 1;
788
        this.dialogElement("openHandler").setAttribute("lastSelectedItemID", "otherHandler");
789
        
790
        this.dialogElement("mode").selectedItem = this.dialogElement("open");
791
      }
792
      else {
793
        var openHandler = this.dialogElement("openHandler");
794
        var lastSelectedID = openHandler.getAttribute("lastSelectedItemID");
795
        if (!lastSelectedID)
796
          lastSelectedID = "defaultHandler";
797
        openHandler.selectedItem = this.dialogElement(lastSelectedID);
798
      }
799
    },
800
801
    // Turn this on to get debugging messages.
802
    debug: false,
803
804
    // Dump text (if debug is on).
805
    dump: function( text ) {
806
        if ( this.debug ) {
807
            dump( text ); 
808
        }
809
    },
810
811
    // dumpInfo:
812
    doDebug: function() {
813
        const nsIProgressDialog = Components.interfaces.nsIProgressDialog;
814
        // Open new progress dialog.
815
        var progress = Components.classes[ "@mozilla.org/progressdialog;1" ]
816
                         .createInstance( nsIProgressDialog );
817
        // Show it.
818
        progress.open( this.mDialog );
819
    },
820
821
    // dumpObj:
822
    dumpObj: function( spec ) {
823
         var val = "<undefined>";
824
         try {
825
             val = eval( "this."+spec ).toString();
826
         } catch( exception ) {
827
         }
828
         this.dump( spec + "=" + val + "\n" );
829
    },
830
831
    // dumpObjectProperties
832
    dumpObjectProperties: function( desc, obj ) {
833
         for( prop in obj ) {
834
             this.dump( desc + "." + prop + "=" );
835
             var val = "<undefined>";
836
             try {
837
                 val = obj[ prop ];
838
             } catch ( exception ) {
839
             }
840
             this.dump( val + "\n" );
841
         }
842
    }
843
}
844
845
// This Component's module implementation.  All the code below is used to get this
846
// component registered and accessible via XPCOM.
847
var module = {
848
    firstTime: true,
849
850
    // registerSelf: Register this component.
851
    registerSelf: function (compMgr, fileSpec, location, type) {
852
        if (this.firstTime) {
853
            this.firstTime = false;
854
            throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
855
        }
856
        compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
857
858
        compMgr.registerFactoryLocation( this.cid,
859
                                         "Unknown Content Type Dialog",
860
                                         this.contractId,
861
                                         fileSpec,
862
                                         location,
863
                                         type );
864
    },
865
866
    // getClassObject: Return this component's factory object.
867
    getClassObject: function (compMgr, cid, iid) {
868
        if (!cid.equals(this.cid)) {
869
            throw Components.results.NS_ERROR_NO_INTERFACE;
870
        }
871
872
        if (!iid.equals(Components.interfaces.nsIFactory)) {
873
            throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
874
        }
875
876
        return this.factory;
877
    },
878
879
    /* CID for this class */
880
    cid: Components.ID("{F68578EB-6EC2-4169-AE19-8C6243F0ABE1}"),
881
882
    /* Contract ID for this class */
883
    contractId: "@mozilla.org/helperapplauncherdialog;1",
884
885
    /* factory object */
886
    factory: {
887
        // createInstance: Return a new nsProgressDialog object.
888
        createInstance: function (outer, iid) {
889
            if (outer != null)
890
                throw Components.results.NS_ERROR_NO_AGGREGATION;
891
892
            return (new nsUnknownContentTypeDialog()).QueryInterface(iid);
893
        }
894
    },
895
896
    // canUnload: n/a (returns true)
897
    canUnload: function(compMgr) {
898
        return true;
899
    }
900
};
901
902
// NSGetModule: Return the nsIModule object.
903
function NSGetModule(compMgr, fileSpec) {
904
    return module;
905
}
906
++ toolkit/mozapps/downloads/src/nsHelperAppDlg.js.in
Lines 148-153 Link Here
148
#ifdef XP_OS2
148
#ifdef XP_OS2
149
            return aFolderType == "Desktop" ? "Desk" : "Home";
149
            return aFolderType == "Desktop" ? "Desk" : "Home";
150
#endif
150
#endif
151
#ifdef XP_UNIX
152
            return aFolderType == "Desktop" ? "Desktop" : "Home";
153
#endif
151
            return "Home";
154
            return "Home";
152
          }
155
          }
153
          
156
          
154
-- toolkit/mozapps/extensions/content/extensions.js
157
++ toolkit/mozapps/extensions/content/extensions.js
Lines 678-684 Link Here
678
      return !selectedItem ||
678
      return !selectedItem ||
679
             (selectedItem &&
679
             (selectedItem &&
680
              selectedItem.getAttribute("toBeUninstalled") != "true" &&
680
              selectedItem.getAttribute("toBeUninstalled") != "true" &&
681
              selectedItem.getAttribute("toBeInstalled") != "true");
681
              selectedItem.getAttribute("toBeInstalled") != "true" &&
682
	      selectedItem.getAttribute("locked") != "true");
682
    case "cmd_reallyEnable":
683
    case "cmd_reallyEnable":
683
    // controls whether to show Enable or Disable in extensions' context menu
684
    // controls whether to show Enable or Disable in extensions' context menu
684
      return selectedItem && 
685
      return selectedItem && 
Lines 694-701 Link Here
694
    case "cmd_disable":
695
    case "cmd_disable":
695
      return selectedItem &&
696
      return selectedItem &&
696
             !selectedItem.disabled &&
697
             !selectedItem.disabled &&
697
             selectedItem.getAttribute("toBeUninstalled") != "true" &&
698
             selectedItem.getAttribute("toBeUninstalled") != "true";
698
             selectedItem.getAttribute("locked") != "true";
699
    case "cmd_movetop":
699
    case "cmd_movetop":
700
      return selectedItem && (gExtensionsView.children[0] != selectedItem);
700
      return selectedItem && (gExtensionsView.children[0] != selectedItem);
701
    case "cmd_moveup":
701
    case "cmd_moveup":
702
-- toolkit/mozapps/extensions/content/extensions.xul
702
++ toolkit/mozapps/extensions/content/extensions.xul
Lines 268-276 Link Here
268
                label="&cmd.uninstall.label;" accesskey="&cmd.uninstall.accesskey;" tooltiptext="&cmd.uninstall.tooltip;" 
268
                label="&cmd.uninstall.label;" accesskey="&cmd.uninstall.accesskey;" tooltiptext="&cmd.uninstall.tooltip;" 
269
                command="cmd_uninstall"/>
269
                command="cmd_uninstall"/>
270
        <separator class="commandBarSeparator"/>              
270
        <separator class="commandBarSeparator"/>              
271
  <!-- 
271
        <button id="updateButton" 
272
        <button id="updateButton" 
272
                label="&cmd.update.label;" accesskey="&cmd.update.accesskey;" tooltiptext="&cmd.update.tooltip;"
273
                label="&cmd.update.label;" accesskey="&cmd.update.accesskey;" tooltiptext="&cmd.update.tooltip;"
273
                command="cmd_update"/>
274
                command="cmd_update"/>
275
   -->
274
        <separator class="commandBarSeparator"/>              
276
        <separator class="commandBarSeparator"/>              
275
        <button id="optionsButton"
277
        <button id="optionsButton"
276
                label="&cmd.options.label;" accesskey="&cmd.options.accesskey;" tooltiptext="&cmd.options.tooltip;"
278
                label="&cmd.options.label;" accesskey="&cmd.options.accesskey;" tooltiptext="&cmd.options.tooltip;"
277
-- toolkit/mozapps/extensions/src/nsExtensionManager.js
279
++ toolkit/mozapps/extensions/src/nsExtensionManager.js
Line 0 Link Here
0
-- toolkit/mozapps/extensions/src/nsExtensionManager.js.in
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
 *
5
 * The contents of this file are subject to the Mozilla Public License Version
6
 * 1.1 (the "License"); you may not use this file except in compliance with
7
 * the License. You may obtain a copy of the License at
8
 * http://www.mozilla.org/MPL/
9
 *
10
 * Software distributed under the License is distributed on an "AS IS" basis,
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
 * for the specific language governing rights and limitations under the
13
 * License.
14
 *
15
 * The Original Code is the Extension Manager.
16
 *
17
 * The Initial Developer of the Original Code is Ben Goodger.
18
 * Portions created by the Initial Developer are Copyright (C) 2004
19
 * the Initial Developer. All Rights Reserved.
20
 *
21
 * Contributor(s):
22
 *  Ben Goodger <ben@bengoodger.com>
23
 *  Mike Hommey <mh@glandium.org>
24
 *
25
 * Alternatively, the contents of this file may be used under the terms of
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or
27
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
 * in which case the provisions of the GPL or the LGPL are applicable instead
29
 * of those above. If you wish to allow use of your version of this file only
30
 * under the terms of either the GPL or the LGPL, and not to allow others to
31
 * use your version of this file under the terms of the MPL, indicate your
32
 * decision by deleting the provisions above and replace them with the notice
33
 * and other provisions required by the GPL or the LGPL. If you do not delete
34
 * the provisions above, a recipient may use your version of this file under
35
 * the terms of any one of the MPL, the GPL or the LGPL.
36
 *
37
 * ***** END LICENSE BLOCK ***** */
38
39
const nsIExtensionManager             = Components.interfaces.nsIExtensionManager;
40
const nsIUpdateService                = Components.interfaces.nsIUpdateService;
41
const nsIUpdateItem                   = Components.interfaces.nsIUpdateItem;
42
43
const PREF_EM_APP_ID                  = "app.id";
44
const PREF_EM_APP_VERSION             = "app.version";
45
const PREF_EM_APP_EXTENSIONS_VERSION  = "app.extensions.version";
46
const PREF_EM_APP_BUILDID             = "app.build_id";
47
const PREF_EM_LAST_APP_VERSION        = "extensions.lastAppVersion";
48
const PREF_UPDATE_COUNT               = "extensions.update.count";
49
const PREF_UPDATE_DEFAULT_URL         = "extensions.update.url";
50
const PREF_EM_WASINSAFEMODE           = "extensions.wasInSafeMode";
51
const PREF_EM_DISABLEDOBSOLETE        = "extensions.disabledObsolete";
52
const PREF_EM_LAST_SELECTED_SKIN      = "extensions.lastSelectedSkin";
53
const PREF_EM_EXTENSION_FORMAT        = "extensions.%UUID%.";
54
const PREF_EM_ITEM_UPDATE_ENABLED     = "extensions.%UUID%.update.enabled";
55
const PREF_EM_ITEM_UPDATE_URL         = "extensions.%UUID%.update.url";
56
const PREF_EM_DSS_ENABLED             = "extensions.dss.enabled";
57
58
const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin";
59
60
const DIR_EXTENSIONS                  = "extensions";
61
const DIR_UNINSTALL                   = "uninstall";
62
const DIR_TEMP                        = "temp";
63
const DIR_CHROME                      = "chrome";
64
const DIR_COMPONENTS                  = "components";
65
const DIR_DEFAULTS                    = "defaults";
66
const DIR_DEFAULTS_PREFS              = "preferences";
67
const DIR_DEFAULTS_EXTENSIONS         = "extensions"; 
68
const DIR_CR_CHROME                   = "chrome";
69
const DIR_CR_OVERLAYINFO              = "overlayinfo";
70
const FILE_CR_CHROMEDS                = "chrome.rdf";
71
const FILE_EXTENSIONS                 = "Extensions.rdf";
72
const FILE_UNINSTALL_LOG              = "Uninstall";
73
const FILE_DEFAULTS                   = "defaults.ini";
74
const FILE_COMPONENT_MANIFEST         = "components.ini";
75
const FILE_COMPAT_MANIFEST            = "compatibility.ini";
76
const FILE_INSTALL_MANIFEST           = "install.rdf";
77
const FILE_CHROME_MANIFEST            = "contents.rdf";
78
const FILE_WASINSAFEMODE              = "Safe Mode";
79
const FILE_INSTALLED_EXTENSIONS       = "installed-extensions.txt"
80
const FILE_INSTALLED_EXTENSIONS_PROCESSED = "installed-extensions-processed.txt"
81
82
const KEY_PROFILEDIR                  = "ProfD";
83
const KEY_APPDIR                      = "XCurProcD";
84
const KEY_DEFAULTS                    = "ProfDefNoLoc";
85
const KEY_DEFAULT_THEME               = "classic/1.0";
86
87
const ERROR_INVALID_VERSION           = -1;
88
const ERROR_PHONED_HOME               = -2;
89
const ERROR_EXTENSION_IS_THEME        = -3;
90
91
var gPref           = null;
92
var gRDF            = null;
93
var gOS             = null;
94
var gVersionChecker = null;
95
96
function getVersionChecker()
97
{
98
  if (!gVersionChecker) {
99
    gVersionChecker = Components.classes["@mozilla.org/updates/version-checker;1"]
100
                                .getService(Components.interfaces.nsIVersionChecker);
101
  }
102
  return gVersionChecker;
103
}
104
105
///////////////////////////////////////////////////////////////////////////////
106
//
107
// Utility Functions
108
//
109
const EM_NS_PREFIX      = "http://www.mozilla.org/2004/em-rdf#";
110
const CHROME_NS_PREFIX  = "http://www.mozilla.org/rdf/chrome#";
111
112
function EM_NS(aProperty)
113
{
114
  return EM_NS_PREFIX + aProperty;
115
}
116
117
function CHROME_NS(aProperty)
118
{
119
  return CHROME_NS_PREFIX + aProperty;
120
}
121
122
// Returns the specified directory hierarchy under the special directory 
123
// specified by aKey, creating directories along the way if necessary.
124
function getDir(aKey, aSubDirs)
125
{
126
  return getDirInternal(aKey, aSubDirs, true);
127
}
128
129
function getDirNoCreate(aKey, aSubDirs)
130
{
131
  return getDirInternal(aKey, aSubDirs, false);
132
}
133
134
function getDirInternal(aKey, aSubDirs, aCreate)
135
{
136
  var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"]
137
                              .getService(Components.interfaces.nsIProperties);
138
  var dir = fileLocator.get(aKey, Components.interfaces.nsIFile);
139
  for (var i = 0; i < aSubDirs.length; ++i) {
140
    dir.append(aSubDirs[i]);
141
    if (aCreate && !dir.exists())
142
      dir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
143
  }
144
  return dir;
145
}
146
147
// Returns the file at the appropriate point in a directory hierarchy under
148
// the specified key. Does NOT create the file NOR the directories along the
149
// way.
150
function getFileNoCreateDir(aKey, aPathToFile)
151
{
152
  var subdirs = [];
153
  for (var i = 0; i < aPathToFile.length - 1; ++i)
154
    subdirs.push(aPathToFile[i]);
155
  var file = getDirNoCreate(aKey, subdirs);
156
  file.append(aPathToFile[aPathToFile.length - 1]);
157
  return file;
158
}
159
160
// Returns the file at the appropriate point in a directory hierarchy under
161
// the specified key, creating directories along the way if necessary. Does
162
// NOT create the file.
163
function getFile(aKey, aPathToFile)
164
{
165
  var subdirs = [];
166
  for (var i = 0; i < aPathToFile.length - 1; ++i)
167
    subdirs.push(aPathToFile[i]);
168
  var file = getDir(aKey, subdirs);
169
  file.append(aPathToFile[aPathToFile.length - 1]);
170
  return file;
171
}
172
173
function getDirKey(aIsProfile)
174
{
175
  return aIsProfile ? KEY_PROFILEDIR : KEY_APPDIR;
176
}
177
178
function dumpFile(aFile)
179
{
180
  dump("*** file = " + aFile.path + ", exists = " + aFile.exists() + "\n");
181
}
182
183
// We use this to force RDF to bypass the cache when loading certain types
184
// of files. 
185
function getRandomFileName(aName, aExtension)
186
{
187
  var characters = "abcdefghijklmnopqrstuvwxyz0123456789";
188
  var nameString = aName + "-";
189
  for (var i = 0; i < 3; ++i) {
190
    var index = Math.round((Math.random()) * characters.length);
191
    nameString += characters.charAt(index);
192
  }
193
  return nameString + "." + aExtension;
194
}
195
196
const PREFIX_EXTENSION  = "urn:mozilla:extension:";
197
const PREFIX_THEME      = "urn:mozilla:theme:";
198
const ROOT_EXTENSION    = "urn:mozilla:extension:root";
199
const ROOT_THEME        = "urn:mozilla:theme:root";
200
201
function getItemPrefix(aItemType)
202
{
203
  var prefix = "";
204
  if (aItemType & nsIUpdateItem.TYPE_EXTENSION) 
205
    prefix = PREFIX_EXTENSION;
206
  else if (aItemType & nsIUpdateItem.TYPE_THEME)
207
    prefix = PREFIX_THEME;
208
  return prefix;
209
}
210
211
function getItemRoot(aItemType)
212
{
213
  var root = "";
214
  if (aItemType & nsIUpdateItem.TYPE_EXTENSION) 
215
    root = ROOT_EXTENSION;
216
  else if (aItemType & nsIUpdateItem.TYPE_THEME)
217
    root = ROOT_THEME;
218
  return root;
219
}
220
221
function getItemRoots(aItemType)
222
{    
223
  var roots = [];
224
  if (aItemType == nsIUpdateItem.TYPE_ADDON)
225
    roots = roots.concat([getItemRoot(nsIUpdateItem.TYPE_EXTENSION), 
226
                          getItemRoot(nsIUpdateItem.TYPE_THEME)]);
227
  else
228
    roots.push(getItemRoot(aItemType));
229
  return roots;
230
}
231
232
function getItemType(aURI)
233
{
234
  var type = -1;
235
  if (aURI.substr(0, PREFIX_EXTENSION.length) == PREFIX_EXTENSION)
236
    type = nsIUpdateItem.TYPE_EXTENSION;
237
  else if (aURI.substr(0, PREFIX_THEME.length) == PREFIX_THEME)
238
    type = nsIUpdateItem.TYPE_THEME;
239
  return type;
240
}
241
242
function stripPrefix(aURI, aItemType)
243
{
244
  var val = aURI;
245
  if (aItemType == nsIUpdateItem.TYPE_ADDON)
246
    val = stripPrefix(aURI, getItemType(aURI));
247
  else {
248
    var prefix = getItemPrefix(aItemType);
249
    if (prefix && aURI.substr(0, prefix.length) == prefix)  
250
      val = aURI.substr(prefix.length, aURI.length);
251
  }
252
  return val;
253
}
254
255
function stripPropertyPrefix(aProperty, aPrefix)
256
{
257
  return aProperty.substr(aPrefix.length, aProperty.length);
258
}
259
260
function getURLSpecFromFile(aFile)
261
{
262
  var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
263
                          .getService(Components.interfaces.nsIIOService);
264
  var fph = ioServ.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler);
265
  return fph.getURLSpecFromFile(aFile);
266
}
267
268
function ensureExtensionsFiles(aIsProfile)
269
{
270
  try {
271
    var extensionsFile  = getFile(getDirKey(aIsProfile), 
272
                                  [DIR_EXTENSIONS, FILE_EXTENSIONS]);
273
  
274
    // If the file does not exist at the current location, copy the default
275
    // version over so we can access the various roots. 
276
    // This is a sign also that something may have gone wrong, such as the user
277
    // deleting /Extensions so we should remove the relative contents.rdf and
278
    // overlayinfo hierarchies too. 
279
    if (extensionsFile && !extensionsFile.exists()) {
280
      var defaultFile = getFile(KEY_DEFAULTS, 
281
                                [DIR_DEFAULTS_EXTENSIONS, FILE_EXTENSIONS]);
282
      defaultFile.copyTo(extensionsFile.parent, extensionsFile.leafName);
283
284
      // XXXben - do this only for profile until we have a better protection 
285
      // mechanism for global items.
286
      if (aIsProfile) {
287
        try {      
288
          var chromedsFile = getFile(getDirKey(aIsProfile), [DIR_CR_CHROME, FILE_CR_CHROMEDS]);
289
          if (chromedsFile.exists())
290
            chromedsFile.remove(false);
291
          var overlayinfoDir = getDir(getDirKey(aIsProfile), [DIR_CR_CHROME, DIR_CR_OVERLAYINFO]);
292
          if (overlayinfoDir.exists())
293
            overlayinfoDir.remove(true);
294
        }
295
        catch (e) { 
296
          dump("Extension System Warning: failed to remove chrome.rdf/overlay info because: " + e + "\n"); 
297
        }
298
      }
299
    }
300
  }
301
  catch (e) { 
302
    // Too early in the startup process to use the console, we may yet restart
303
    // the app.
304
    dump("Extension System Warning: Failed to set up default extensions" + 
305
         " files probably because you do not have write privileges to this" + 
306
         " location. While you can run Firefox like this, it is recommended" + 
307
         " that you run it at least once with privileges that allow it to generate" + 
308
         " these initial files to improve start performance. Running from a disk" + 
309
         " image on MacOS X is not recommended.");
310
  }
311
}
312
313
function stringData(aLiteralOrResource)
314
{
315
  try {
316
    var obj = aLiteralOrResource.QueryInterface(Components.interfaces.nsIRDFLiteral);
317
    return obj.Value;
318
  }
319
  catch (e) {
320
    try {
321
      obj = aLiteralOrResource.QueryInterface(Components.interfaces.nsIRDFResource);
322
      return obj.Value;
323
    }
324
    catch (e) {}
325
  }
326
  return "--";
327
}
328
329
function stackTraceFunctionFormat(aFunctionName)
330
{
331
  var classDelimiter = aFunctionName.indexOf("_");
332
  var className = aFunctionName.substr(0, classDelimiter);
333
  if (!className)
334
    className == "<global>";
335
  var functionName = aFunctionName.substr(classDelimiter + 1, aFunctionName.length);
336
  if (!functionName) 
337
    functionName == "<anonymous>";
338
  return className + "::" + functionName;
339
}
340
341
function stackTrace(aArguments, aMaxCount)
342
{
343
  dump("=[STACKTRACE]=====================================================\n");
344
  dump("*** at: " + stackTraceFunctionFormat(aArguments.callee.name) + "()\n");
345
  var temp = aArguments.callee.caller;
346
  var count = 0;
347
  while (temp) {
348
    dump("***     " + stackTraceFunctionFormat(temp.name) + "()\n");
349
    
350
    temp = temp.arguments.callee.caller;
351
    if (aMaxCount > 0 && ++count == aMaxCount)
352
      break;
353
  }
354
  dump("==================================================================\n");
355
}
356
357
///////////////////////////////////////////////////////////////////////////////
358
// Incompatible Item Error Message
359
function showIncompatibleError(aDS)
360
{
361
  var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
362
                      .getService(Components.interfaces.nsIStringBundleService);
363
  var extensionStrings = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
364
  var params = [extensionStrings.GetStringFromName("extension")];
365
  var title = extensionStrings.formatStringFromName("incompatibleTitle", 
366
                                                    params, params.length);
367
  
368
  var brandStrings = sbs.createBundle("chrome://global/locale/brand.properties");
369
  var brandShortName = brandStrings.GetStringFromName("brandShortName");
370
371
  var message;
372
  var metadata = {};
373
  getItemMetadata(aDS, metadata);
374
  
375
  if (undefined === metadata.minAppVersion) {
376
    // getItemMetadata does not fill target application version range properties unless a 
377
    // matching supported target application is found.
378
    params = [metadata.name, metadata.version, brandShortName];
379
    message = extensionStrings.formatStringFromName("incompatibleMessageNoApp", 
380
                                                    params, params.length);
381
  }
382
  else if (metadata.minAppVersion == metadata.maxAppVersion) {
383
    // If the min target app version and the max target app version are the same, don't show
384
    // a message like, "Foo is only compatible with Firefox versions 0.7 to 0.7", rather just
385
    // show, "Foo is only compatible with Firefox 0.7"
386
    params = [metadata.name, metadata.version, brandShortName, metadata.name, 
387
              metadata.version, brandShortName, metadata.minAppVersion];
388
    message = extensionStrings.formatStringFromName("incompatibleMessageSingleAppVersion", 
389
                                                    params, params.length);
390
  }
391
  else {
392
    params = [metadata.name, metadata.version, brandShortName, metadata.name, 
393
              metadata.version, brandShortName, metadata.minAppVersion, 
394
              metadata.maxAppVersion];
395
    message = extensionStrings.formatStringFromName("incompatibleMessage", params, params.length);
396
  }
397
  var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
398
                     .getService(Components.interfaces.nsIPromptService);
399
  ps.alert(null, title, message);
400
}
401
402
function showMalformedError(aFile)
403
{
404
  var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
405
                      .getService(Components.interfaces.nsIStringBundleService);
406
  var extensionStrings = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
407
  var title = extensionStrings.GetStringFromName("malformedTitle");
408
409
  var brandStrings = sbs.createBundle("chrome://global/locale/brand.properties");
410
  var brandShortName = brandStrings.GetStringFromName("brandShortName");
411
  var message = extensionStrings.formatStringFromName("malformedMessage", [brandShortName, aFile], 2);
412
  
413
  var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
414
                     .getService(Components.interfaces.nsIPromptService);
415
  ps.alert(null, title, message);
416
}
417
418
function showInvalidVersionError(aItemName, aVersion)
419
{
420
  var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
421
                      .getService(Components.interfaces.nsIStringBundleService);
422
  var extensionStrings = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
423
  var title = extensionStrings.GetStringFromName("invalidVersionTitle");
424
425
  var brandStrings = sbs.createBundle("chrome://global/locale/brand.properties");
426
  var brandShortName = brandStrings.GetStringFromName("brandShortName");
427
  var params = [brandShortName, aItemName, aVersion];
428
  var message = extensionStrings.formatStringFromName("invalidVersionMessage", params, params.length);
429
  
430
  var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
431
                     .getService(Components.interfaces.nsIPromptService);
432
  ps.alert(null, title, message);
433
}
434
435
function showOldThemeError(aDS)
436
{
437
  var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
438
                      .getService(Components.interfaces.nsIStringBundleService);
439
  var extensionStrings = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
440
  var params = [extensionStrings.GetStringFromName("theme")];
441
  var title = extensionStrings.formatStringFromName("incompatibleTitle", 
442
                                                    params, params.length);
443
444
  var brandStrings = sbs.createBundle("chrome://global/locale/brand.properties");
445
  var brandShortName = brandStrings.GetStringFromName("brandShortName");
446
  var appVersion = extensionStrings.GetStringFromName("incompatibleOlder");
447
  
448
  try {  
449
    var rdfc = Components.classes["@mozilla.org/rdf/container;1"]
450
                         .createInstance(Components.interfaces.nsIRDFContainer);
451
    rdfc.Init(aDS, gRDF.GetResource("urn:mozilla:skin:root"));
452
    
453
    var elts = rdfc.GetElements();
454
    var nameArc = gRDF.GetResource(CHROME_NS("displayName"));
455
    while (elts.hasMoreElements()) {
456
      var elt = elts.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
457
      themeName = stringData(aDS.GetTarget(elt, nameArc, true));
458
      if (themeName) 
459
        break;
460
    }
461
  }
462
  catch (e) {
463
    themeName = extensionStrings.GetStringFromName("incompatibleThemeName");
464
  }
465
  
466
  params = [themeName, "", brandShortName, themeName, "", brandShortName, appVersion];
467
  var message = extensionStrings.formatStringFromName("incompatibleMessageSingleAppVersion",
468
                                                      params, params.length);
469
  var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
470
                     .getService(Components.interfaces.nsIPromptService);
471
  ps.alert(null, title, message);
472
}
473
474
function showMissingFileError(aSourceFile, aMissingFileName)
475
{
476
  var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
477
                      .getService(Components.interfaces.nsIStringBundleService);
478
  var extensionStrings = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
479
  var title = extensionStrings.GetStringFromName("missingFileTitle");
480
481
  var brandStrings = sbs.createBundle("chrome://global/locale/brand.properties");
482
  var brandShortName = brandStrings.GetStringFromName("brandShortName");
483
  var params = [brandShortName, aMissingFileName];
484
  var message = extensionStrings.formatStringFromName("missingFileMessage", params, params.length);
485
  
486
  var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
487
                     .getService(Components.interfaces.nsIPromptService);
488
  ps.alert(null, title, message);
489
490
  var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
491
                                 .getService(Components.interfaces.nsIConsoleService);
492
  params = [aSourceFile, aMissingFileName];
493
  var consoleMessage = extensionStrings.formatStringFromName("missingFileConsoleMessage",
494
                                                             params, params.length);
495
  consoleService.logStringMessage(consoleMessage);
496
}
497
498
function showMalformedRegistrationError(aCRException)
499
{
500
  var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
501
                      .getService(Components.interfaces.nsIStringBundleService);
502
  var extensionStrings = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
503
  var title = extensionStrings.GetStringFromName("malformedRegistrationTitle");
504
505
  var brandStrings = sbs.createBundle("chrome://global/locale/brand.properties");
506
  var brandShortName = brandStrings.GetStringFromName("brandShortName");
507
  var params = [brandShortName];
508
  var message = extensionStrings.formatStringFromName("malformedRegistrationMessage", 
509
                                                      params, params.length);
510
  var detailsButtonMessage = extensionStrings.GetStringFromName("malformedRegistrationDetailsButton");
511
  
512
  var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
513
                     .getService(Components.interfaces.nsIPromptService);
514
  var flags = (ps.BUTTON_TITLE_IS_STRING * ps.BUTTON_POS_1) +  
515
              (ps.BUTTON_TITLE_OK * ps.BUTTON_POS_0);
516
  var result = ps.confirmEx(null, title, message, flags, null, detailsButtonMessage, null, null, { } );
517
  if (result == 1) {  
518
    var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
519
                                  .getService(Components.interfaces.nsIConsoleService);
520
    params = [aCRException.extensionID, aCRException.functionName,
521
              aCRException.chromePath, aCRException.isProfile, ];
522
    var consoleMessage = extensionStrings.formatStringFromName("malformedRegistrationConsoleMessage",
523
                                                               params, params.length);
524
    consoleService.logStringMessage(consoleMessage);
525
    
526
    var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
527
                        .getService(Components.interfaces.nsIWindowWatcher);
528
    ww.openWindow(null, "chrome://global/content/console.xul", 
529
                  "", "chrome,modal,centerscreen,resizable", null);
530
  }
531
}
532
533
function getItemMetadata(aDS, aResult)
534
{
535
  var manifestRoot = gRDF.GetResource("urn:mozilla:install-manifest");
536
537
  // Extension Name and Version
538
  var props = ["name", "version"];
539
  for (var i = 0; i < props.length; ++i) {
540
    var prop = gRDF.GetResource(EM_NS(props[i]));
541
    aResult[props[i]] = stringData(aDS.GetTarget(manifestRoot, prop, true));
542
  }
543
  
544
  // Target App Name and Version
545
  var appID = gPref.getCharPref(PREF_EM_APP_ID);
546
547
  var targets = aDS.GetTargets(manifestRoot, gRDF.GetResource(EM_NS("targetApplication")), true);
548
  var idRes = gRDF.GetResource(EM_NS("id"));
549
  var minVersionRes = gRDF.GetResource(EM_NS("minVersion"));
550
  var maxVersionRes = gRDF.GetResource(EM_NS("maxVersion"));
551
  while (targets.hasMoreElements()) {
552
    var targetApp = targets.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
553
    var id          = stringData(aDS.GetTarget(targetApp, idRes, true));
554
    var minVersion  = stringData(aDS.GetTarget(targetApp, minVersionRes, true));
555
    var maxVersion  = stringData(aDS.GetTarget(targetApp, maxVersionRes, true));
556
557
    if (id == appID) {
558
      aResult.minAppVersion = minVersion;
559
      aResult.maxAppVersion = maxVersion;
560
      break;
561
    }
562
  }
563
}
564
565
function getInstallManifest(aFile)
566
{
567
  var fileURL = getURLSpecFromFile(aFile);
568
  var ds = gRDF.GetDataSourceBlocking(fileURL);
569
  var manifestRoot = gRDF.GetResource("urn:mozilla:install-manifest");
570
  var arcs = ds.ArcLabelsOut(manifestRoot);
571
  if (!arcs.hasMoreElements()) {
572
    ds = null;
573
    var uri = Components.classes["@mozilla.org/network/standard-url;1"]
574
                        .createInstance(Components.interfaces.nsIURI);
575
    uri.spec = fileURL;
576
    var url = uri.QueryInterface(Components.interfaces.nsIURL);
577
    showMalformedError(url.fileName);
578
  }
579
  return ds;
580
}
581
582
function ArrayEnumerator(aItems)
583
{
584
  this._index = 0;
585
  
586
  if (aItems) {
587
    for (var i = 0; i < aItems.length; ++i) {    
588
      if (!aItems[i])
589
        aItems.splice(i, 1);      
590
    }
591
  }
592
  
593
  this._contents = aItems;
594
}
595
596
ArrayEnumerator.prototype = {
597
  _index: 0,
598
  _contents: [],
599
  
600
  hasMoreElements: function ArrayEnumerator_hasMoreElements()
601
  {
602
    return this._index < this._contents.length;
603
  },
604
  
605
  getNext: function ArrayEnumerator_getNext()
606
  {
607
    return this._contents[this._index++];      
608
  }
609
};
610
  
611
///////////////////////////////////////////////////////////////////////////////
612
//
613
// nsInstallLogBase
614
//
615
function nsInstallLogBase()
616
{
617
}
618
619
nsInstallLogBase.prototype = {
620
  CHROME_TYPE_PACKAGE   : "package",
621
  CHROME_TYPE_SKIN      : "skin",
622
  CHROME_TYPE_LOCALE    : "locale",
623
624
  TOKEN_ADD_FILE        : "add",
625
  TOKEN_REGISTER_CHROME : "register",
626
  TOKEN_PROFILE         : "profile",
627
  TOKEN_GLOBAL          : "global",
628
  TOKEN_SKIN            : "skin"
629
};
630
631
///////////////////////////////////////////////////////////////////////////////
632
//
633
// nsInstallLogWriter
634
//
635
function nsInstallLogWriter(aExtensionID, aIsProfile)
636
{
637
  this._isProfile = aIsProfile;
638
  this._uninstallLog = getDir(getDirKey(aIsProfile),
639
                              [DIR_EXTENSIONS, aExtensionID, DIR_UNINSTALL]);
640
  this._uninstallLog.append(FILE_UNINSTALL_LOG);
641
}
642
643
nsInstallLogWriter.prototype = {
644
  __proto__       : nsInstallLogBase.prototype,
645
  _uninstallLog   : null,
646
  
647
  open: function nsInstallLogWriter_open ()
648
  {
649
    this._fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
650
                          .createInstance(Components.interfaces.nsIFileOutputStream);
651
    const MODE_WRONLY   = 0x02;
652
    const MODE_CREATE   = 0x08;
653
    const MODE_TRUNCATE = 0x20;
654
    this._fos.init(this._uninstallLog, MODE_WRONLY | MODE_CREATE | MODE_TRUNCATE, 0644, 0);
655
  },
656
  
657
  close: function nsInstallLogWriter_close ()
658
  {
659
    this._fos.close();  
660
  },
661
  
662
  addFile: function nsInstallLogWriter_addFile (aFile) 
663
  {
664
    var line = "add\t" + aFile.persistentDescriptor + "\n";
665
    this._fos.write(line, line.length);
666
  },
667
  
668
  registerChrome: function nsInstallLogWriter_registerChrome (aProviderName, aChromeType, aIsProfile)
669
  {
670
    var profile = aIsProfile ? "profile" : "global";
671
    // register\tprofile\tpackage\t<provider_name>
672
    var line = "register\t" + profile + "\t" + aChromeType + "\t" + aProviderName + "\n";
673
    this._fos.write(line, line.length);
674
  },
675
  
676
  installSkin: function nsInstallLogWriter_installSkin (aSkinName, aIsProfile)
677
  {
678
    var profile = aIsProfile ? "profile" : "global";
679
    // register\tprofile\tpackage\t<provider_name>
680
    var line = "skin\t" + profile + "\t" + aSkinName + "\n";
681
    this._fos.write(line, line.length);
682
  }
683
};
684
685
///////////////////////////////////////////////////////////////////////////////
686
//
687
// nsInstallLogReader
688
//
689
function nsInstallLogReader(aExtensionID, aIsProfile, aListener)
690
{
691
  this._isProfile = aIsProfile;
692
  this.uninstallLog = getFileNoCreateDir(getDirKey(aIsProfile),
693
                              [DIR_EXTENSIONS, aExtensionID, 
694
                               DIR_UNINSTALL, FILE_UNINSTALL_LOG]);
695
  // If the uninstall Log doesn't exist in profile, let's give a try in
696
  // global extension pool.
697
  if (aIsProfile && !this.uninstallLog.exists()) {
698
    this._isProfile = false;
699
    this.uninstallLog = getFileNoCreateDir(getDirKey(false),
700
                                           [DIR_EXTENSIONS, aExtensionID,
701
                                            DIR_UNINSTALL, FILE_UNINSTALL_LOG]);
702
  }
703
  this._listener = aListener
704
}
705
706
nsInstallLogReader.prototype = {
707
  __proto__       : nsInstallLogBase.prototype,
708
  uninstallLog    : null,
709
  _listener       : null,
710
  
711
  read: function nsInstallLogReader_read ()
712
  {
713
    if (!this.uninstallLog.exists())
714
      return;
715
  
716
    var fis = Components.classes["@mozilla.org/network/file-input-stream;1"]
717
                        .createInstance(Components.interfaces.nsIFileInputStream);
718
    fis.init(this.uninstallLog, -1, -1, false);
719
    var lis = fis.QueryInterface(Components.interfaces.nsILineInputStream);
720
    var line = { value: "" };
721
    var more = false;
722
    var lines = [];
723
    do {
724
      more = lis.readLine(line);
725
      lines.push(line.value);
726
    }
727
    while (more);
728
    fis.close();
729
730
    // Now that we've closed the stream we can remove all the files, unregister
731
    // chrome, etc. 
732
    //
733
    // The list of lines we pass to the uninstall handler should be in this
734
    // order:
735
    // 1) File additions
736
    // 2) Chrome Package Registrations
737
    // 3) Chrome Skin and Locale Registrations
738
    //
739
    // They must be in this order since skins and locales rely on packages, and
740
    // the packages they rely on is not stored in the registration line so we
741
    // simply "deselect" for every package installed by the extension.
742
    var dependentLines = [];
743
    for (var i = 0; i < lines.length; ++i) {
744
      var parts = lines[i].split("\t");
745
      if (parts[1] == this.TOKEN_REGISTER_CHROME && 
746
          (parts[2] == this.CHROME_TYPE_SKIN || 
747
           parts[2] == this.CHROME_TYPE_LOCALE)) {
748
        dependentLines.push(lines.splice(i, 1));
749
      }
750
    }
751
    lines.concat(dependentLines);
752
    
753
    for (var i = 0; i < lines.length; ++i)
754
      this._parseLine(lines[i]);
755
  },
756
  
757
  _parseLine: function nsInstallLogReader__parseLine(aLine)
758
  {
759
    var parts = aLine.split("\t");
760
    switch (parts[0]) {
761
    case this.TOKEN_ADD_FILE:
762
      var prefix = this.TOKEN_ADD_FILE + "\t";
763
      var filePD = aLine.substr(prefix.length, aLine.length);
764
      var lf = Components.classes["@mozilla.org/file/local;1"]
765
                         .createInstance(Components.interfaces.nsILocalFile);
766
      try {
767
        lf.persistentDescriptor = filePD;
768
        this._listener.onAddFile(lf);
769
      }
770
      catch (e) { 
771
        dump("*** nsInstallLogReader::_parseLine - failed to remove file " + e + "\n"); 
772
      }
773
      break;
774
    case this.TOKEN_REGISTER_CHROME:
775
      var isProfile = parts[1] == this.TOKEN_PROFILE;
776
      try {
777
        this._listener.onRegisterChrome(parts[3], lf, parts[2], isProfile);
778
      } 
779
      catch (e) {
780
        dump("*** nsInstallLogReader::_parseLine - failed to deregister chrome\n"); 
781
      }
782
      break;
783
    case this.TOKEN_SKIN:
784
      var isProfile = parts[1] == this.TOKEN_PROFILE;
785
      try {
786
        this._listener.onInstallSkin(parts[2], isProfile);
787
      } 
788
      catch (e) {
789
        dump("*** nsInstallLogReader::_parseLine - failed to uninstall skin\n"); 
790
      }
791
      break;
792
    }
793
  }
794
};
795
796
///////////////////////////////////////////////////////////////////////////////
797
//
798
// nsInstalledExtensionReader
799
//
800
function nsInstalledExtensionReader(aManager)
801
{
802
  this._installedExtensions = getFile(KEY_APPDIR,
803
                                      [DIR_EXTENSIONS, 
804
                                       FILE_INSTALLED_EXTENSIONS]);
805
  this._installedExtensionsProcessed = getFile(KEY_APPDIR,
806
                                               [DIR_EXTENSIONS, 
807
                                                FILE_INSTALLED_EXTENSIONS_PROCESSED]);
808
  this._manager = aManager;
809
}
810
811
nsInstalledExtensionReader.prototype = {
812
  _manager            : null,
813
  _installedExtensions: null,
814
  
815
  read: function nsInstalledExtensionReader_read ()
816
  {
817
    if (this._installedExtensionsProcessed.exists())
818
      return;
819
    
820
    if (!this._installedExtensions.exists()) {
821
      var defaultsList = getFile(KEY_DEFAULTS, [DIR_DEFAULTS_EXTENSIONS, FILE_INSTALLED_EXTENSIONS]);
822
      defaultsList.copyTo(getDir(KEY_APPDIR, [DIR_EXTENSIONS]), FILE_INSTALLED_EXTENSIONS);
823
    }
824
      
825
    var fis = Components.classes["@mozilla.org/network/file-input-stream;1"]
826
                        .createInstance(Components.interfaces.nsIFileInputStream);
827
    fis.init(this._installedExtensions, -1, -1, false);
828
    var lis = fis.QueryInterface(Components.interfaces.nsILineInputStream);
829
    var line = { value: "" };
830
    var more = false;
831
    var lines = [];
832
    do {
833
      more = lis.readLine(line);
834
      lines.push(line.value);
835
    }
836
    while (more);
837
    fis.close();
838
839
    // Now that we've closed the stream we can remove all the files    
840
    for (var i = 0; i < lines.length; ++i)
841
      this._parseLine(lines[i]);
842
    
843
    this._installedExtensions.moveTo(getDir(KEY_APPDIR, [DIR_EXTENSIONS]), 
844
                                     FILE_INSTALLED_EXTENSIONS_PROCESSED);
845
  },
846
  
847
  TOKEN_EXTENSION : "extension",
848
  TOKEN_THEME     : "theme",
849
  
850
  _parseLine: function nsInstalledExtensionReader__parseLine (aLine)
851
  {
852
    // extension,{GUID} or theme,{GUID}
853
    var parts = aLine.split(",");
854
    var manifest = getFileNoCreateDir(KEY_APPDIR, 
855
                           [DIR_EXTENSIONS, parts[1], FILE_INSTALL_MANIFEST]);
856
    if (parts.length != 2)
857
      return;
858
      
859
    if (manifest.exists()) {
860
      switch (parts[0]) {
861
      case this.TOKEN_EXTENSION:
862
        this._manager.ensurePreConfiguredItem(parts[1], nsIUpdateItem.TYPE_EXTENSION, manifest);
863
        break;
864
      case this.TOKEN_THEME:
865
        this._manager.ensurePreConfiguredItem(parts[1], nsIUpdateItem.TYPE_THEME, manifest);
866
        break;
867
      }
868
    }
869
  }
870
};
871
872
///////////////////////////////////////////////////////////////////////////////
873
//
874
// nsChromeRegistrationException
875
//
876
function nsChromeRegistrationException(aChromePath, aIsProfile, aFunctionName)
877
{
878
  this.chromePath = aChromePath;
879
  this.isProfile = aIsProfile;
880
  this.functionName = aFunctionName;
881
}
882
nsChromeRegistrationException.prototype = {
883
  chromePath      : null,
884
  isProfile       : true,
885
  functionName    : null,
886
  extensionID     : null
887
};
888
889
///////////////////////////////////////////////////////////////////////////////
890
//
891
// nsExtensionInstaller
892
//
893
function nsExtensionInstaller (aExtensionDS)
894
{
895
  this._extensionDS = aExtensionDS;
896
897
  this._provTypePackage = gRDF.GetResource(EM_NS("package"));
898
  this._provTypeSkin    = gRDF.GetResource(EM_NS("skin"));
899
  this._provTypeLocale  = gRDF.GetResource(EM_NS("locale"));
900
  this._fileProperty    = gRDF.GetResource(EM_NS("file"));
901
  this._sourceResource  = gRDF.GetResource("urn:mozilla:install-manifest");
902
}
903
904
nsExtensionInstaller.prototype = {
905
  // Utility services and helpers
906
  _rdf              : null,
907
  _writer           : null,
908
909
  // Extension metadata
910
  _extensionID      : null,
911
  _isProfile        : true,
912
  _extDirKey        : KEY_PROFILEDIR,
913
  
914
  // Source and target datasources
915
  _metadataDS       : null,
916
  _extensionDS      : null,
917
  
918
  // RDF objects and properties
919
  _provTypePackage  : null,
920
  _provTypeSkin     : null,
921
  _provTypeLocale   : null,
922
  _sourceResource   : null,
923
  _fileProperty     : null,
924
  
925
  install: function nsExtensionInstaller_install (aExtensionID, aIsProfile)
926
  {
927
    // Initialize the installer for this extension
928
    this._extensionID = aExtensionID;
929
    this._isProfile = aIsProfile;
930
    this._extDirKey = getDirKey(this._isProfile);
931
932
    // Create a logger to log install operations for uninstall
933
    this._writer = new nsInstallLogWriter(this._extensionID, this._isProfile);
934
    this._writer.open();
935
    
936
    // Move files from the staging dir into the extension's final home.
937
    // This function generates uninstall log files and creates backups of
938
    // existing files. 
939
    // XXXben - would like to add exception handling here to test for file
940
    //          I/O failures on uninstall log so that if there's a crash
941
    //          and the uninstall log is incorrectly/incompletely written 
942
    //          we can roll back. It's not critical that we do so right now
943
    //          since if this throws the extension's chrome is never 
944
    //          registered. 
945
    this._installExtensionFiles();
946
    
947
    // Load the metadata datasource
948
    var metadataFile = getFileNoCreateDir(this._extDirKey, 
949
                               [DIR_EXTENSIONS, aExtensionID, FILE_INSTALL_MANIFEST]);
950
    
951
    this._metadataDS = getInstallManifest(metadataFile);
952
    if (!this._metadataDS) return;
953
    
954
    // Add metadata for the extension to the global extension metadata set
955
    this._extensionDS.addItemMetadata(this._extensionID, nsIUpdateItem.TYPE_EXTENSION, 
956
                                      this._metadataDS, this._isProfile);
957
    
958
    // Register chrome packages for files specified in the extension manifest
959
    try {
960
      this._registerChromeForExtension();
961
    }
962
    catch (e) {
963
      // Failed to register chrome, for any number of reasons - non-existent 
964
      // contents.rdf file at the location specified, malformed contents.rdf, 
965
      // etc. Set the "toBeUninstalled" flag so that the extension is uninstalled
966
      // properly during the subsequent uninstall pass in 
967
      // |nsExtensionManager::_finalizeOperations|
968
969
      this._extensionDS.setItemProperty(this._extensionID, 
970
                                        this._extensionDS._emR("toBeUninstalled"),
971
                                        this._extensionDS._emL("true"), this._isProfile,
972
                                        nsIUpdateItem.TYPE_EXTENSION);
973
      e.extensionID = this._extensionID;
974
      showMalformedRegistrationError(e);
975
    }
976
    
977
    this._writer.close();
978
979
    // Unset the "toBeInstalled" flag
980
    this._extensionDS.setItemProperty(this._extensionID, 
981
                                      this._extensionDS._emR("toBeInstalled"),
982
                                      null, this._isProfile,
983
                                      nsIUpdateItem.TYPE_EXTENSION);
984
  },
985
  
986
  _installExtensionFiles: function nsExtensionInstaller__installExtensionFiles ()
987
  {
988
    var sourceXPI = getFileNoCreateDir(this._extDirKey, 
989
                            [DIR_EXTENSIONS, DIR_TEMP, 
990
                             this._extensionID, 
991
                             this._extensionID + ".xpi"]);
992
    if (!sourceXPI.exists())
993
      return;
994
    var zipReader = Components.classes["@mozilla.org/libjar/zip-reader;1"]
995
                              .createInstance(Components.interfaces.nsIZipReader);
996
    zipReader.init(sourceXPI);
997
    zipReader.open();
998
999
    var entries = zipReader.findEntries("*");
1000
    while (entries.hasMoreElements()) {
1001
      var entry = entries.getNext().QueryInterface(Components.interfaces.nsIZipEntry);
1002
      
1003
      var parts = entry.name.split("/");
1004
      var subDirs = [DIR_EXTENSIONS, this._extensionID];
1005
      for (var i = 0; i < parts.length; ++i)
1006
        subDirs.push(parts[i]);
1007
      
1008
      var fileName = parts[parts.length-1];
1009
      if (fileName != "") {
1010
        var targetFile = getFile(this._extDirKey, subDirs);
1011
        zipReader.extract(entry.name, targetFile);
1012
        this._writer.addFile(targetFile.QueryInterface(Components.interfaces.nsILocalFile));
1013
      }
1014
    }
1015
    zipReader.close();
1016
    // Kick off the extraction on a new thread, then join to wait for it to
1017
    // complete. 
1018
    // (new nsJarFileExtractor(aZipReader.file, dir)).extract();
1019
    
1020
    this._cleanUpStagedXPI();
1021
  },
1022
  
1023
  _cleanUpStagedXPI: function nsExtensionInstaller__cleanUpStagedXPI ()
1024
  {
1025
    var stageDir = getDir(this._extDirKey, 
1026
                          [DIR_EXTENSIONS, DIR_TEMP, this._extensionID]);
1027
    var sourceXPI = stageDir.clone();
1028
    sourceXPI.append(this._extensionID + ".xpi");
1029
    sourceXPI.remove(false);
1030
    
1031
    // Remove the extension's stage dir
1032
    if (!stageDir.directoryEntries.hasMoreElements()) 
1033
      stageDir.remove(false);
1034
      
1035
    // If the parent "temp" dir is empty, remove it.
1036
    try { // XXXben
1037
      if (!stageDir.parent.directoryEntries.hasMoreElements())
1038
        stageDir.parent.remove(false);
1039
    }
1040
    catch (e) { }
1041
  },
1042
  
1043
  _registerChromeForExtension: function nsExtensionInstaller__registerChromeForExtension ()
1044
  {
1045
    // Enumerate the metadata datasource files collection and register chrome
1046
    // for each file, calling _registerChrome for each.
1047
    var chromeDir = getDir(this._extDirKey, 
1048
                           [DIR_EXTENSIONS, this._extensionID, DIR_CHROME]);
1049
    
1050
    var files = this._metadataDS.GetTargets(this._sourceResource, this._fileProperty, true);
1051
    while (files.hasMoreElements()) {
1052
      var file = files.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
1053
      var chromeFile = chromeDir.clone();
1054
      var fileName = file.Value.substr("urn:mozilla:extension:file:".length, file.Value.length);
1055
      chromeFile.append(fileName);
1056
      
1057
      var providers = [this._provTypePackage, this._provTypeSkin, this._provTypeLocale];
1058
      for (var i = 0; i < providers.length; ++i) {
1059
        var items = this._metadataDS.GetTargets(file, providers[i], true);
1060
        while (items.hasMoreElements()) {
1061
          var item = items.getNext().QueryInterface(Components.interfaces.nsIRDFLiteral);
1062
          this._registerChrome(chromeFile, providers[i], item.Value);
1063
        }
1064
      }
1065
    }
1066
  },
1067
  
1068
  _registerChrome: function nsExtensionInstaller__registerChrome (aFile, aChromeType, aPath)
1069
  { 
1070
    var fileURL = getURLSpecFromFile(aFile);
1071
    if (!aFile.isDirectory()) // .jar files
1072
      fileURL = "jar:" + fileURL + "!/" + aPath;
1073
    else                      // flat chrome hierarchies
1074
      fileURL = fileURL + aPath;
1075
    
1076
    var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
1077
                       .getService(Components.interfaces.nsIXULChromeRegistry);
1078
    var type;
1079
    if (aChromeType.EqualsNode(this._provTypePackage)) {
1080
      try {
1081
        cr.installPackage(fileURL, this._isProfile);
1082
      }
1083
      catch (e) {
1084
        throw new nsChromeRegistrationException(fileURL, this._isProfile, "installPackage");
1085
      }
1086
      type = this._writer.CHROME_TYPE_PACKAGE;
1087
    }
1088
    else if (aChromeType.EqualsNode(this._provTypeSkin)) {
1089
      try {
1090
        cr.installSkin(fileURL, this._isProfile, true); // Extension skins can execute scripts
1091
      }
1092
      catch (e) {
1093
        throw new nsChromeRegistrationException(fileURL, this._isProfile, "installSkin");
1094
      }
1095
      type = this._writer.CHROME_TYPE_SKIN;
1096
    }
1097
    else if (aChromeType.EqualsNode(this._provTypeLocale)) {
1098
      try {
1099
        cr.installLocale(fileURL, this._isProfile);
1100
      }
1101
      catch (e) {
1102
        throw new nsChromeRegistrationException(fileURL, this._isProfile, "installLocale");
1103
      }
1104
      type = this._writer.CHROME_TYPE_LOCALE;
1105
    }
1106
    var providerNames = this._getProviderNames(fileURL, type);
1107
    for (var i = 0; i < providerNames.length; ++i) {
1108
      this._writer.registerChrome(providerNames[i], type, this._isProfile);
1109
      
1110
      // Make sure we enable overlays for this extension so that if it is disabled by
1111
      // mismatch checking, installing a newer version (as opposed to enabling as a 
1112
      // result of a version compatibility update) makes the extension's overlaid UI 
1113
      // appear immediately.
1114
      cr.setAllowOverlaysForPackage(providerNames[i], true);
1115
    }
1116
  },
1117
  
1118
  _getProviderNames: function nsExtensionInstaller__getProviderNames (aBaseURL, aType)
1119
  {
1120
    if (aBaseURL.charAt(aBaseURL.length-1) != "/")
1121
      aBaseURL += "/";
1122
    var manifestURL = aBaseURL + "contents.rdf";
1123
    
1124
    var providerNames = [];
1125
1126
    try {
1127
      // Discover the list of provider names to register for the location 
1128
      // specified in the provider arc.
1129
      //
1130
      // The contents.rdf file will look like this:
1131
      //
1132
      //   <RDF:Seq about="urn:mozilla:<type>:root">
1133
      //     <RDF:li resource="urn:mozilla:<type>:itemName1"/>
1134
      //     <RDF:li resource="urn:mozilla:<type>:itemName2"/>
1135
      //     ..
1136
      //   </RDF:Seq>
1137
      //
1138
      // We need to explicitly walk this list here, we don't need to do so
1139
      // for nsIXULChromeRegistry's |installPackage| method since that does
1140
      // this same thing itself.
1141
      
1142
      var ds = gRDF.GetDataSourceBlocking(manifestURL);
1143
      
1144
      var ctr = Components.classes["@mozilla.org/rdf/container;1"]
1145
                          .createInstance(Components.interfaces.nsIRDFContainer);
1146
      ctr.Init(ds, gRDF.GetResource("urn:mozilla:" + aType + ":root"));
1147
      
1148
      var items = ctr.GetElements();
1149
      while (items.hasMoreElements()) {
1150
        var item = items.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
1151
        
1152
        var nameArc = gRDF.GetResource(CHROME_NS("name"));
1153
        var name;
1154
        if (ds.hasArcOut(item, nameArc))
1155
          name = stringData(ds.GetTarget(item, nameArc, true));
1156
        else {
1157
          var parts = item.Value.split(":");
1158
          name = parts[parts.length-1];
1159
        }
1160
        providerNames.push(name);
1161
      }
1162
    }
1163
    catch (e) { }
1164
    
1165
    return providerNames;
1166
  }
1167
};
1168
1169
///////////////////////////////////////////////////////////////////////////////
1170
//
1171
// nsExtensionUninstaller
1172
//
1173
function nsExtensionUninstaller(aExtensionDS)
1174
{
1175
  this._cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
1176
                       .getService(Components.interfaces.nsIXULChromeRegistry);
1177
  this._extensionDS = aExtensionDS;
1178
}
1179
1180
nsExtensionUninstaller.prototype = {
1181
  _extensionDS  : null,
1182
  _cr           : null,
1183
  _isProfile    : true,
1184
  _extDirKey    : "",
1185
  _extensionsDir: null,
1186
  _extensionID  : "",
1187
1188
  uninstall: function nsExtensionUninstaller_uninstall (aExtensionID, aIsProfile)
1189
  {
1190
    // Initialize the installer for this extension
1191
    this._extensionID = aExtensionID;
1192
    this._isProfile = aIsProfile;
1193
    this._extDirKey = getDirKey(this._isProfile);
1194
    this._extensionsDir = getDir(this._extDirKey, [DIR_EXTENSIONS]);
1195
1196
    // Create a logger to log install operations for uninstall
1197
    this._reader = new nsInstallLogReader(this._extensionID, 
1198
                                          this._isProfile, 
1199
                                          this);
1200
    try { // XXXben don't let errors stop us. 
1201
      this._reader.read();
1202
      
1203
      // Now remove the uninstall log file. 
1204
      this._removeFile(this._reader.uninstallLog);
1205
    }
1206
    catch (e) {
1207
      dump("******* Failed to remove extension uninstall log, with exception = " + e + "\n");
1208
    }
1209
    
1210
    // Unset the "toBeUninstalled" flag
1211
    this._extensionDS.setItemProperty(this._extensionID, 
1212
                                      this._extensionDS._emR("toBeUninstalled"),
1213
                                      null, this._isProfile,
1214
                                      nsIUpdateItem.TYPE_EXTENSION);
1215
  },
1216
  
1217
  ///////////////////////////////////////////////////////////////////////////////
1218
  // nsIInstallLogReaderListener
1219
  onAddFile: function nsExtensionUninstaller_onAddFile (aFile)
1220
  {
1221
    this._removeFile(aFile);
1222
  },
1223
  
1224
  _removeFile: function nsExtensionUninstaller__removeFile (aFile)
1225
  {
1226
    if (aFile.exists()) {
1227
      aFile.remove(false);
1228
      
1229
      // Clean up the parent hierarchy if possible  
1230
      var parent = aFile.parent;
1231
      var e = parent.directoryEntries;
1232
      if (!e.hasMoreElements() && 
1233
          !parent.equals(this._extensionsDir)) // stop at the extensions dir
1234
        this._removeFile(parent);
1235
    }
1236
  },
1237
  
1238
  // XXXben - maybe we should find a way to 
1239
  _packagesForExtension: [],
1240
  
1241
  onRegisterChrome: function nsExtensionUninstaller_onRegisterChrome (aProviderName, aFile, aChromeType, aIsProfile)
1242
  {
1243
    switch (aChromeType) {
1244
    case this._reader.CHROME_TYPE_PACKAGE:
1245
      this._packagesForExtension.push(aProviderName);
1246
      this._cr.uninstallPackage(aProviderName, aIsProfile)
1247
      break;
1248
    case this._reader.CHROME_TYPE_SKIN:
1249
      for (var i = 0; i < this._packagesForExtension.length; ++i) {
1250
        this._cr.deselectSkinForPackage(aProviderName, 
1251
                                        this._packagesForExtension[i], 
1252
                                        aIsProfile);
1253
      }
1254
      // this._cr.uninstallSkin(aProviderName, aIsProfile)
1255
      break;
1256
    case this._reader.CHROME_TYPE_LOCALE:
1257
      for (var i = 0; i < this._packagesForExtension.length; ++i) {
1258
        this._cr.deselectLocaleForPackage(aProviderName, 
1259
                                          this._packagesForExtension[i], 
1260
                                          aIsProfile);
1261
      }
1262
      // this._cr.uninstallLocale(aProviderName, aIsProfile)
1263
      break;
1264
    }
1265
  }
1266
};
1267
1268
///////////////////////////////////////////////////////////////////////////////
1269
//
1270
// nsExtensionEnabler
1271
//
1272
function nsExtensionEnabler(aExtensionDS)
1273
{
1274
  this._cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
1275
                       .getService(Components.interfaces.nsIXULChromeRegistry);
1276
  this._extensionDS = aExtensionDS;
1277
}
1278
1279
nsExtensionEnabler.prototype = {
1280
  _extensionDS  : null,
1281
  _cr           : null,
1282
  _enable       : true,
1283
  _isProfile    : true,
1284
  _extDirKey    : "",
1285
  _extensionsDir: null,
1286
1287
  enable: function nsExtensionEnabler_enable (aExtensionID, aIsProfile, aDisable)
1288
  {
1289
    // Initialize the installer for this extension
1290
    this._enable = !aDisable;
1291
    this._extensionID = aExtensionID;
1292
    this._isProfile = aIsProfile;
1293
    this._extDirKey = getDirKey(this._isProfile);
1294
    this._extensionsDir = getDir(this._extDirKey, [DIR_EXTENSIONS]);
1295
1296
    // Create a logger to log install operations for uninstall
1297
    this._reader = new nsInstallLogReader(this._extensionID, 
1298
                                          this._isProfile, 
1299
                                          this);
1300
    this._reader.read();
1301
  },
1302
  
1303
  onRegisterChrome: function nsExtensionEnabler_onRegisterChrome (aProviderName, aFile, aChromeType, aIsProfile)
1304
  {
1305
    if (aChromeType == this._reader.CHROME_TYPE_PACKAGE)
1306
      this._cr.setAllowOverlaysForPackage(aProviderName, this._enable);
1307
  },
1308
  
1309
  onAddFile: function nsExtensionEnabler_onAddFile (aFile)
1310
  {
1311
  }
1312
};
1313
1314
///////////////////////////////////////////////////////////////////////////////
1315
//
1316
// nsThemeInstaller
1317
//
1318
function nsThemeInstaller(aExtensionDS, aManager)
1319
{
1320
  this._extensionDS = aExtensionDS;
1321
  this._em = aManager;
1322
}
1323
1324
nsThemeInstaller.prototype = {
1325
  _extensionDS  : null,
1326
  _isProfile    : true,
1327
  _extDirKey    : "",
1328
1329
  install: function nsThemeInstaller_install (aJARFile, aIsProfile)
1330
  {
1331
    var extDirKey = getDirKey(aIsProfile);
1332
1333
    // Since we're installing a "new type" theme, we assume a file layout
1334
    // within the JAR like so:
1335
    // foo.jar/
1336
    //         install.rdf      <-- Theme Manager metadata
1337
    //         contents.rdf   <-- Chrome Registry metadata
1338
    //         browser/
1339
    //         global/
1340
    //         ...
1341
    var zipReader = Components.classes["@mozilla.org/libjar/zip-reader;1"]
1342
                              .createInstance(Components.interfaces.nsIZipReader);
1343
    zipReader.init(aJARFile);
1344
    zipReader.open();
1345
    
1346
    try {
1347
      zipReader.getEntry(FILE_INSTALL_MANIFEST);
1348
    }
1349
    catch (e) {
1350
      // If the zip reader returned an error code here it means that the install.rdf
1351
      // file was not found in the theme jar file - i.e. it was an old style theme. 
1352
      // There's no reason for people to be installing or maintaining such themes 
1353
      // anymore as there is no practical use for them, so we should throw an error
1354
      // here and bail. 
1355
      try {
1356
        zipReader.getEntry(FILE_CHROME_MANIFEST);
1357
        
1358
        // Load the contents.rdf file from the .jar file if present and show a detailed
1359
        // error.         
1360
        var tempChromeManifest = getFile(extDirKey,
1361
                                         [DIR_EXTENSIONS, DIR_TEMP, FILE_CHROME_MANIFEST]);
1362
        zipReader.extract(FILE_CHROME_MANIFEST, tempChromeManifest);
1363
        var rdfs = Components.classes["@mozilla.org/rdf/rdf-service;1"]
1364
                             .getService(Components.interfaces.nsIRDFService);
1365
        showOldThemeError(rdfs.GetDataSourceBlocking(getURLSpecFromFile(tempChromeManifest)));
1366
        tempChromeManifest.remove(false);
1367
      }
1368
      catch (e) {
1369
        showMissingFileError(aJARFile, FILE_CHROME_MANIFEST);
1370
      }
1371
    }
1372
    
1373
    var themeManifest = getFile(extDirKey,
1374
                                [DIR_EXTENSIONS, DIR_TEMP, getRandomFileName("install", "rdf")]);
1375
    zipReader.extract(FILE_INSTALL_MANIFEST, themeManifest);
1376
    
1377
    var chromeManifest = getFile(extDirKey,
1378
                                 [DIR_EXTENSIONS, DIR_TEMP, FILE_CHROME_MANIFEST]);
1379
    zipReader.extract(FILE_CHROME_MANIFEST, chromeManifest);
1380
    
1381
    var themeMetadata = getInstallManifest(themeManifest);
1382
    if (!themeMetadata) return;
1383
    var chromeMetadata = gRDF.GetDataSourceBlocking(getURLSpecFromFile(chromeManifest));
1384
    
1385
    // We do a basic version check first just to make sure we somehow weren't 
1386
    // tricked into installing an incompatible theme...
1387
    this._themeID = this._em.canInstallItem(themeMetadata);
1388
    if (isNaN(parseInt(this._themeID))) {
1389
      var canInstall = true;
1390
1391
      // Copy the file to its final location
1392
      var destinationDir = getDir(extDirKey, 
1393
                                  [DIR_EXTENSIONS, this._themeID, DIR_CHROME]);
1394
      var destinationFile = destinationDir.clone();
1395
      destinationFile.append(aJARFile.leafName);
1396
      if (destinationFile.exists())
1397
        destinationFile.remove(false);
1398
      aJARFile.copyTo(destinationDir, aJARFile.leafName);
1399
1400
      var nameArc = gRDF.GetResource(CHROME_NS("name"));
1401
      var ctr = Components.classes["@mozilla.org/rdf/container;1"]
1402
                          .createInstance(Components.interfaces.nsIRDFContainer);
1403
      ctr.Init(chromeMetadata, gRDF.GetResource("urn:mozilla:skin:root"));
1404
      
1405
      var elts = ctr.GetElements();
1406
      while (elts.hasMoreElements()) {
1407
        var elt = elts.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
1408
        var chromeSkinPrefix = "urn:mozilla:skin:";
1409
        if (elt.Value.substr(0, chromeSkinPrefix.length) == chromeSkinPrefix) {
1410
          var name = chromeMetadata.GetTarget(elt, nameArc, true);
1411
          
1412
          // Check to see if the em:internalName property on the theme install
1413
          // manifest matches the chrome:name property on the theme's CR entry. 
1414
          var manifestRoot = gRDF.GetResource("urn:mozilla:install-manifest");
1415
          var internalName = themeMetadata.GetTarget(manifestRoot, 
1416
                                                     gRDF.GetResource(EM_NS("internalName")),
1417
                                                     true);
1418
          if (!internalName.EqualsNode(name)) {
1419
            var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
1420
                                           .getService(Components.interfaces.nsIConsoleService);
1421
            consoleService.logStringMessage("Could not install theme because chrome:name arc in " +
1422
                                            "the theme's contents.rdf file (" + stringData(name) +
1423
                                            ") does not match the em:internalName arc in the theme's " + 
1424
                                            "install.rdf file (" + stringData(internalName) + ")");
1425
            var fileURL = getURLSpecFromFile(themeManifest);
1426
            var uri = Components.classes["@mozilla.org/network/standard-url;1"]
1427
                                .createInstance(Components.interfaces.nsIURI);
1428
            uri.spec = fileURL;
1429
            var url = uri.QueryInterface(Components.interfaces.nsIURL);
1430
            showMalformedError(url.fileName);
1431
            
1432
            destinationFile.remove(false);
1433
            destinationDir.remove(true);
1434
            this._em._cleanDirs();
1435
            
1436
            canInstall = false;
1437
          }
1438
1439
          if (canInstall) {
1440
            name = name.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
1441
1442
            // Create a logger to log install operations for uninstall
1443
            this._writer = new nsInstallLogWriter(this._themeID, aIsProfile);
1444
            this._writer.open();
1445
            this._writer.installSkin(name, aIsProfile);
1446
          }
1447
        }
1448
      }
1449
1450
      if (canInstall) {
1451
        this._writer.addFile(destinationFile.QueryInterface(Components.interfaces.nsILocalFile));
1452
        this._writer.close();
1453
1454
        // Use the Chrome Registry API to install the theme there
1455
        var filePath = "jar:" + getURLSpecFromFile(destinationFile) + "!/";      
1456
        var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
1457
                          .getService(Components.interfaces.nsIXULChromeRegistry);
1458
        cr.installSkin(filePath, aIsProfile, false);
1459
1460
        // Insert the theme into the theme list. 
1461
        this._extensionDS.insertForthcomingItem(this._themeID, nsIUpdateItem.TYPE_THEME, 
1462
                                                aIsProfile);
1463
1464
        // Add metadata for the extension to the global extension metadata set
1465
        this._extensionDS.addItemMetadata(this._themeID, nsIUpdateItem.TYPE_THEME,
1466
                                          themeMetadata, aIsProfile);
1467
      }
1468
      
1469
      this._extensionDS.doneInstallingTheme(this._themeID);
1470
    }
1471
    else if (this._themeID == 0)
1472
      showIncompatibleError(themeMetadata);
1473
    
1474
    zipReader.close();
1475
    themeManifest.remove(false);
1476
    chromeManifest.remove(false);
1477
  }
1478
};
1479
1480
///////////////////////////////////////////////////////////////////////////////
1481
//
1482
// nsThemeUninstaller
1483
//
1484
function nsThemeUninstaller(aExtensionDS)
1485
{
1486
  this._cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
1487
                       .getService(Components.interfaces.nsIXULChromeRegistry);
1488
}
1489
1490
nsThemeUninstaller.prototype = {
1491
  _extensionsDir : null,
1492
  
1493
  uninstall: function nsThemeUninstaller_uninstall (aThemeID, aIsProfile)
1494
  {
1495
    this._extensionsDir = getDir(getDirKey(aIsProfile), [DIR_EXTENSIONS]);
1496
1497
    // Create a logger to log install operations for uninstall
1498
    this._reader = new nsInstallLogReader(aThemeID, aIsProfile, this);
1499
    try { // XXXben don't let errors stop us. 
1500
      this._reader.read();
1501
      
1502
      // Now remove the uninstall log file. 
1503
      this._removeFile(this._reader.uninstallLog);
1504
    }
1505
    catch (e) {
1506
      dump("******* Failed to remove theme uninstall log, with exception = " + e + "\n");
1507
    }
1508
  },
1509
  
1510
  ///////////////////////////////////////////////////////////////////////////////
1511
  // nsIInstallLogReaderListener
1512
  onAddFile: function nsThemeUninstaller_onAddFile (aFile)
1513
  {
1514
    this._removeFile(aFile);
1515
  },
1516
  
1517
  _removeFile: function nsThemeUninstaller__removeFile (aFile)
1518
  {
1519
    if (aFile.exists()) {
1520
      aFile.remove(false);
1521
      
1522
      // Clean up the parent hierarchy if possible  
1523
      var parent = aFile.parent;
1524
      var e = parent.directoryEntries;
1525
      if (!e.hasMoreElements() && 
1526
          !parent.equals(this._extensionsDir)) // stop at the extensions dir
1527
        this._removeFile(parent);
1528
    }
1529
  },
1530
  
1531
  onInstallSkin: function nsThemeUninstaller_onInstallSkin (aSkinName, aIsProfile)
1532
  {
1533
    this._cr.uninstallSkin(aSkinName, aIsProfile);
1534
  }
1535
};
1536
1537
///////////////////////////////////////////////////////////////////////////////
1538
//
1539
// nsExtensionManager
1540
//
1541
function nsExtensionManager()
1542
{
1543
  gPref = Components.classes["@mozilla.org/preferences-service;1"]
1544
                    .getService(Components.interfaces.nsIPrefBranch);
1545
  gRDF = Components.classes["@mozilla.org/rdf/rdf-service;1"]
1546
                   .getService(Components.interfaces.nsIRDFService);
1547
  gOS = Components.classes["@mozilla.org/observer-service;1"]
1548
                  .getService(Components.interfaces.nsIObserverService);
1549
1550
  gOS.addObserver(this, "xpcom-shutdown", false);
1551
1552
  ensureExtensionsFiles(false);
1553
}
1554
1555
nsExtensionManager.prototype = {
1556
  _extInstaller     : null,
1557
  _extUninstaller   : null,
1558
  _extEnabler       : null,
1559
  _started          : false,
1560
  
1561
  /////////////////////////////////////////////////////////////////////////////
1562
  // nsIObserver
1563
  observe: function nsExtensionManager_observe (aSubject, aTopic, aData)
1564
  {
1565
    switch (aTopic) {
1566
    case "quit-application-requested":
1567
      if (this._downloadCount > 0) {
1568
        var result;
1569
        result = this._confirmCancelDownloads(this._downloadCount, 
1570
                                              "quitCancelDownloadsAlertTitle",
1571
                                              "quitCancelDownloadsAlertMsgMultiple",
1572
                                              "quitCancelDownloadsAlertMsg",
1573
                                              "dontQuitButtonWin");
1574
        if (!result)
1575
          this._cancelDownloads();
1576
        var PRBool = aSubject.QueryInterface(Components.interfaces.nsISupportsPRBool);
1577
        PRBool.data = result;
1578
      }
1579
      break;
1580
    case "offline-requested":
1581
      if (this._downloadCount > 0) {
1582
        result = this._confirmCancelDownloads(this._downloadCount,
1583
                                              "offlineCancelDownloadsAlertTitle",
1584
                                              "offlineCancelDownloadsAlertMsgMultiple",
1585
                                              "offlineCancelDownloadsAlertMsg",
1586
                                              "dontGoOfflineButton");
1587
        if (!result)
1588
          this._cancelDownloads();
1589
        var PRBool = aSubject.QueryInterface(Components.interfaces.nsISupportsPRBool);
1590
        PRBool.data = result;
1591
      }
1592
      break;  
1593
    case "xpcom-shutdown":
1594
      gOS.removeObserver(this, "xpcom-shutdown");    
1595
1596
      // Release strongly held services.
1597
      gPref           = null;
1598
      gRDF            = null;
1599
      gOS             = null;
1600
      gVersionChecker = null;
1601
      break;
1602
    }
1603
  },
1604
  
1605
  start: function nsExtensionManager_start (aIsDirty)
1606
  {
1607
    this._started = true;
1608
    
1609
    var needsRestart = false;
1610
  
1611
    ensureExtensionsFiles(true);
1612
    
1613
    // Somehow the component list went away, and for that reason the new one
1614
    // generated by this function is going to result in a different compreg.
1615
    // We must force a restart.
1616
    var componentList = getFile(KEY_PROFILEDIR, [FILE_COMPONENT_MANIFEST]);
1617
    if (!componentList.exists())
1618
      needsRestart = true;
1619
    
1620
    // XXXben - a bit of a hack - clean up any empty dirs that may not have been
1621
    //          properly removed by [un]install... I should really investigate those
1622
    //          cases to see what is stopping these dirs from being removed, but no
1623
    //          time now.
1624
    this._cleanDirs();
1625
  
1626
    var cmdLineSvc = Components.classes["@mozilla.org/appshell/commandLineService;1"]
1627
                                .getService(Components.interfaces.nsICmdLineService);
1628
    var safeMode = cmdLineSvc.getCmdLineValue("-safe-mode") != null;
1629
    if (!safeMode) {
1630
      var wasInSafeModeFile = getFile(KEY_PROFILEDIR, [DIR_EXTENSIONS, FILE_WASINSAFEMODE]);
1631
      if (wasInSafeModeFile.exists()) {
1632
        // Clean up after we were in safe mode
1633
        var win = this._showProgressWindow();
1634
        try {
1635
          this._ensureDS();
1636
          
1637
          // Retrieve the skin that was selected prior to entering safe mode
1638
          // and select it. 
1639
          var lastSelectedSkin = KEY_DEFAULT_THEME;
1640
          try {
1641
            lastSelectedSkin = gPref.getCharPref(PREF_EM_LAST_SELECTED_SKIN);
1642
            gPref.clearUserPref(PREF_EM_LAST_SELECTED_SKIN);
1643
            gPref.setCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN, lastSelectedSkin);
1644
          } 
1645
          catch (e) { }
1646
          
1647
          // Walk the list of extensions and re-activate overlays for packages 
1648
          // that aren't disabled.
1649
          var items = this._ds.getItemsWithFlagUnset("disabled", nsIUpdateItem.TYPE_EXTENSION);
1650
          for (var i = 0; i < items.length; ++i)
1651
            this._finalizeEnableDisable(items[i], false);
1652
            
1653
          wasInSafeModeFile.remove(false);
1654
          
1655
          this._writeDefaults(true);
1656
          try {
1657
            this._writeDefaults(false);
1658
          }
1659
          catch (e) { }
1660
        }
1661
        catch (e) {
1662
          dump("*** nsExtensionManager::start - failure, catching exception so finalize window can close = " + e + "\n");
1663
        }
1664
        win.close();
1665
        
1666
        needsRestart = true;
1667
      }
1668
1669
      if (aIsDirty) 
1670
        needsRestart = this._finishOperations();
1671
    }
1672
    else {
1673
      var win = this._showProgressWindow();
1674
      try {    
1675
        // Enter safe mode
1676
        this._ensureDS();
1677
1678
        // Save the current theme (assumed to be the theme that styles the global
1679
        // package) and re-select the default theme ("classic/1.0")
1680
        if (!gPref.prefHasUserValue(PREF_EM_LAST_SELECTED_SKIN)) {
1681
          gPref.setCharPref(PREF_EM_LAST_SELECTED_SKIN,
1682
                            gPref.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN));
1683
          if (gPref.prefHasUserValue(PREF_GENERAL_SKINS_SELECTEDSKIN))
1684
            gPref.clearUserPref(PREF_GENERAL_SKINS_SELECTEDSKIN);
1685
        }
1686
1687
        var items = this._ds.getItemList(null, nsIUpdateItem.TYPE_EXTENSION, {});
1688
        for (var i = 0; i < items.length; ++i)
1689
          this._finalizeEnableDisable(items[i].id, true);
1690
          
1691
        this._ds.safeMode = true;
1692
        
1693
        this._writeDefaults(true);
1694
        try {
1695
          this._writeDefaults(false);
1696
        }
1697
        catch (e) { }
1698
1699
        needsRestart = true;
1700
1701
        var wasInSafeModeFile = getFile(KEY_PROFILEDIR, [DIR_EXTENSIONS, FILE_WASINSAFEMODE]);
1702
        if (!wasInSafeModeFile.exists())
1703
          wasInSafeModeFile.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
1704
        else {
1705
          // If the "Safe Mode" file already exists, then we are in the second launch of an
1706
          // app launched with -safe-mode and so we don't want to provoke any further
1707
          // restarts or re-create the file, just continue starting normally.
1708
          needsRestart = false;
1709
        }
1710
      }
1711
      catch (e) {
1712
        dump("*** nsExtensionManager::start - (safe mode) failure, catching exception so finalize window can close = " + e + "\n");
1713
      }
1714
      win.close();
1715
      
1716
    }
1717
    return needsRestart;
1718
  },
1719
  
1720
  handleCommandLineArgs: function nsExtensionManager_handleCommandLineArgs ()
1721
  {
1722
    var cmdLineSvc = Components.classes["@mozilla.org/appshell/commandLineService;1"]
1723
                              .getService(Components.interfaces.nsICmdLineService);
1724
    var globalExtension = cmdLineSvc.getCmdLineValue("-install-global-extension");
1725
    if (globalExtension)
1726
      this._checkForGlobalInstalls(globalExtension, nsIUpdateItem.TYPE_EXTENSION);
1727
      
1728
    var globalTheme = cmdLineSvc.getCmdLineValue("-install-global-theme");
1729
    if (globalTheme)
1730
      this._checkForGlobalInstalls(globalTheme, nsIUpdateItem.TYPE_THEME);
1731
    
1732
    var showList = cmdLineSvc.getCmdLineValue("-list-global-items");
1733
    if (showList)
1734
      this._showGlobalItemList();
1735
      
1736
    var locked = cmdLineSvc.getCmdLineValue("-lock-item");
1737
    if (locked) {
1738
      this._ensureDS();
1739
      this._ds.lockUnlockItem(locked, true);
1740
    }
1741
1742
    var unlocked = cmdLineSvc.getCmdLineValue("-unlock-item");
1743
    if (unlocked) {
1744
      this._ensureDS();
1745
      this._ds.lockUnlockItem(unlocked, false);
1746
    }
1747
    
1748
    this._finishOperations();
1749
  },
1750
  
1751
  register: function nsExtensionManager_register ()
1752
  {
1753
    if (!this._started) {
1754
      // Loads the datasource and installs any pre-configured items.
1755
      this._ds = new nsExtensionsDataSource();
1756
      this._ds.loadExtensions(false);
1757
      
1758
      // Write bin/extensions/Extensions.rdf
1759
      //       bin/extensions/installed-extensions-processed.txt
1760
      (new nsInstalledExtensionReader(this)).read();
1761
1762
      // Write bin/components.ini
1763
      var manifest = getFile(KEY_APPDIR, [FILE_COMPONENT_MANIFEST]);
1764
      this._writeProfileFile(manifest, this._getComponentsDir, false);
1765
1766
      // Update the Defaults Manifest
1767
      this._writeDefaults(false);
1768
    }
1769
  },
1770
1771
  _cancelDownloads: function nsExtensionManager__cancelDownloads ()
1772
  {
1773
    for (var i = 0; i < this._transactions.length; ++i)
1774
      gOS.notifyObservers(this._transactions[i], "xpinstall-progress", "cancel");
1775
    gOS.removeObserver(this, "offline-requested");
1776
    gOS.removeObserver(this, "quit-application-requested");
1777
1778
    this._removeAllDownloads();
1779
  },
1780
1781
  _confirmCancelDownloads: function nsExtensionManager__confirmCancelDownloads(aCount, 
1782
    aTitle, aCancelMessageMultiple, aCancelMessageSingle, aDontCancelButton)
1783
  {
1784
    var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
1785
                        .getService(Components.interfaces.nsIStringBundleService);
1786
    var bundle = sbs.createBundle("chrome://mozapps/locale/downloads/downloads.properties");
1787
    var title = bundle.GetStringFromName(aTitle);
1788
    var message, quitButton;
1789
    if (aCount > 1) {
1790
      message = bundle.formatStringFromName(aCancelMessageMultiple, [aCount], 1);
1791
      quitButton = bundle.formatStringFromName("cancelDownloadsOKTextMultiple", [aCount], 1);
1792
    }
1793
    else {
1794
      message = bundle.GetStringFromName(aCancelMessageSingle);
1795
      quitButton = bundle.GetStringFromName("cancelDownloadsOKText");
1796
    }
1797
    var dontQuitButton = bundle.GetStringFromName(aDontCancelButton);
1798
    
1799
    var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
1800
                       .getService(Components.interfaces.nsIWindowMediator);
1801
    var win = wm.getMostRecentWindow("Extension:Manager");
1802
    const nsIPromptService = Components.interfaces.nsIPromptService;
1803
    var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
1804
                       .getService(nsIPromptService);
1805
    var flags = (nsIPromptService.BUTTON_TITLE_IS_STRING * nsIPromptService.BUTTON_POS_0) +
1806
                (nsIPromptService.BUTTON_TITLE_IS_STRING * nsIPromptService.BUTTON_POS_1);
1807
    var rv = ps.confirmEx(win, title, message, flags, quitButton, dontQuitButton, null, null, { });
1808
    return rv == 1;
1809
  },
1810
  
1811
  // This function checks for and disables any "old-style" extensions 
1812
  // from Firefox 0.8 and earlier created using the "chrome:extension=true" flag. 
1813
  _disableObsoleteExtensions: function nsExtensionManager__disableObsoleteExtensions ()
1814
  {
1815
    if (!gPref.prefHasUserValue(PREF_EM_DISABLEDOBSOLETE) || !gPref.getBoolPref(PREF_EM_DISABLEDOBSOLETE)) {
1816
      var win = this._showProgressWindow();
1817
      try {
1818
        var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
1819
                          .getService(Components.interfaces.nsIXULChromeRegistry);
1820
        var crDS = gRDF.GetDataSource("rdf:chrome");
1821
        var disabled = false;
1822
        var sources = crDS.GetSources(gRDF.GetResource(CHROME_NS("extension")), gRDF.GetLiteral("true"), true);
1823
        while (sources.hasMoreElements()) {
1824
          disabled = true;
1825
          
1826
          var source = sources.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
1827
          var name = crDS.GetTarget(source, gRDF.GetResource(CHROME_NS("name")), true);
1828
          if (name) {
1829
            name = name.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
1830
            cr.setAllowOverlaysForPackage(name, false);
1831
          }
1832
        }
1833
1834
        // Re-select the default theme to prevent any incompatibilities with old-style
1835
        // themes.
1836
        cr.selectSkin(KEY_DEFAULT_THEME, true);
1837
      }
1838
      catch (e) {
1839
//        dump("*** nsExtensionManager::_disableObsoleteExtensions - failure, catching exception so finalize window can close\n");
1840
      }
1841
      win.close();
1842
      
1843
      if (disabled) {
1844
        const nsIPromptService = Components.interfaces.nsIPromptService;
1845
        var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
1846
                           .getService(nsIPromptService);
1847
        var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
1848
                            .getService(Components.interfaces.nsIStringBundleService);
1849
        var bundle = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
1850
        var title = bundle.GetStringFromName("disabledObsoleteTitle");
1851
        var message = bundle.GetStringFromName("disabledObsoleteMessage");
1852
        ps.alert(null, title, message);
1853
      }
1854
            
1855
      gPref.setBoolPref(PREF_EM_DISABLEDOBSOLETE, true);
1856
    }
1857
  },
1858
  
1859
  _checkForGlobalInstalls: function nsExtensionManager__checkForGlobalInstalls (aPath, aItemType)
1860
  {
1861
    try {
1862
      var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
1863
                             .getService(Components.interfaces.nsIIOService);
1864
      var uri = ioServ.newURI(aPath, null, null);  
1865
      aPath = uri.path;
1866
    }
1867
    catch (e) { } 
1868
1869
    // First see if the path supplied is a file path
1870
    var file = Components.classes["@mozilla.org/file/local;1"]
1871
                         .createInstance(Components.interfaces.nsILocalFile);
1872
    try {
1873
      file.initWithPath(aPath);
1874
    }
1875
    catch (e) {
1876
      // Try appending the path to the current proc dir. 
1877
      file = getDir(KEY_APPDIR, []);
1878
      try {
1879
        file.append(aPath);
1880
      }
1881
      catch (e) { /* can't handle this */ }
1882
    }
1883
    
1884
    if (file.exists()) {
1885
      if (aItemType & nsIUpdateItem.TYPE_EXTENSION)
1886
        this.installExtension(file, nsIExtensionManager.FLAG_INSTALL_GLOBAL);
1887
      else if (aItemType & nsIUpdateItem.TYPE_THEME)
1888
        this.installTheme(file, nsIExtensionManager.FLAG_INSTALL_GLOBAL);
1889
    }
1890
    else
1891
      dump("Invalid XPI/JAR Path: " + aPath + "\n");
1892
  },
1893
  
1894
  _showGlobalItemList: function nsExtensionManager__showGlobalItemList ()
1895
  {
1896
    this._ensureDS();
1897
    
1898
    var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
1899
                        .getService(Components.interfaces.nsIStringBundleService);
1900
    var bundle = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
1901
1902
    dump(bundle.GetStringFromName("globalItemList"));
1903
    dump(bundle.GetStringFromName("globalItemListExtensions"));
1904
    var items = this.getItemList(null, nsIUpdateItem.TYPE_EXTENSION, {});
1905
    for (var i = 0; i < items.length; ++i)
1906
      dump(" " + items[i].id + "   " + items[i].name + " " + items[i].version + "\n");
1907
    dump(bundle.GetStringFromName("globalItemListThemes"));
1908
    items = this.getItemList(null, nsIUpdateItem.TYPE_THEME, {});
1909
    for (var i = 0; i < items.length; ++i)
1910
      dump(" " + items[i].id + "   " + items[i].name + " " + items[i].version + "\n");
1911
      
1912
    dump("\n\n");
1913
  },
1914
  
1915
  _finishOperations: function nsExtensionManager__finishOperations ()
1916
  {
1917
    var win = this._showProgressWindow();
1918
  
1919
    try {
1920
      // An existing autoreg file is an indication that something major has 
1921
      // happened to the extensions datasource (install/uninstall/enable/disable)
1922
      // and as such we must load it now and see what needs to happen.
1923
      this._ensureDS();
1924
      
1925
      // Look for items that need to be installed
1926
      var items = this._ds.getItemsWithFlagSet("toBeInstalled");
1927
      for (var i = 0; i < items.length; ++i)
1928
        this._finalizeInstall(items[i]);
1929
1930
      // If there were any install operations, we need to restart (again!) after 
1931
      // the component files have been properly installed are registered...
1932
      var needsRestart = items.length > 0;
1933
      
1934
      // Look for extensions that need to be enabled
1935
      items = this._ds.getItemsWithFlagSet("toBeEnabled");
1936
      for (var i = 0; i < items.length; ++i)
1937
        this._finalizeEnableDisable(items[i], false);
1938
      
1939
      // Look for extensions that need to be disabled
1940
      items = this._ds.getItemsWithFlagSet("toBeDisabled");
1941
      for (var i = 0; i < items.length; ++i)
1942
        this._finalizeEnableDisable(items[i], true);
1943
      
1944
      // Look for extensions that need to be removed. This MUST be done after
1945
      // the install operations since extensions to be installed may have to be
1946
      // uninstalled if there are errors during the installation process!
1947
      items = this._ds.getItemsWithFlagSet("toBeUninstalled");
1948
      for (var i = 0; i < items.length; ++i)
1949
        this._finalizeUninstall(items[i]);
1950
        
1951
      // Clean up any helper objects
1952
      delete this._extInstaller;
1953
      delete this._extUninstaller;
1954
      delete this._extEnabler;
1955
      
1956
      this._updateManifests();
1957
      // If no additional restart is required, it implies that there are
1958
      // no new components that need registering so we can inform the app
1959
      // not to do any extra startup checking next time round.    
1960
      this._writeCompatibilityManifest(needsRestart);
1961
    }
1962
    catch (e) {
1963
      dump("*** nsExtensionManager::_finishOperations - failure, catching exception so finalize window can close " + e +"\n");
1964
    }
1965
    win.close();
1966
    
1967
    return needsRestart;
1968
  },
1969
  
1970
  // XXXben - this is actually a cheap stunt to load all the chrome registry 
1971
  //          services required to register/unregister packages... the synchronous
1972
  //          nature of this code ensures the window will never actually appear
1973
  //          on screen. 
1974
  _showProgressWindow: function nsExtensionManager__showProgressWindow ()
1975
  {
1976
    var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
1977
                       .getService(Components.interfaces.nsIWindowWatcher);
1978
    return ww.openWindow(null, "chrome://mozapps/content/extensions/finalize.xul", 
1979
                         "", "chrome,centerscreen,dialog", null);
1980
  },
1981
  
1982
  _loadDefaults: function nsExtensionManager__loadDefaults ()
1983
  {
1984
    // Load default preferences files for all extensions
1985
    var defaultsManifest = getFile(KEY_PROFILEDIR, 
1986
                                   [DIR_EXTENSIONS, FILE_DEFAULTS]);
1987
    if (defaultsManifest.exists()) {
1988
      var fis = Components.classes["@mozilla.org/network/file-input-stream;1"]
1989
                          .createInstance(Components.interfaces.nsIFileInputStream);
1990
      fis.init(defaultsManifest, -1, -1, false);
1991
      var lis = fis.QueryInterface(Components.interfaces.nsILineInputStream);
1992
      var line = { value: "" };
1993
      var more = false;
1994
      do {
1995
        more = lis.readLine(line);
1996
        var lf = Components.classes["@mozilla.org/file/local;1"]
1997
                            .createInstance(Components.interfaces.nsILocalFile);
1998
        var path = line.value;
1999
        if (path) {
2000
          lf.initWithPath(path);
2001
          
2002
          if (lf.exists())
2003
            gPref.readUserPrefs(lf);
2004
        }
2005
      }
2006
      while (more);
2007
      fis.close();
2008
    }
2009
  },
2010
  
2011
  ensurePreConfiguredItem: function nsExtensionManager_ensurePreConfiguredItem (aItemID, aItemType, aManifest)
2012
  {
2013
    this._ds.insertForthcomingItem(aItemID, aItemType, false);
2014
    try {
2015
        var metadataDS = getInstallManifest(aManifest);
2016
    }
2017
    catch(e) {
2018
            return;
2019
    }
2020
    this._ds.addItemMetadata(aItemID, aItemType, metadataDS, false);
2021
2022
    // Check whether the extension is installable (firefox_version fitting between
2023
    // em:MaxVersion and em:MinVersion)
2024
    var extensionID = this.canInstallItem(metadataDS);
2025
    // |extensionID| must be a GUID string, not a number - a number means failure.
2026
    if (isNaN(parseInt(extensionID))) {
2027
      // Do install the extension, meaning we register its chrome and components
2028
      if (!this._extInstaller)
2029
          this._extInstaller = new nsExtensionInstaller(this._ds);
2030
      try {
2031
          this._extInstaller.install(aItemID, false);
2032
      }
2033
      catch (e) {
2034
          // If the installation failed, we disable the extension in addition
2035
	  // to _not_ uninstalling it (which would fail anyway because it
2036
	  // would be done at launch time... as a user).
2037
	  this._ds.setItemProperty(aItemID, this._ds._emR("toBeUninstalled"),
2038
	                           null, false, aItemType);
2039
          this._ds.setItemProperty(aItemID, this._ds._emR("disabled"),
2040
                                   this._ds._emL("true"), false, aItemType);
2041
      }
2042
    } else {
2043
      // disable extensions that aren't installable
2044
      this._ds.setItemProperty(aItemID, this._ds._emR("disabled"),
2045
                              this._ds._emL("true"), false, aItemType);
2046
    }
2047
    // Force locking pre-configured items.
2048
    this._ds.lockUnlockItem(aItemID, true);
2049
  },
2050
  
2051
  checkForMismatches: function nsExtensionManager_checkForMismatches () 
2052
  {
2053
    var needsRestart = false;
2054
        
2055
    this._disableObsoleteExtensions();
2056
2057
    // Check to see if the version of the application that is being started
2058
    // now is the same one that was started last time. 
2059
    var currAppVersion = gPref.getCharPref(PREF_EM_APP_EXTENSIONS_VERSION);
2060
    try {
2061
      var lastAppVersion = gPref.getCharPref(PREF_EM_LAST_APP_VERSION);
2062
    }
2063
    catch (e) {}
2064
    if (currAppVersion != lastAppVersion) {
2065
      // Version mismatch, we're have to load the extensions datasource
2066
      // and do version checking. Time hit here doesn't matter since this 
2067
      // doesn't happen all that often.
2068
      this._ensureDS();
2069
      var currAppID = gPref.getCharPref(PREF_EM_APP_ID);
2070
      var items = this._ds.getIncompatibleItemList(currAppID, currAppVersion,
2071
                                                   nsIUpdateItem.TYPE_ADDON);
2072
      if (items.length > 0) {
2073
        for (var i = 0; i < items.length; ++i) {
2074
          // Now disable the extension so it won't hurt anything. 
2075
	  var alreadyDisabled = this._ds.getItemProperty(items[i].id, "disabled");
2076
          var itemType = getItemType(this._ds._getResourceForItem(items[i].id).Value);
2077
          if (itemType != -1 && itemType & nsIUpdateItem.TYPE_EXTENSION)
2078
            if (!alreadyDisabled) this.disableExtension(items[i].id);
2079
          else if (itemType & nsIUpdateItem.TYPE_THEME) {
2080
            if (gPref.prefHasUserValue(PREF_GENERAL_SKINS_SELECTEDSKIN))
2081
              gPref.clearUserPref(PREF_GENERAL_SKINS_SELECTEDSKIN);
2082
            if (!alreadyDisabled) this._ds.disableTheme(items[i].id);
2083
          }
2084
        }
2085
	// We want to eliminate locked extensions
2086
	newitems = [];
2087
	for (var i = 0; i < items.length; ++i) {
2088
	  if (!this._ds.getItemProperty(items[i].id, "locked"))
2089
	    newitems.push(items[i]);
2090
	}
2091
	if (newitems.length > 0) {
2092
          var updates = Components.classes["@mozilla.org/updates/update-service;1"]
2093
                                  .getService(Components.interfaces.nsIUpdateService);
2094
          updates.checkForUpdates(newitems, newitems.length, nsIUpdateItem.TYPE_ADDON, 
2095
                                  nsIUpdateService.SOURCE_EVENT_MISMATCH,
2096
                                  null);
2097
        
2098
          needsRestart = true;
2099
	}
2100
      }
2101
    }
2102
    
2103
    // Somehow the component list went away, and for that reason the new one
2104
    // generated by this function is going to result in a different compreg.
2105
    // We must force a restart.
2106
    var componentList = getFile(KEY_PROFILEDIR, [FILE_COMPONENT_MANIFEST]);
2107
    if (!componentList.exists())
2108
      needsRestart = true;
2109
    
2110
    // Now update the last app version so we don't do this checking 
2111
    // again. 
2112
    gPref.setCharPref(PREF_EM_LAST_APP_VERSION, currAppVersion);
2113
2114
    // XXXben - I am not entirely sure this is needed, since components and 
2115
    // defaults manifests are written by the disabling function. Not going to
2116
    // rock the boat now however. 
2117
    this._updateManifests();
2118
    
2119
    return needsRestart;
2120
  },
2121
  
2122
  get inSafeMode() 
2123
  {
2124
    return this._ds.safeMode;
2125
  },
2126
  
2127
  _updateManifests: function nsExtensionManager__updateManifests ()
2128
  {
2129
    // Update the components manifests with paths for compatible, enabled, 
2130
    // extensions.
2131
    try {
2132
      // Wrap this in try..catch so that if the account is restricted we don't
2133
      // completely fail here for lack of permissions to write to the bin
2134
      // dir (and cause apprunner to go into a restart loop). 
2135
      //
2136
      // This means that making changes to install-dir extensions only possible
2137
      // for people with write access to bin dir (i.e. uninstall, disable, 
2138
      // enable)
2139
      this._writeComponentManifest(false);
2140
      this._writeDefaults(false);
2141
    }
2142
    catch (e) { 
2143
//      dump("*** ExtensionManager:_updateManifests: no access privileges to application directory, skipping.\n"); 
2144
    };
2145
    this._writeComponentManifest(true);
2146
    this._writeDefaults(true);
2147
  },
2148
  
2149
  // XXXben write to temporary file then move to final when done.
2150
  _writeProfileFile: function nsExtensionManager__writeProfileFile (aFile, aGetDirFunc, aIsProfile)
2151
  {
2152
    // When an operation is performed that requires a component re-registration
2153
    // (extension enabled/disabled, installed, uninstalled), we must write the
2154
    // set of registry-relative paths of components to register to an .autoreg 
2155
    // file which lives in the profile folder. 
2156
    //
2157
    // To do this we must enumerate all installed extensions and write data 
2158
    // about all valid items to the file. 
2159
    this._ensureDS();
2160
    
2161
    var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
2162
                        .createInstance(Components.interfaces.nsIFileOutputStream);
2163
    const MODE_WRONLY   = 0x02;
2164
    const MODE_CREATE   = 0x08;
2165
    const MODE_TRUNCATE = 0x20;
2166
    fos.init(aFile, MODE_WRONLY | MODE_CREATE | MODE_TRUNCATE, 0644, 0);
2167
2168
    var extensions = this.getItemList(null, nsIUpdateItem.TYPE_EXTENSION, { });
2169
    var validExtensions = [];
2170
    for (var i = 0; i < extensions.length; ++i) {
2171
      var extension = extensions[i];
2172
    
2173
      // An extension entry is valid only if it is not disabled, not about to 
2174
      // be disabled, and not about to be uninstalled.
2175
      var toBeDisabled = this._ds.getItemProperty(extension.id, "toBeDisabled");
2176
      var toBeUninstalled = this._ds.getItemProperty(extension.id, "toBeUninstalled");
2177
      var toBeInstalled = this._ds.getItemProperty(extension.id, "toBeInstalled");
2178
      var disabled = this._ds.getItemProperty(extension.id, "disabled");
2179
      if (toBeDisabled == "true" || toBeUninstalled == "true" || 
2180
          disabled == "true" || toBeInstalled == "true")
2181
        continue;
2182
      
2183
      var isProfile = this._ds.isProfileItem(extension.id);
2184
      var sourceDir = aGetDirFunc(isProfile, extension.id);
2185
      if (sourceDir.exists() && (aIsProfile == isProfile))
2186
        validExtensions.push({ sourceDir: sourceDir, isProfile: isProfile });
2187
    }
2188
    
2189
    // Debian hook to insert defaults/syspref into defaults.ini
2190
    if ((aFile.leafName == FILE_DEFAULTS) && aIsProfile == false) {
2191
      validExtensions.push({ sourceDir: getDirNoCreate(getDirKey(false), [DIR_DEFAULTS, "syspref"]), isProfile: false });
2192
    }
2193
2194
    var lines = ["[Extra Files]\r\n",
2195
                 "Count=" + validExtensions.length + "\r\n"];
2196
    for (i = 0; i < lines.length; ++i)
2197
      fos.write(lines[i], lines[i].length);
2198
      
2199
    for (i = 0; i < validExtensions.length; ++i) {
2200
      var e = validExtensions[i];
2201
      var relativeDir = getDir(e.isProfile ? KEY_PROFILEDIR : KEY_APPDIR, []);
2202
      var lf = e.sourceDir.QueryInterface(Components.interfaces.nsILocalFile);
2203
      var relDesc = lf.getRelativeDescriptor(relativeDir);
2204
      var line = "File" + i + "=" + relDesc + "\r\n";
2205
      fos.write(line, line.length);
2206
    }
2207
    fos.close();
2208
  },
2209
  
2210
  _getComponentsDir: function nsExtensionManager__getComponentsDir (aIsProfile, aExtensionID)
2211
  {
2212
    return getDirNoCreate(getDirKey(aIsProfile), 
2213
                          [DIR_EXTENSIONS, aExtensionID, DIR_COMPONENTS]);
2214
  },
2215
 
2216
  _getPreferencesDir: function nsExtensionManager__getPreferencesDir (aIsProfile, aExtensionID)
2217
  {
2218
    return getDirNoCreate(getDirKey(aIsProfile), 
2219
                          [DIR_EXTENSIONS, aExtensionID, 
2220
                           DIR_DEFAULTS, DIR_DEFAULTS_PREFS]);
2221
  },
2222
2223
  _writeComponentManifest: function nsExtensionManager__writeComponentManifest (aIsProfile)
2224
  {
2225
    var manifest = aIsProfile ? getFile(KEY_PROFILEDIR, [FILE_COMPONENT_MANIFEST]) : 
2226
                                getFile(KEY_APPDIR, [FILE_COMPONENT_MANIFEST]);
2227
    this._writeProfileFile(manifest, this._getComponentsDir, aIsProfile);
2228
2229
    // Now refresh the compatibility manifest.
2230
    this._writeCompatibilityManifest(true);
2231
  },
2232
  
2233
  _writeCompatibilityManifest: function nsExtensionManager__writeCompatibilityManifest (aComponentListUpdated)
2234
  {
2235
    var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
2236
                        .createInstance(Components.interfaces.nsIFileOutputStream);
2237
    const MODE_WRONLY   = 0x02;
2238
    const MODE_CREATE   = 0x08;
2239
    const MODE_TRUNCATE = 0x20;
2240
2241
    // The compat file only lives in the Profile dir because we make the 
2242
    // assumption that you can never have extensions prior to profile
2243
    // startup.
2244
    var compat = getFile(KEY_PROFILEDIR, [FILE_COMPAT_MANIFEST]);
2245
    fos.init(compat, MODE_WRONLY | MODE_CREATE | MODE_TRUNCATE, 0644, 0);
2246
2247
    var currAppBuildID = gPref.getCharPref(PREF_EM_APP_BUILDID);
2248
2249
    var val = aComponentListUpdated ? 1 : 0;
2250
    var lines = ["[Compatibility]\r\n",
2251
                 "Build ID=" + currAppBuildID + "\r\n",
2252
                 "Components List Changed=" + val + "\r\n"];
2253
    for (var i = 0; i < lines.length; ++i)
2254
      fos.write(lines[i], lines[i].length);
2255
2256
    fos.close();
2257
  },
2258
  
2259
  _writeDefaults: function nsExtensionManager__writeDefaults (aIsProfile)
2260
  {
2261
    var manifest = aIsProfile ? getFile(KEY_PROFILEDIR, [FILE_DEFAULTS]) : 
2262
                                getFile(KEY_APPDIR, [FILE_DEFAULTS]);
2263
    this._writeProfileFile(manifest, this._getPreferencesDir, aIsProfile);
2264
  },
2265
  
2266
  _cleanDirs: function nsExtensionManager__cleanDirs ()
2267
  {
2268
    var keys = [KEY_PROFILEDIR, KEY_APPDIR];
2269
    for (var i = 0; i < keys.length; ++i) {
2270
      var extensions = getDir(keys[i], [DIR_EXTENSIONS]);
2271
      var entries = extensions.directoryEntries;
2272
      while (entries.hasMoreElements()) {
2273
        var entry = entries.getNext().QueryInterface(Components.interfaces.nsIFile);
2274
        if (entry.isDirectory() && !entry.directoryEntries.hasMoreElements()) {
2275
          try {
2276
            entry.remove(false);
2277
          }
2278
          catch (e) { }
2279
        }
2280
      }
2281
    }
2282
  },
2283
  
2284
  /////////////////////////////////////////////////////////////////////////////  
2285
  // nsIExtensionManager
2286
  installExtension: function nsExtensionManager_installExtension (aXPIFile, aFlags)
2287
  {
2288
    // Since we're installing a "new type" extension, we assume a file layout
2289
    // within the XPI like so:
2290
    // foo.xpi/
2291
    //         extension.rdf
2292
    //         chrome/
2293
    //         components/ 
2294
    //         defaults/
2295
    //                  prefs/
2296
    var installProfile = aFlags & nsIExtensionManager.FLAG_INSTALL_PROFILE;
2297
2298
    var tempDir = getDir(getDirKey(installProfile), [DIR_EXTENSIONS, DIR_TEMP]);
2299
    var fileName = getRandomFileName("temp", "xpi");
2300
    aXPIFile.copyTo(tempDir, fileName);
2301
    var xpiFile = tempDir.clone();
2302
    xpiFile.append(fileName);
2303
2304
    // if the source file was read-only, fix permissions
2305
    if (!xpiFile.isWritable()) {
2306
      xpiFile.permissions = 0644;
2307
    }
2308
2309
    var zipReader = Components.classes["@mozilla.org/libjar/zip-reader;1"]
2310
                              .createInstance(Components.interfaces.nsIZipReader);
2311
    zipReader.init(xpiFile);
2312
    zipReader.open();
2313
    
2314
    var tempManifest = getFile(getDirKey(installProfile),
2315
                               [DIR_EXTENSIONS, DIR_TEMP, getRandomFileName("install", "rdf")]);
2316
    if (!tempManifest.exists())
2317
      tempManifest.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
2318
    zipReader.extract(FILE_INSTALL_MANIFEST, tempManifest);
2319
    
2320
    var extensionID = this.installExtensionInternal(xpiFile, tempManifest, installProfile);
2321
    switch (extensionID) {
2322
    case ERROR_EXTENSION_IS_THEME:
2323
      this.installTheme(aXPIFile, aFlags);
2324
      break;
2325
    case ERROR_INVALID_VERSION:
2326
    case ERROR_PHONED_HOME:
2327
      break;
2328
    default:
2329
      // Then we stage the extension's XPI into a temporary directory so we 
2330
      // can extract them after the next restart. 
2331
      this._stageExtensionXPI(zipReader, extensionID, installProfile);
2332
2333
      this._writeComponentManifest(installProfile);
2334
    }
2335
    
2336
    zipReader.close();
2337
    tempManifest.remove(false);
2338
    
2339
    if (extensionID != ERROR_PHONED_HOME)
2340
      xpiFile.remove(false);
2341
  },
2342
  
2343
  installExtensionInternal: function nsExtensionManager_installExtensionInternal (aXPIFile, aManifest, aIsProfile)
2344
  {
2345
    var ds = getInstallManifest(aManifest);
2346
    if (!ds) return;
2347
    
2348
    // XXXben - this is a hack until we properly fix xpinstall to be able to install
2349
    //          different chrome types from trusted script. At the moment, when we
2350
    //          call initManagerFromChrome, we can only install extensions, since
2351
    //          the code path that installs themes is not utilized. To minimize the
2352
    //          level of changes happening at the lower level in xpinstall at this
2353
    //          point I am inserting this hack which checks for a theme-only property
2354
    //          in the install manifest.
2355
    var manifestRoot = gRDF.GetResource("urn:mozilla:install-manifest");
2356
    var internalName = gRDF.GetResource(EM_NS("internalName"));
2357
    if (stringData(ds.GetTarget(manifestRoot, internalName, true)) != "--")
2358
      return ERROR_EXTENSION_IS_THEME;
2359
    
2360
    // We do a basic version check first just to make sure we somehow weren't 
2361
    // tricked into installing an incompatible extension...
2362
    this._ensureDS();
2363
    var extensionID = this.canInstallItem(ds);
2364
    // |extensionID| must be a GUID string, not a number - a number means failure.
2365
    if (isNaN(parseInt(extensionID)))
2366
      this._configureForthcomingItem(ds, extensionID, aIsProfile);
2367
    else if (extensionID == 0) {
2368
      var io = new this.IncompatibleObserver(this);
2369
      var isChecking = io.checkForUpdates(ds, nsIUpdateItem.TYPE_EXTENSION,
2370
                                          aXPIFile, aIsProfile);
2371
      if (!isChecking)
2372
        showIncompatibleError(ds);
2373
      else {
2374
        extensionID = ERROR_PHONED_HOME; // caller uses this to distinguish 
2375
                                         // phone-home attempt.
2376
      }
2377
    }
2378
    
2379
    return extensionID;
2380
  },
2381
  
2382
  IncompatibleObserver: function nsExtensionManager_IncompatibleObserver (aEM) 
2383
  {
2384
    this._item = null;
2385
    this._em = aEM;
2386
    this._ds = null;
2387
    this._xpi = null;
2388
    this._extensionID = 0;
2389
    this._isProfile = true;
2390
    
2391
    this.checkForUpdates = function nsExtensionManager__iOcheckForUpdates (aDataSource, aType, 
2392
                                                                           aXPIFile, aIsProfile)
2393
    {
2394
      // Construct a nsIUpdateItem for this extension...
2395
      var item = this._em._getItemForIncompatibleID(aDataSource, aType);
2396
      if (item) {
2397
        this._item      = item;
2398
        this._ds        = aDataSource;
2399
        this._xpi       = aXPIFile;
2400
        this._isProfile = true;
2401
        
2402
        gOS.addObserver(this, "Update:Extension:Started", false);
2403
        gOS.addObserver(this, "Update:Extension:Item-Ended", false);
2404
        gOS.addObserver(this, "Update:Extension:Item-Error", false);
2405
        gOS.addObserver(this, "Update:Extension:Ended", false);
2406
2407
        this._em.update([item], 1, true);
2408
        
2409
        return true;
2410
      }
2411
      return false;
2412
    }
2413
    
2414
    this.observe = function nsExtensionManager__iOobserve (aSubject, aTopic, aData)
2415
    {
2416
      switch (aTopic) {
2417
      case "Update:Extension:Started":
2418
        break;
2419
      case "Update:Extension:Item-Ended":
2420
        if (aSubject) {
2421
          var item = aSubject.QueryInterface(Components.interfaces.nsIUpdateItem);
2422
          this._em._ds.setTargetApplicationInfo(item.id, 
2423
                                                item.minAppVersion,
2424
                                                item.maxAppVersion, 
2425
                                                this._ds, 
2426
                                                this._item.type);
2427
          this._extensionID = this._em.canInstallItem(this._ds);
2428
        }
2429
        break;
2430
      case "Update:Extension:Item-Error":
2431
        break;
2432
      case "Update:Extension:Ended":
2433
        gOS.removeObserver(this, "Update:Extension:Started");
2434
        gOS.removeObserver(this, "Update:Extension:Item-Ended");
2435
        gOS.removeObserver(this, "Update:Extension:Item-Error");
2436
        gOS.removeObserver(this, "Update:Extension:Ended");
2437
        
2438
        if (isNaN(this._extensionID)) {
2439
          var zipReader = Components.classes["@mozilla.org/libjar/zip-reader;1"]
2440
                                    .createInstance(Components.interfaces.nsIZipReader);
2441
          zipReader.init(this._xpi);
2442
          zipReader.open();
2443
2444
          // Add the item after all
2445
          this._em._configureForthcomingItem(this._ds, this._extensionID, 
2446
                                             this._isProfile);
2447
          this._em._stageExtensionXPI(zipReader, this._extensionID, this._isProfile);
2448
          this._em._writeComponentManifest(this._isProfile);
2449
          
2450
          zipReader.close();
2451
        }
2452
        else 
2453
          showIncompatibleError(this._ds);
2454
        
2455
        // Now really delete the temporary XPI file
2456
        this._xpi.remove(false);
2457
        break;
2458
      }
2459
    }
2460
  },
2461
  
2462
  _configureForthcomingItem: function nsExtensionManager__configureForthcomingItem (aDataSource, 
2463
                                                                                    aExtensionID, 
2464
                                                                                    aIsProfile)
2465
  {
2466
    // Clear any "disabled" flags that may have been set by the mismatch 
2467
    // checking code at startup.
2468
    var props = { toBeDisabled  : null,
2469
                  disabled      : null,
2470
                  toBeInstalled : this._ds._emL("true"),
2471
                  name          : this.getManifestProperty(aDataSource, "name"),
2472
                  version       : this.getManifestProperty(aDataSource, "version") };
2473
    for (var p in props) {
2474
      this._ds.setItemProperty(aExtensionID, this._ds._emR(p),
2475
                               props[p], aIsProfile,
2476
                               nsIUpdateItem.TYPE_EXTENSION);
2477
    }
2478
2479
    // Insert it into the child list NOW rather than later because:
2480
    // - extensions installed using the command line need to be a member
2481
    //   of a container during the install phase for the code to be able
2482
    //   to identify profile vs. global
2483
    // - extensions installed through the UI should show some kind of
2484
    //   feedback to indicate their presence is forthcoming (i.e. they
2485
    //   will be available after a restart).
2486
    this._ds.insertForthcomingItem(aExtensionID, nsIUpdateItem.TYPE_EXTENSION, 
2487
                                   aIsProfile);
2488
  },
2489
  
2490
  _getItemForIncompatibleID: function nsExtensionManager__getItemForID (aDataSource, aType)
2491
  {
2492
    var newItem = null;
2493
    var id, version, targetAppInfo, name, updateURL;
2494
    var manifestRoot = gRDF.GetResource("urn:mozilla:install-manifest");
2495
    try {
2496
      function getProperty (aDataSource, aSourceResource, aProperty)
2497
      {
2498
        var rv;
2499
        try {
2500
          var property = gRDF.GetResource(EM_NS(aProperty));
2501
          rv = stringData(aDataSource.GetTarget(aSourceResource, property, true));
2502
          if (rv == "--")
2503
            throw Components.results.NS_ERROR_FAILURE;
2504
        }
2505
        catch (e) { }
2506
        return rv;
2507
      }
2508
      
2509
      var root = gRDF.GetResource("urn:mozilla:install-manifest");
2510
      id            = getProperty(aDataSource, root, "id");
2511
      version       = getProperty(aDataSource, root, "version");
2512
      targetAppInfo = this._ds.getTargetApplicationInfo(id, aDataSource, aType);
2513
      name          = getProperty(aDataSource, root, "name");
2514
      updateURL     = getProperty(aDataSource, root, "updateURL");
2515
      if (updateURL == "--")
2516
        updateURL = "";
2517
      
2518
      newItem = Components.classes["@mozilla.org/updates/item;1"]
2519
                          .createInstance(Components.interfaces.nsIUpdateItem);
2520
      newItem.init(id, version, targetAppInfo.minVersion, 
2521
                   targetAppInfo.maxVersion,
2522
                   name, -1, "", "", updateURL, aType);
2523
    }
2524
    catch (e) {
2525
      return null;
2526
    }
2527
    return newItem;
2528
  },
2529
  
2530
  canInstallItem: function nsExtensionManager_canInstallItem (aDataSource)
2531
  {
2532
    var manifestRoot = gRDF.GetResource("urn:mozilla:install-manifest");
2533
    // First make sure the item has a valid "version" property. 
2534
    var version = gRDF.GetResource(EM_NS("version"));
2535
    var versionLiteral = stringData(aDataSource.GetTarget(manifestRoot, version, true));
2536
    if (!getVersionChecker().isValidVersion(versionLiteral)) {
2537
      var name = gRDF.GetResource(EM_NS("name"));
2538
      var nameLiteral = stringData(aDataSource.GetTarget(manifestRoot, name, true));
2539
      showInvalidVersionError(nameLiteral, versionLiteral);
2540
      return ERROR_INVALID_VERSION;
2541
    }
2542
        
2543
    // Check the target application range specified by the extension metadata.
2544
    if (this._ds.isCompatible(aDataSource, manifestRoot)) {
2545
      var id = gRDF.GetResource(EM_NS("id"));
2546
      var idLiteral = aDataSource.GetTarget(manifestRoot, id, true);
2547
      return idLiteral.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
2548
    }
2549
    return 0;
2550
  },
2551
  
2552
  getManifestProperty: function nsExtensionManager_getManifestProperty (aDataSource, aProperty)
2553
  {
2554
    var manifestRoot = gRDF.GetResource("urn:mozilla:install-manifest");
2555
    var arc = gRDF.GetResource(EM_NS(aProperty));
2556
    return aDataSource.GetTarget(manifestRoot, arc, true);
2557
  },
2558
  
2559
  _stageExtensionXPI: function nsExtensionManager__stageExtensionXPI (aZipReader, aExtensionID, aInstallProfile)
2560
  {
2561
    // Get the staging dir
2562
    var dir = getDir(getDirKey(aInstallProfile),
2563
                     [DIR_EXTENSIONS, DIR_TEMP, aExtensionID]);
2564
    var extensionFileName = aExtensionID + ".xpi";
2565
    var extensionFile = dir.clone();
2566
    extensionFile.append(extensionFileName);
2567
    if (extensionFile.exists())
2568
      extensionFile.remove(false);
2569
    aZipReader.file.copyTo(dir, extensionFileName);
2570
2571
    // if the source file was readonly, fix the permissions
2572
    if (!extensionFile.isWritable()) {
2573
      extensionFile.permissions = 0644;
2574
    }
2575
  },
2576
  
2577
  // This function is called on the next startup 
2578
  _finalizeInstall: function nsExtensionManager__finalizeInstall (aExtensionID)
2579
  {
2580
    var isProfile = this._ds.isProfileItem(aExtensionID);
2581
    if (aExtensionID == 0 || aExtensionID == -1) {
2582
      this._ds.removeCorruptItem(aExtensionID, 
2583
                                 nsIUpdateItem.TYPE_EXTENSION, 
2584
                                 isProfile);
2585
      return;
2586
    }
2587
    
2588
    if (!this._extInstaller)
2589
      this._extInstaller = new nsExtensionInstaller(this._ds);
2590
      
2591
    this._extInstaller.install(aExtensionID, isProfile);
2592
    
2593
    // Update the Components Manifest
2594
    this._writeComponentManifest(isProfile);
2595
    
2596
    // Update the Defaults Manifest
2597
    this._writeDefaults(isProfile);
2598
  },
2599
  
2600
  _finalizeEnableDisable: function nsExtensionManager__finalizeEnableDisable (aExtensionID, aDisable)
2601
  {
2602
    if (!this._extEnabler)
2603
      this._extEnabler = new nsExtensionEnabler(this._ds);
2604
      
2605
    var isProfile = this._ds.isProfileItem(aExtensionID);
2606
    this._extEnabler.enable(aExtensionID, true, aDisable);
2607
2608
    // clear temporary flags
2609
    this._ds.setItemProperty(aExtensionID, 
2610
                             this._ds._emR("toBeEnabled"),
2611
                             null, true,
2612
                             nsIUpdateItem.TYPE_EXTENSION);
2613
    this._ds.setItemProperty(aExtensionID, 
2614
                             this._ds._emR("toBeDisabled"),
2615
                             null, true,
2616
                             nsIUpdateItem.TYPE_EXTENSION);
2617
  },
2618
  
2619
  _finalizeUninstall: function nsExtensionManager__finalizeUninstall (aExtensionID)
2620
  {
2621
    if (!this._extUninstaller)
2622
      this._extUninstaller = new nsExtensionUninstaller(this._ds);
2623
    var isProfile = this._ds.isProfileItem(aExtensionID);
2624
    this._extUninstaller.uninstall(aExtensionID, isProfile);
2625
2626
    // Clean the extension resource
2627
    this._ds.removeItemMetadata(aExtensionID, nsIUpdateItem.TYPE_EXTENSION);
2628
    
2629
    // Do this LAST since inferences are made about an item based on
2630
    // what container it's in.
2631
    this._ds.removeItemFromContainer(aExtensionID, 
2632
                                     nsIUpdateItem.TYPE_EXTENSION,
2633
                                     isProfile);
2634
  },
2635
      
2636
  uninstallExtension: function nsExtensionManager_uninstallExtension (aExtensionID)
2637
  {
2638
    if (!this._ds.isDownloadItem(aExtensionID)) {
2639
      this._ds.uninstallExtension(aExtensionID);
2640
2641
      var isProfile = this._ds.isProfileItem(aExtensionID);
2642
2643
      // Update the Components Manifest
2644
      this._writeComponentManifest(isProfile);
2645
2646
      // Update the Defaults Manifest
2647
      this._writeDefaults(isProfile);
2648
    }
2649
    else {
2650
      // Bad download entry - uri is url, e.g. "http://www.foo.com/test.xpi"
2651
      // ... just remove it from the list. 
2652
      this._ds.removeCorruptDLItem(aExtensionID, nsIUpdateItem.TYPE_EXTENSION);
2653
    }
2654
  },
2655
  
2656
  enableExtension: function nsExtensionManager_enableExtension (aExtensionID)
2657
  {
2658
    this._ds.enableExtension(aExtensionID);
2659
2660
    var isProfile = this._ds.isProfileItem(aExtensionID);
2661
2662
    // Update the Components Manifest
2663
    this._writeComponentManifest(isProfile);
2664
2665
    // Update the Defaults Manifest
2666
    this._writeDefaults(isProfile);
2667
  },
2668
  
2669
  disableExtension: function nsExtensionManager_disableExtension (aExtensionID)
2670
  {
2671
    this._ds.disableExtension(aExtensionID);
2672
2673
    var isProfile = this._ds.isProfileItem(aExtensionID);
2674
2675
    // Update the Components Manifest
2676
    this._writeComponentManifest(isProfile);
2677
2678
    // Update the Defaults Manifest
2679
    this._writeDefaults(isProfile);
2680
  },
2681
  
2682
  enableTheme: function nsExtensionsDataSource_enableTheme (aThemeID)
2683
  {
2684
    this._ds.enableTheme(aThemeID);
2685
  },
2686
    
2687
  disableTheme: function nsExtensionsDataSource_disableTheme (aThemeID)
2688
  {
2689
    this._ds.disableTheme(aThemeID);
2690
  },
2691
  
2692
  update: function nsExtensionManager_update (aItems, aItemCount, aVersionUpdateOnly)
2693
  {
2694
    var appID = gPref.getCharPref(PREF_EM_APP_ID);
2695
    var appVersion = gPref.getCharPref(PREF_EM_APP_EXTENSIONS_VERSION);
2696
2697
    if (aItems.length == 0) {
2698
      var addonType = nsIUpdateItem.TYPE_ADDON;
2699
      aItems = this.getItemList(null, addonType, { });
2700
    }
2701
    var updater = new nsExtensionItemUpdater(appID, appVersion, this);
2702
    updater.checkForUpdates(aItems, aItems.length, aVersionUpdateOnly);
2703
  },
2704
  
2705
  getItemList: function nsExtensionManager_getItemList (aItemID, aType, aCountRef)
2706
  {
2707
    this._ensureDS();
2708
    return this._ds.getItemList(aItemID, aType, aCountRef);
2709
  },    
2710
2711
  /////////////////////////////////////////////////////////////////////////////  
2712
  // Themes
2713
  installTheme: function nsExtensionManager_installTheme (aJARFile, aFlags)
2714
  {
2715
    this._ensureDS();
2716
    
2717
    var isProfile = aFlags & nsIExtensionManager.FLAG_INSTALL_PROFILE;
2718
    var installer = new nsThemeInstaller(this._ds, this);
2719
    installer.install(aJARFile, isProfile);
2720
    // XPInstall selects the theme, if necessary.
2721
  },
2722
  
2723
  uninstallTheme: function nsExtensionManager_uninstallTheme (aThemeID)
2724
  {
2725
    if (!this._ds.isDownloadItem(aThemeID)) {
2726
      this._ensureDS();
2727
      this._ds.uninstallTheme(aThemeID);
2728
    }
2729
    else {
2730
      // Bad download entry - uri is url, e.g. "http://www.foo.com/test.jar"
2731
      // ... just remove it from the list. 
2732
      this._ds.removeCorruptDLItem(aThemeID, nsIUpdateItem.TYPE_THEME);
2733
    }
2734
  },
2735
  
2736
  moveTop: function nsExtensionManager_moveTop (aItemID)
2737
  {
2738
    this._ds.moveTop(aItemID);
2739
  },
2740
  
2741
  moveUp: function nsExtensionManager_moveUp (aItemID)
2742
  {
2743
    this._ds.moveUp(aItemID);
2744
  },
2745
  
2746
  moveDown: function nsExtensionManager_moveDown (aItemID)
2747
  {
2748
    this._ds.moveDown(aItemID);
2749
  },
2750
2751
  get datasource()
2752
  {
2753
    this._ensureDS();
2754
    return this._ds;
2755
  },
2756
  
2757
  /////////////////////////////////////////////////////////////////////////////    
2758
  // Downloads
2759
  _transactions: [],
2760
  _downloadCount: 0,
2761
  addDownloads: function nsExtensionManager_addDownloads (aItems, aItemCount)
2762
  {
2763
    this._downloadCount += aItemCount;
2764
    
2765
    var txn = new nsItemDownloadTransaction(this);
2766
    for (var i = 0; i < aItemCount; ++i) {
2767
      var currItem = aItems[i];
2768
      var txnID = Math.round(Math.random() * 100);
2769
      txn.addDownload(currItem.name, currItem.xpiURL, currItem.iconURL, 
2770
                      currItem.type, txnID);
2771
      this._transactions.push(txn);
2772
    }
2773
2774
    // Kick off the download process for this transaction
2775
    gOS.addObserver(this, "offline-requested", false);
2776
    gOS.addObserver(this, "quit-application-requested", false);
2777
    gOS.notifyObservers(txn, "xpinstall-progress", "open");  
2778
  },
2779
  
2780
  removeDownload: function nsExtensionManager_removeDownload (aURL, aType)
2781
  {
2782
    for (var i = 0; i < this._transactions.length; ++i) {
2783
      if (this._transactions[i].containsURL(aURL)) {
2784
        this._transactions[i].removeDownload(aURL, aType);
2785
        return;
2786
      }
2787
    } 
2788
  },
2789
  
2790
  _removeAllDownloads: function nsExtensionManager__removeAllDownloads ()
2791
  {
2792
    for (var i = 0; i < this._transactions.length; ++i)
2793
      this._transactions[i].removeAllDownloads();
2794
  },
2795
  
2796
  // The nsIXPIProgressDialog implementation in the download transaction object
2797
  // forwards notifications through these methods which we then pass on to any
2798
  // front end objects implementing nsIExtensionDownloadProgressListener that 
2799
  // are listening. We maintain the master state of download operations HERE, 
2800
  // not in the front end, because if the user closes the extension or theme 
2801
  // managers during the downloads we need to maintain state and not terminate
2802
  // the download/install process. 
2803
  onStateChange: function nsExtensionManager_onStateChange (aTransaction, aURL, aState, aValue)
2804
  {
2805
    if (!(aURL in this._progressData)) 
2806
      this._progressData[aURL] = { };
2807
    this._progressData[aURL].state = aState;
2808
    
2809
    for (var i = 0; i < this._downloadObservers.length; ++i)
2810
      this._downloadObservers[i].onStateChange(aURL, aState, aValue);
2811
2812
    const nsIXPIProgressDialog = Components.interfaces.nsIXPIProgressDialog;
2813
    switch (aState) {
2814
    case nsIXPIProgressDialog.INSTALL_DONE:
2815
      --this._downloadCount;
2816
      break;
2817
    case nsIXPIProgressDialog.DIALOG_CLOSE:
2818
      for (var i = 0; i < this._transactions.length; ++i) {
2819
        if (this._transactions[i].id == aTransaction.id) {
2820
          this._transactions.splice(i, 1);
2821
          delete aTransaction;
2822
          break;
2823
        }
2824
      }
2825
      break;
2826
    }
2827
  },
2828
  
2829
  _progressData: { },
2830
  onProgress: function nsExtensionManager_onProgress (aURL, aValue, aMaxValue)
2831
  {
2832
    for (var i = 0; i < this._downloadObservers.length; ++i)
2833
      this._downloadObservers[i].onProgress(aURL, aValue, aMaxValue);
2834
    
2835
    if (!(aURL in this._progressData)) 
2836
      this._progressData[aURL] = { };
2837
    this._progressData[aURL].progress = Math.round((aValue / aMaxValue) * 100);
2838
  },
2839
2840
  _downloadObservers: [],
2841
  addDownloadObserver: function nsExtensionManager_addDownloadObserver (aXPIProgressDialog)
2842
  {
2843
    for (var i = 0; i < this._downloadObservers.length; ++i) {
2844
      if (this._downloadObservers[i] == aXPIProgressDialog)
2845
        return i;
2846
    }
2847
    this._downloadObservers.push(aXPIProgressDialog);
2848
    return this._downloadObservers.length - 1;
2849
  },
2850
  
2851
  removeDownloadObserverAt: function nsExtensionManager_removeDownloadObserverAt (aIndex)
2852
  {
2853
    this._downloadObservers.splice(aIndex, 1);
2854
    if (this._downloadCount != 0)
2855
      this._ds.flushProgressInfo(this._progressData);
2856
  },
2857
2858
  //
2859
  _ds: null,
2860
2861
  /////////////////////////////////////////////////////////////////////////////    
2862
  // Other
2863
  
2864
  // This should NOT be called until after the window is shown! 
2865
  _ensureDS: function nsExtensionManager__ensureDS ()
2866
  {
2867
    if (!this._ds) {
2868
      dump("*** loading the extensions datasource\n");
2869
      this._ds = new nsExtensionsDataSource();
2870
      if (this._ds) {
2871
        this._ds.loadExtensions(false);
2872
        this._ds.loadExtensions(true);
2873
      }
2874
      
2875
      // Ensure any pre-configured items are initialized.
2876
      (new nsInstalledExtensionReader(this)).read();
2877
    }
2878
  },
2879
2880
  /////////////////////////////////////////////////////////////////////////////
2881
  // nsIClassInfo
2882
  getInterfaces: function nsExtensionManager_getInterfaces (aCount)
2883
  {
2884
    var interfaces = [Components.interfaces.nsIExtensionManager,
2885
                      Components.interfaces.nsIXPIProgressDialog,
2886
                      Components.interfaces.nsIObserver];
2887
    aCount.value = interfaces.length;
2888
    return interfaces;
2889
  },
2890
  
2891
  getHelperForLanguage: function nsExtensionManager_getHelperForLanguage (aLanguage)
2892
  {
2893
    return null;
2894
  },
2895
  
2896
  get contractID() 
2897
  {
2898
    return "@mozilla.org/extensions/manager;1";
2899
  },
2900
  
2901
  get classDescription()
2902
  {
2903
    return "Extension Manager";
2904
  },
2905
  
2906
  get classID() 
2907
  {
2908
    return Components.ID("{8A115FAA-7DCB-4e8f-979B-5F53472F51CF}");
2909
  },
2910
  
2911
  get implementationLanguage()
2912
  {
2913
    return Components.interfaces.nsIProgrammingLanguage.JAVASCRIPT;
2914
  },
2915
  
2916
  get flags()
2917
  {
2918
    return Components.interfaces.nsIClassInfo.SINGLETON;
2919
  },
2920
2921
  /////////////////////////////////////////////////////////////////////////////
2922
  // nsISupports
2923
  QueryInterface: function nsExtensionManager_QueryInterface (aIID) 
2924
  {
2925
    if (!aIID.equals(Components.interfaces.nsIExtensionManager) &&
2926
        !aIID.equals(Components.interfaces.nsIObserver) &&
2927
        !aIID.equals(Components.interfaces.nsISupports))
2928
      throw Components.results.NS_ERROR_NO_INTERFACE;
2929
    return this;
2930
  }
2931
};
2932
2933
///////////////////////////////////////////////////////////////////////////////
2934
//
2935
// nsItemDownloadTransaction
2936
//
2937
//   This object implements nsIXPIProgressDialog and represents a collection of
2938
//   XPI/JAR download and install operations. There is one 
2939
//   nsItemDownloadTransaction per back-end XPInstallManager object. We maintain
2940
//   a collection of separate transaction objects because it's possible to have
2941
//   multiple separate XPInstall download/install operations going on 
2942
//   simultaneously, each with its own XPInstallManager instance. For instance
2943
//   you could start downloading two extensions and then download a theme. Each
2944
//   of these operations would open the appropriate FE and have to be able to
2945
//   track each operation independently.
2946
//
2947
function nsItemDownloadTransaction(aManager)
2948
{
2949
  this._manager = aManager;
2950
  this._downloads = [];
2951
}
2952
2953
nsItemDownloadTransaction.prototype = {
2954
  _manager    : null,
2955
  _downloads  : [],
2956
  id          : -1,
2957
  
2958
  addDownload: function nsItemDownloadTransaction_addDownload (aName, aURL, aIconURL, aItemType, aID)
2959
  {
2960
    this._downloads.push({ url: aURL, type: aItemType, waiting: true });
2961
    this._manager._ds.addDownload(aName, aURL, aIconURL, aItemType);
2962
    this.id = aID;
2963
  },
2964
  
2965
  removeDownload: function nsItemDownloadTransaction_removeDownload (aURL, aItemType)
2966
  {
2967
    this._manager._ds.removeDownload(aURL, aItemType);
2968
  },
2969
  
2970
  removeAllDownloads: function nsItemDownloadTransaction_removeAllDownloads ()
2971
  {
2972
    for (var i = 0; i < this._downloads.length; ++i)
2973
      this.removeDownload(this._downloads[i].url, this._downloads[i].type);
2974
  },
2975
  
2976
  containsURL: function nsItemDownloadTransaction_containsURL (aURL)
2977
  {
2978
    for (var i = 0; i < this._downloads.length; ++i) {
2979
      if (this._downloads[i].url == aURL)
2980
        return true;
2981
    }
2982
    return false;
2983
  },
2984
2985
  /////////////////////////////////////////////////////////////////////////////  
2986
  // nsIXPIProgressDialog
2987
  onStateChange: function nsItemDownloadTransaction_onStateChange (aIndex, aState, aValue)
2988
  {
2989
    this._manager.onStateChange(this, this._downloads[aIndex].url, aState, aValue);
2990
  },
2991
  
2992
  onProgress: function nsItemDownloadTransaction_onProgress (aIndex, aValue, aMaxValue)
2993
  {
2994
    this._manager.onProgress(this._downloads[aIndex].url, aValue, aMaxValue);
2995
  },
2996
  
2997
  /////////////////////////////////////////////////////////////////////////////
2998
  // nsISupports
2999
  QueryInterface: function nsItemDownloadTransaction_QueryInterface (aIID) 
3000
  {
3001
    if (!aIID.equals(Components.interfaces.nsIXPIProgressDialog) &&
3002
        !aIID.equals(Components.interfaces.nsISupports))
3003
      throw Components.results.NS_ERROR_NO_INTERFACE;
3004
    return this;
3005
  }
3006
};
3007
3008
///////////////////////////////////////////////////////////////////////////////
3009
//
3010
// nsExtensionItemUpdater
3011
//
3012
function nsExtensionItemUpdater(aTargetAppID, aTargetAppVersion, aEM) 
3013
{
3014
  this._appID = aTargetAppID;
3015
  this._appVersion = aTargetAppVersion;
3016
  this._emDS = aEM._ds;
3017
  this._em = aEM;
3018
3019
  getVersionChecker();
3020
}
3021
3022
nsExtensionItemUpdater.prototype = {
3023
  _appID              : "",
3024
  _appVersion         : "",
3025
  _emDS               : null,
3026
  _em                 : null,
3027
  _versionUpdateOnly  : 0,
3028
  _items              : [],
3029
  
3030
  /////////////////////////////////////////////////////////////////////////////
3031
  // nsIExtensionItemUpdater
3032
  //
3033
  // When we check for updates to an item, there are two pieces of information
3034
  // that are returned - 1) info about the newest available version, if any,
3035
  // and 2) info about the currently installed version. The latter is provided
3036
  // primarily to inform the client of changes to the application compatibility 
3037
  // metadata for the current item. Depending on the situation, either 2 or 
3038
  // 1&2 may be what is required.
3039
  //
3040
  // Callers:
3041
  //  1 - nsUpdateService.js, user event
3042
  //      User clicked on the update icon to invoke an update check, 
3043
  //      user clicked on an Extension/Theme and clicked "Update". In this
3044
  //      case we want to update compatibility metadata about the installed
3045
  //      version, and look for newer versions to offer. 
3046
  //  2 - nsUpdateService.js, background event
3047
  //      Timer fired, background update is being performed. In this case
3048
  //      we also want to update compatibility metadata and look for newer
3049
  //      versions.
3050
  //  3 - Mismatch
3051
  //      User upgraded to a newer version of the app, update compatibility
3052
  //      metadata and look for newer versions.
3053
  //  4 - Install Phone Home
3054
  //      User installed an item that was deemed incompatible based only
3055
  //      on the information provided in the item's install.rdf manifest, 
3056
  //      we look ONLY for compatibility updates in this case to determine
3057
  //      whether or not the item can be installed.
3058
  //  
3059
  checkForUpdates: function nsExtensionItemUpdater_checkForUpdates (aItems, aItemCount, 
3060
                                                                    aVersionUpdateOnly) 
3061
  {
3062
    gOS.notifyObservers(null, "Update:Extension:Started", "");
3063
    this._versionUpdateOnly = aVersionUpdateOnly;
3064
    this._items = aItems;
3065
    this._responseCount = aItemCount;
3066
    
3067
    // This is the number of extensions/themes/etc that we found updates for.
3068
    this._updateCount = 0;
3069
3070
    for (var i = 0; i < aItemCount; ++i) {
3071
      var e = this._items[i];
3072
      gOS.notifyObservers(e, "Update:Extension:Item-Started", "");
3073
      (new nsRDFItemUpdater(this)).checkForUpdates(e, aVersionUpdateOnly);
3074
    }
3075
  },
3076
  
3077
  /////////////////////////////////////////////////////////////////////////////
3078
  // nsExtensionItemUpdater
3079
  _applyVersionUpdates: function nsExtensionItemUpdater__applyVersionUpdates (aLocalItem, aRemoteItem)
3080
  {
3081
    var r = this._emDS._getResourceForItem(aLocalItem.id);
3082
    if (!r) return;
3083
    var targetAppInfo = this._emDS.getTargetApplicationInfo(aLocalItem.id, this._emDS, 
3084
                                                            getItemType(r.Value));
3085
    if (gVersionChecker.compare(targetAppInfo.maxVersion, aRemoteItem.maxAppVersion) < 0) {
3086
      // Remotely specified maxVersion is newer than the maxVersion 
3087
      // for the installed Extension. Apply that change to the datasource.
3088
      this._emDS.setTargetApplicationInfo(aLocalItem.id, 
3089
                                          aRemoteItem.minAppVersion, 
3090
                                          aRemoteItem.maxAppVersion,
3091
                                          null, aLocalItem.type);
3092
      
3093
      // If we got here through |checkForMismatches|, this extension has
3094
      // already been disabled, re-enable it.
3095
      if (this._emDS.getItemProperty(aLocalItem.id, "disabled") == "true") 
3096
        this._em.enableExtension(aLocalItem.id);
3097
    }
3098
  },
3099
  
3100
  _isValidUpdate: function nsExtensionItemUpdater__isValidUpdate (aLocalItem, aRemoteItem) 
3101
  {
3102
    var appExtensionsVersion = gPref.getCharPref(PREF_EM_APP_EXTENSIONS_VERSION);
3103
3104
    // Check if the update will only run on a newer version of Firefox. 
3105
    if (aRemoteItem.minAppVersion && 
3106
        gVersionChecker.compare(appExtensionsVersion, aRemoteItem.minAppVersion) < 0) 
3107
      return false;
3108
3109
    // Check if the update will only run on an older version of Firefox. 
3110
    if (aRemoteItem.maxAppVersion && 
3111
        gVersionChecker.compare(appExtensionsVersion, aRemoteItem.maxAppVersion) > 0) 
3112
      return false;
3113
    
3114
    return true;
3115
  },
3116
  
3117
  _checkForDone: function nsExtensionItemUpdater__checkForDone ()
3118
  {
3119
    if (--this._responseCount == 0) {
3120
      if (!this._versionUpdateOnly)
3121
        gPref.setIntPref(PREF_UPDATE_COUNT, this._updateCount); 
3122
          
3123
      gOS.notifyObservers(null, "Update:Extension:Ended", "");
3124
    }
3125
  },
3126
  
3127
  /////////////////////////////////////////////////////////////////////////////
3128
  // nsISupports
3129
  QueryInterface: function nsExtensionItemUpdater_QueryInterface (aIID) 
3130
  {
3131
    if (!aIID.equals(Components.interfaces.nsIExtensionItemUpdater) &&
3132
        !aIID.equals(Components.interfaces.nsISupports))
3133
      throw Components.results.NS_ERROR_NO_INTERFACE;
3134
    return this;
3135
  }  
3136
};
3137
3138
function nsRDFItemUpdater(aUpdater)
3139
{
3140
  this._updater = aUpdater;
3141
}
3142
3143
nsRDFItemUpdater.prototype = {
3144
  _updater            : null,
3145
  _versionUpdateOnly  : 0,
3146
  _item               : null,
3147
  
3148
  checkForUpdates: function (aItem, aVersionUpdateOnly)
3149
  {
3150
    // A preference setting can disable updating for this item
3151
    // We'll also skip locked items.
3152
    try {
3153
      if (this._updater._emDS.getItemProperty(aItem.id, "locked") ||
3154
          !gPref.getBoolPref(PREF_EM_ITEM_UPDATE_ENABLED.replace(/%UUID%/, aItem.id))) {
3155
        gOS.notifyObservers(null, "Update:Extension:Item-Ended", "");
3156
        this._updater._checkForDone();
3157
        return;
3158
      }
3159
    }
3160
    catch (e) { }
3161
3162
    this._versionUpdateOnly = aVersionUpdateOnly;
3163
    this._item = aItem;
3164
  
3165
    // Look for a custom update URI: 1) supplied by a pref, 2) supplied by the
3166
    // install manifest, 3) the default configuration
3167
    try {
3168
      var dsURI = gPref.getComplexValue(PREF_EM_ITEM_UPDATE_URL.replace(/%UUID%/, aItem.id),
3169
                                        Components.interfaces.nsIPrefLocalizedString).data;
3170
    }
3171
    catch (e) { }
3172
    if (!dsURI)
3173
      dsURI = aItem.updateRDF;
3174
    if (!dsURI) {
3175
      dsURI = gPref.getComplexValue(PREF_UPDATE_DEFAULT_URL,
3176
                                    Components.interfaces.nsIPrefLocalizedString).data;
3177
    }
3178
    dsURI = dsURI.replace(/%ITEM_ID%/g, aItem.id);
3179
    dsURI = dsURI.replace(/%ITEM_VERSION%/g, aItem.version);
3180
    dsURI = dsURI.replace(/%ITEM_MAXAPPVERSION%/g, aItem.maxAppVersion);
3181
    dsURI = dsURI.replace(/%APP_ID%/g, this._updater._appID);
3182
    dsURI = dsURI.replace(/%APP_VERSION%/g, this._updater._appVersion);
3183
    dsURI = dsURI.replace(/%REQ_VERSION%/g, 1);
3184
    
3185
    // escape() does not properly encode + symbols in any embedded FVF strings.
3186
    dsURI = dsURI.replace(/\+/g, "%2B");
3187
3188
    var ds = gRDF.GetDataSource(dsURI);
3189
    var rds = ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource)
3190
    if (rds.loaded)
3191
      this.onDatasourceLoaded(ds, aItem);
3192
    else {
3193
      var sink = ds.QueryInterface(Components.interfaces.nsIRDFXMLSink);
3194
      sink.addXMLSinkObserver(this);
3195
    }
3196
  },
3197
3198
  onDatasourceLoaded: function nsExtensionItemUpdater_onDatasourceLoaded (aDatasource, aLocalItem)
3199
  {
3200
    ///////////////////////////////////////////////////////////////////////////    
3201
    // The extension update RDF file looks something like this:
3202
    //
3203
    //  <RDF:Description about="urn:mozilla:extension:{GUID}">
3204
    //    <em:updates>
3205
    //      <RDF:Seq>
3206
    //        <RDF:li resource="urn:mozilla:extension:{GUID}:4.9"/>
3207
    //        <RDF:li resource="urn:mozilla:extension:{GUID}:5.0"/>
3208
    //      </RDF:Seq>
3209
    //    </em:updates>
3210
    //    <!-- the version of the extension being offered -->
3211
    //    <em:version>5.0</em:version>
3212
    //    <em:updateLink>http://www.mysite.com/myext-50.xpi</em:updateLink>
3213
    //  </RDF:Description>
3214
    //
3215
    //  <RDF:Description about="urn:mozilla:extension:{GUID}:4.9">
3216
    //    <em:version>4.9</em:version>
3217
    //    <em:targetApplication>
3218
    //      <RDF:Description>
3219
    //        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
3220
    //        <em:minVersion>0.9</em:minVersion>
3221
    //        <em:maxVersion>1.0</em:maxVersion>
3222
    //        <em:updateLink>http://www.mysite.com/myext-49.xpi</em:updateLink>
3223
    //      </RDF:Description>
3224
    //    </em:targetApplication>
3225
    //  </RDF:Description>  
3226
    //
3227
    // If we get here because the following happened:
3228
    // 1) User was using Firefox 0.9 with ExtensionX 0.5 (minVersion 0.8, 
3229
    //    maxVersion 0.9 for Firefox)
3230
    // 2) User upgraded Firefox to 1.0
3231
    // 3) |checkForMismatches| deems ExtensionX 0.5 incompatible with this
3232
    //    new version of Firefox on the basis of its maxVersion
3233
    // 4) ** We reach this point **
3234
    //
3235
    // If the version of ExtensionX (0.5) matches that provided by the 
3236
    // server, then this is a cue that the author updated the rdf file
3237
    // or central repository to say "0.5 is ALSO compatible with Firefox 1.0,
3238
    // no changes are necessary." In this event, the local metadata for
3239
    // installed ExtensionX (0.5) is freshened with the new maxVersion, 
3240
    // and we advance to the next item WITHOUT any download/install 
3241
    // updates.
3242
  
3243
    // Parse the response RDF
3244
    function UpdateData() {}; 
3245
    UpdateData.prototype = { version: "0.0", updateLink: null, 
3246
                             minVersion: "0.0", maxVersion: "0.0" };
3247
    
3248
    var versionUpdate = new UpdateData();
3249
    var newestUpdate  = new UpdateData();
3250
3251
    var newerItem, sameItem;
3252
    
3253
    // Firefox 1.0PR+ update.rdf format
3254
    if (!this._versionUpdateOnly) {
3255
      // Look for newer versions of this item, we only do this in "normal" 
3256
      // mode... see comment by nsExtensionItemUpdater_checkForUpdates 
3257
      // about how we do this in all cases but Install Phone Home - which 
3258
      // only needs to do a version check.
3259
      this._parseV20UpdateInfo(aDatasource, aLocalItem, newestUpdate, false);
3260
      if (!newestUpdate.updateLink) {
3261
        // Firefox 0.9 update.rdf format - does not contain any metadata
3262
        // that can be used for version updates, so performed in the "all updates"
3263
        // mode only. 
3264
        this._parseV10UpdateInfo(aDatasource, aLocalItem, newestUpdate);
3265
      }
3266
3267
      newerItem = Components.classes["@mozilla.org/updates/item;1"]
3268
                            .createInstance(Components.interfaces.nsIUpdateItem);
3269
      newerItem.init(aLocalItem.id, 
3270
                     newestUpdate.version, 
3271
                     newestUpdate.minVersion, 
3272
                     newestUpdate.maxVersion, 
3273
                     aLocalItem.name, 
3274
                     -1, newestUpdate.updateLink, "", "", 
3275
                     aLocalItem.type);
3276
      if (this._updater._isValidUpdate(aLocalItem, newerItem))
3277
        ++this._updater._updateCount;
3278
      else
3279
        newerItem = null;
3280
    }
3281
    
3282
    // Now look for updated version compatibility metadata for the currently
3283
    // installed version...
3284
    this._parseV20UpdateInfo(aDatasource, aLocalItem, versionUpdate, true);
3285
3286
    var result = gVersionChecker.compare(versionUpdate.version, 
3287
                                          aLocalItem.version);
3288
    if (result == 0) {
3289
      // Local version exactly matches the "Version Update" remote version, 
3290
      // Apply changes into local datasource.
3291
      sameItem = Components.classes["@mozilla.org/updates/item;1"]
3292
                           .createInstance(Components.interfaces.nsIUpdateItem);
3293
      sameItem.init(aLocalItem.id, 
3294
                    versionUpdate.version, 
3295
                    versionUpdate.minVersion, 
3296
                    versionUpdate.maxVersion, 
3297
                    aLocalItem.name, 
3298
                    -1, "", "", "", 
3299
                    aLocalItem.type);
3300
      if (!this._versionUpdateOnly) {
3301
        if (this._updater._isValidUpdate(aLocalItem, sameItem)) {
3302
          // Install-time updates are not written to the DS because there is no
3303
          // entry yet, EM just uses the notifications to ascertain (by hand)
3304
          // whether or not there is a remote maxVersion tweak that makes the 
3305
          // item being installed compatible.
3306
          this._updater._applyVersionUpdates(aLocalItem, sameItem);
3307
        }
3308
        else 
3309
          sameItem = null;
3310
      }
3311
    }
3312
    
3313
    gOS.notifyObservers(!this._versionUpdateOnly ? newerItem : sameItem, 
3314
                        "Update:Extension:Item-Ended", "");
3315
    
3316
    // Only one call of this._updater._checkForDone is needed for RDF 
3317
    // responses, since there is only one response per item.
3318
    this._updater._checkForDone();
3319
  },
3320
3321
  // Parses Firefox 0.9 update.rdf format  
3322
  _parseV10UpdateInfo: function nsExtensionItemUpdater__parseV10UpdateInfo (aDataSource, aLocalItem, aUpdateData)
3323
  {
3324
    var extensionRes  = gRDF.GetResource(getItemPrefix(aLocalItem.type) + aLocalItem.id);
3325
    
3326
    aUpdateData.version     = this._getPropertyFromResource(aDataSource, extensionRes, 
3327
                                                            "version", aLocalItem);
3328
    aUpdateData.updateLink  = this._getPropertyFromResource(aDataSource, extensionRes, 
3329
                                                            "updateLink", aLocalItem);
3330
  },
3331
  
3332
  // Get a compulsory property from a resource. Reports an error if the 
3333
  // property was not present. 
3334
  _getPropertyFromResource: function nsExtensionItemUpdater__getPropertyFromResource (aDataSource,
3335
                                                                                      aSourceResource, 
3336
                                                                                      aProperty, 
3337
                                                                                      aLocalItem)
3338
  {
3339
    var rv;
3340
    try {
3341
      var property = gRDF.GetResource(EM_NS(aProperty));
3342
      rv = stringData(aDataSource.GetTarget(aSourceResource, property, true));
3343
      if (rv == "--")
3344
        throw Components.results.NS_ERROR_FAILURE;
3345
    }
3346
    catch (e) { 
3347
      // XXXben show console message "aProperty" not found on aSourceResource. 
3348
      return null;
3349
    }
3350
    return rv;
3351
  },
3352
  
3353
  // Parses Firefox 1.0RC1+ update.rdf format
3354
  _parseV20UpdateInfo: function nsExtensionItemUpdater__parseV20UpdateInfo (aDataSource, 
3355
                                                                            aLocalItem, 
3356
                                                                            aUpdateData, 
3357
                                                                            aVersionUpdatesOnly)
3358
  {
3359
    var extensionRes  = gRDF.GetResource(getItemPrefix(aLocalItem.type) + aLocalItem.id);
3360
3361
    var updatesArc = gRDF.GetResource(EM_NS("updates"));
3362
    var updates = aDataSource.GetTarget(extensionRes, updatesArc, true);
3363
    
3364
    try {
3365
      updates = updates.QueryInterface(Components.interfaces.nsIRDFResource);
3366
    }
3367
    catch (e) { return; }
3368
    
3369
    var cu = Components.classes["@mozilla.org/rdf/container-utils;1"]
3370
                       .getService(Components.interfaces.nsIRDFContainerUtils);
3371
    if (cu.IsContainer(aDataSource, updates)) {
3372
      var c = Components.classes["@mozilla.org/rdf/container;1"]
3373
                        .getService(Components.interfaces.nsIRDFContainer);
3374
      c.Init(aDataSource, updates);
3375
3376
      // In "all update types" mode, we look for newer versions, starting with the 
3377
      // current installed version.
3378
      if (!aVersionUpdatesOnly) 
3379
        aUpdateData.version = aLocalItem.version;
3380
3381
      var versions = c.GetElements();
3382
      while (versions.hasMoreElements()) {
3383
        // There are two different methodologies for collecting version 
3384
        // information depending on whether or not we've bene invoked in 
3385
        // "version updates only" mode or "version+newest" mode. 
3386
        var version = versions.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3387
        this._parseV20Update(aDataSource, version, aLocalItem, aUpdateData, aVersionUpdatesOnly);
3388
        if (aVersionUpdatesOnly && aUpdateData.updateLink)
3389
          break;
3390
      }
3391
    }
3392
  },
3393
  
3394
  _parseV20Update: function nsExtensionItemUpdater__parseV20Update (aDataSource,
3395
                                                                    aUpdateResource,
3396
                                                                    aLocalItem,
3397
                                                                    aUpdateData,
3398
                                                                    aVersionUpdatesOnly)
3399
  {
3400
    var version = this._getPropertyFromResource(aDataSource, aUpdateResource, 
3401
                                                "version", aLocalItem);
3402
    var taArc = gRDF.GetResource(EM_NS("targetApplication"));
3403
    var targetApps = aDataSource.GetTargets(aUpdateResource, taArc, true);
3404
    while (targetApps.hasMoreElements()) {
3405
      var targetApp = targetApps.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3406
      var id = this._getPropertyFromResource(aDataSource, targetApp, "id", aLocalItem);
3407
      if (id != this._updater._appID)
3408
        continue;
3409
      
3410
      var result = gVersionChecker.compare(version, aLocalItem.version);
3411
      if (aVersionUpdatesOnly ? result == 0 : result > 0) {
3412
        aUpdateData.version = version;
3413
        aUpdateData.updateLink = this._getPropertyFromResource(aDataSource, targetApp, "updateLink", aLocalItem);
3414
        aUpdateData.minVersion = this._getPropertyFromResource(aDataSource, targetApp, "minVersion", aLocalItem);
3415
        aUpdateData.maxVersion = this._getPropertyFromResource(aDataSource, targetApp, "maxVersion", aLocalItem);
3416
      }
3417
    }
3418
  },
3419
  
3420
  onDatasourceError: function nsExtensionItemUpdater_onDatasourceError (aItem, aError)
3421
  {
3422
    gOS.notifyObservers(aItem, "Update:Extension:Item-Error", aError);
3423
    this._updater._checkForDone();
3424
  },
3425
3426
  /////////////////////////////////////////////////////////////////////////////
3427
  // nsIRDFXMLSinkObserver
3428
  onBeginLoad: function(aSink)
3429
  {
3430
  },
3431
  onInterrupt: function(aSink)
3432
  {
3433
  },
3434
  onResume: function(aSink)
3435
  {
3436
  },
3437
  
3438
  onEndLoad: function(aSink)
3439
  {
3440
    try {
3441
      aSink.removeXMLSinkObserver(this);
3442
      
3443
      var ds = aSink.QueryInterface(Components.interfaces.nsIRDFDataSource);
3444
      this.onDatasourceLoaded(ds, this._item);
3445
    }
3446
    catch (e) { }
3447
  },
3448
  
3449
  onError: function(aSink, aStatus, aErrorMsg)
3450
  {
3451
    try {
3452
      aSink.removeXMLSinkObserver(this);
3453
      
3454
      this.onDatasourceError(this._item, aStatus.toString());
3455
    }
3456
    catch (e) { }
3457
  }
3458
};
3459
3460
///////////////////////////////////////////////////////////////////////////////
3461
//
3462
// nsExtensionsDataSource
3463
//
3464
function nsExtensionsDataSource()
3465
{
3466
}
3467
3468
nsExtensionsDataSource.prototype = {
3469
  _appExtensions      : null,
3470
  _profileExtensions  : null,  
3471
  _composite          : null,
3472
  safeMode            : false,
3473
  
3474
  _emR: function nsExtensionsDataSource__emR (aProperty) 
3475
  {
3476
    return gRDF.GetResource(EM_NS(aProperty));
3477
  },
3478
  
3479
  _emL: function nsExtensionsDataSource__emL (aLiteral)
3480
  {
3481
    return gRDF.GetLiteral(aLiteral);
3482
  },
3483
  
3484
  isCompatible: function nsExtensionsDataSource__isCompatible (aDS, aSource)
3485
  {
3486
    // XXXben - cheap hack. Our bundled items are always compatible. 
3487
    if (aSource.EqualsNode(gRDF.GetResource(getItemPrefix(nsIUpdateItem.TYPE_THEME) + "{972ce4c6-7e08-4474-a285-3208198ce6fd}")) || 
3488
        aSource.EqualsNode(gRDF.GetResource(getItemPrefix(nsIUpdateItem.TYPE_EXTENSION) + "{641d8d09-7dda-4850-8228-ac0ab65e2ac9}")))
3489
      return true;
3490
      
3491
    var appVersion = gPref.getCharPref(PREF_EM_APP_EXTENSIONS_VERSION);
3492
    var appID = gPref.getCharPref(PREF_EM_APP_ID);
3493
    
3494
    var targets = aDS.GetTargets(aSource, this._emR("targetApplication"), true);
3495
    var idRes = this._emR("id");
3496
    var minVersionRes = this._emR("minVersion");
3497
    var maxVersionRes = this._emR("maxVersion");
3498
    while (targets.hasMoreElements()) {
3499
      var targetApp = targets.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3500
      var id          = stringData(aDS.GetTarget(targetApp, idRes, true));
3501
      var minVersion  = stringData(aDS.GetTarget(targetApp, minVersionRes, true));
3502
      var maxVersion  = stringData(aDS.GetTarget(targetApp, maxVersionRes, true));
3503
3504
      if (id == appID) {
3505
        var versionChecker = getVersionChecker();
3506
        return ((versionChecker.compare(appVersion, minVersion) >= 0) &&
3507
                (versionChecker.compare(appVersion, maxVersion) <= 0));
3508
      }
3509
    }
3510
    return false;
3511
  },
3512
  
3513
  getIncompatibleItemList: function nsExtensionsDataSource_getIncompatibleItemList (aAppID, aAppVersion, aItemType)
3514
  {
3515
    var items = [];
3516
    var roots = getItemRoots(aItemType);
3517
    for (var i = 0; i < roots.length; ++i) {    
3518
      var ctr = Components.classes["@mozilla.org/rdf/container;1"]
3519
                          .createInstance(Components.interfaces.nsIRDFContainer);
3520
      ctr.Init(this._composite, gRDF.GetResource(roots[i]));
3521
      
3522
      var elements = ctr.GetElements();
3523
      while (elements.hasMoreElements()) {
3524
        var e = elements.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3525
        var itemType = getItemType(e.Value);
3526
        if (itemType != -1 && !this.isCompatible(this, e))
3527
          items.push(this.getItemForID(stripPrefix(e.Value, itemType)));
3528
      }
3529
    }
3530
    return items;
3531
  },
3532
  
3533
  getItemList: function nsExtensionsDataSource_getItemList(aItemID, aType, aCountRef)
3534
  {
3535
    var items = [];
3536
    if (aItemID)
3537
      items.push(this.getItemForID(aItemID));
3538
    else {
3539
      var roots = getItemRoots(aType);
3540
      for (var i = 0; i < roots.length; ++i) {
3541
        var ctr = Components.classes["@mozilla.org/rdf/container;1"]
3542
                            .createInstance(Components.interfaces.nsIRDFContainer);
3543
        ctr.Init(this, gRDF.GetResource(roots[i]));
3544
        
3545
        var elements = ctr.GetElements();
3546
        while (elements.hasMoreElements()) {
3547
          var e = elements.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3548
          var itemType = getItemType(e.Value);
3549
          if (itemType != -1)
3550
            items.push(this.getItemForID(stripPrefix(e.Value, itemType)));
3551
        }
3552
      }
3553
    }
3554
    aCountRef.value = items.length;
3555
    return items;
3556
  },
3557
3558
  // XXXben this function is a little weird since it returns an array of strings, not
3559
  // an array of nsIUpdateItems...  
3560
  getItemsWithFlagSet: function nsExtensionsDataSource_getItemsWithFlagSet (aFlag)
3561
  {
3562
    var items = [];
3563
    var sources = this.GetSources(this._emR(aFlag), this._emL("true"), true);
3564
    while (sources.hasMoreElements()) {
3565
      var e = sources.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3566
      
3567
      items.push(stripPrefix(e.Value, getItemType(e.Value)));
3568
    }
3569
    return items;
3570
  },
3571
  
3572
  getItemsWithFlagUnset: function nsExtensionsDataSource_getItemsWithFlagUnset (aFlag, aItemType)
3573
  {
3574
    var items = [];
3575
    
3576
    var roots = getItemRoots(aItemType);
3577
    for (var i = 0; i < roots.length; ++i) {
3578
      var ctr = Components.classes["@mozilla.org/rdf/container;1"]
3579
                          .createInstance(Components.interfaces.nsIRDFContainer);
3580
      ctr.Init(this, gRDF.GetResource(roots[i]));
3581
      
3582
      var elements = ctr.GetElements();
3583
      while (elements.hasMoreElements()) {
3584
        var e = elements.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3585
        if (getItemType(e.Value) != -1) {
3586
          var value = this.GetTarget(e, this._emR(aFlag), true);
3587
          if (!value)
3588
            items.push(stripPrefix(e.Value, getItemType(e.Value)));
3589
        }
3590
      }
3591
    }
3592
    return items;
3593
  },
3594
  
3595
  getItemForID: function nsExtensionsDataSource_getItemForID (aItemID)
3596
  {
3597
    var item = Components.classes["@mozilla.org/updates/item;1"]
3598
                         .createInstance(Components.interfaces.nsIUpdateItem);
3599
                         
3600
    var r = this._getResourceForItem(aItemID);
3601
    if (!r)
3602
      return null;
3603
    
3604
    var targetAppInfo = this.getTargetApplicationInfo(aItemID, this, getItemType(r.Value));
3605
    item.init(aItemID, 
3606
              this.getItemProperty(aItemID, "version"), 
3607
              targetAppInfo ? targetAppInfo.minVersion : "",
3608
              targetAppInfo ? targetAppInfo.maxVersion : "",
3609
              this.getItemProperty(aItemID, "name"),
3610
              -1, 
3611
              "", /* XPI Update URL */
3612
              this.getItemProperty(aItemID, "iconURL"), 
3613
              this.getItemProperty(aItemID, "updateURL"), 
3614
              getItemType(r.Value));
3615
    return item;
3616
  },
3617
  
3618
  isProfileItem: function nsExtensionsDataSource_isProfileItem (aItemID)
3619
  {
3620
    return this.getItemProperty(aItemID, "installLocation") == "profile";
3621
  },
3622
  
3623
  _setProperty: function nsExtensionsDataSource__setProperty (aDS, aSource, aProperty, aNewValue)
3624
  {
3625
    var oldValue = aDS.GetTarget(aSource, aProperty, true);
3626
    if (oldValue) {
3627
      if (aNewValue)
3628
        aDS.Change(aSource, aProperty, oldValue, aNewValue);
3629
      else
3630
        aDS.Unassert(aSource, aProperty, oldValue);
3631
    }
3632
    else if (aNewValue)
3633
      aDS.Assert(aSource, aProperty, aNewValue, true);
3634
  },
3635
  
3636
  // Given a GUID, get the RDF resource representing the item. This
3637
  // will be of the form urn:mozilla:extension:{GUID} or 
3638
  // urn:mozilla:theme:{GUID} depending on the item type. 
3639
  _getResourceForItem: function nsExtensionsDataSource__getResourceForItem(aItemID)
3640
  {
3641
    var res = null;
3642
    
3643
    // We can try and infer the resource URI from presence in one of the 
3644
    // item lists.
3645
    var rdfc = Components.classes["@mozilla.org/rdf/container;1"]
3646
                         .createInstance(Components.interfaces.nsIRDFContainer);
3647
    rdfc.Init(this, gRDF.GetResource(ROOT_EXTENSION));
3648
    res = gRDF.GetResource(PREFIX_EXTENSION + aItemID);
3649
    if (rdfc.IndexOf(res) != -1)
3650
      return res;
3651
    
3652
    rdfc.Init(this, gRDF.GetResource(ROOT_THEME));
3653
    res = gRDF.GetResource(PREFIX_THEME + aItemID);
3654
    if (rdfc.IndexOf(res) != -1)
3655
      return res;
3656
3657
    return null;
3658
  },
3659
3660
  getTargetApplicationInfo: function nsExtensionsDataSource_getTargetApplicationInfo (aExtensionID, aDataSource, aType)
3661
  {
3662
    var internalName = this.getItemProperty(aExtensionID, "internalName");
3663
    // The default theme is always compatible. 
3664
    if (internalName == KEY_DEFAULT_THEME) {
3665
      var ver = gPref.getCharPref(PREF_EM_APP_EXTENSIONS_VERSION);
3666
      return { minVersion: ver, maxVersion: ver };
3667
    }
3668
3669
    var appID = gPref.getCharPref(PREF_EM_APP_ID);
3670
    var r = gRDF.GetResource(getItemPrefix(aType) + aExtensionID);
3671
    var targetApps = aDataSource.GetTargets(r, this._emR("targetApplication"), true);
3672
    if (!targetApps.hasMoreElements()) {
3673
      r = gRDF.GetResource("urn:mozilla:install-manifest"); 
3674
      targetApps = aDataSource.GetTargets(r, this._emR("targetApplication"), true); 
3675
    }
3676
    while (targetApps.hasMoreElements()) {
3677
      var targetApp = targetApps.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3678
      if (targetApp) {
3679
        try {
3680
          var id = stringData(aDataSource.GetTarget(targetApp, this._emR("id"), true));
3681
          if (id != appID) // Different target application
3682
            continue;
3683
          
3684
          return { minVersion: stringData(aDataSource.GetTarget(targetApp, this._emR("minVersion"), true)),
3685
                   maxVersion: stringData(aDataSource.GetTarget(targetApp, this._emR("maxVersion"), true)) };
3686
        }
3687
        catch (e) { 
3688
          continue;
3689
        }
3690
      }
3691
    }
3692
    return null;
3693
  },
3694
  
3695
  setTargetApplicationInfo: function nsExtensionsDataSource_setTargetApplicationInfo(aExtensionID, aMinVersion, 
3696
                                                                                     aMaxVersion, aDataSource, aType)
3697
  {
3698
    var targetDataSource = aDataSource;
3699
    if (!targetDataSource)
3700
      targetDataSource = this;
3701
      
3702
    var appID = gPref.getCharPref(PREF_EM_APP_ID);
3703
    var r = gRDF.GetResource(getItemPrefix(aType) + aExtensionID);
3704
    var targetApps = targetDataSource.GetTargets(r, this._emR("targetApplication"), true);
3705
    if (!targetApps.hasMoreElements()) {
3706
      r = gRDF.GetResource("urn:mozilla:install-manifest"); 
3707
      targetApps = aDataSource.GetTargets(r, this._emR("targetApplication"), true); 
3708
    }
3709
    while (targetApps.hasMoreElements()) {
3710
      var targetApp = targetApps.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3711
      if (targetApp) {
3712
        var id = stringData(targetDataSource.GetTarget(targetApp, this._emR("id"), true));
3713
        if (id != appID) // Different target application
3714
          continue;
3715
        
3716
        if (!aDataSource) {
3717
          var isProfile = this.isProfileItem(aExtensionID);
3718
          targetDataSource = isProfile ? this._profileExtensions : this._appExtensions;
3719
        }
3720
        this._setProperty(targetDataSource, targetApp, this._emR("minVersion"), this._emL(aMinVersion));
3721
        this._setProperty(targetDataSource, targetApp, this._emR("maxVersion"), this._emL(aMaxVersion));
3722
        
3723
        if (!aDataSource)
3724
          this._flush(isProfile);
3725
      }
3726
    }
3727
  },
3728
  
3729
  getItemProperty: function nsExtensionsDataSource_getItemProperty (aItemID, aProperty)
3730
  { 
3731
    var item = this._getResourceForItem(aItemID);
3732
    if (!item) {
3733
      dump("*** getItemProperty failing for lack of an item. This means getResourceForItem \
3734
                failed to locate a resource for aItemID (item ID = " + aItemID + ", property = " + aProperty + ")\n");
3735
    }
3736
    else 
3737
      return this._getItemProperty(item, aProperty);
3738
    return undefined;
3739
  },
3740
  
3741
  _getItemProperty: function nsExtensionsDataSource__getItemProperty (aItemResource, aProperty)
3742
  {
3743
    try {
3744
      return this.GetTarget(aItemResource, this._emR(aProperty), true).QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
3745
    }
3746
    catch (e) {}
3747
    return "";
3748
  },
3749
  
3750
  setItemProperty: function nsExtensionsDataSource_setItemProperty(
3751
    aItemID, aPropertyArc, aPropertyValue, aIsProfile, aItemType)
3752
  {
3753
    var item = gRDF.GetResource(getItemPrefix(aItemType) + aItemID);
3754
    var ds = aIsProfile ? this._profileExtensions : this._appExtensions;
3755
    this._setProperty(ds, item, aPropertyArc, aPropertyValue);
3756
3757
    this._flush(aIsProfile);  
3758
  },
3759
3760
  insertForthcomingItem: function nsExtensionsDataSource_insertForthcomingItem (aItemID, aItemType, aIsProfile)
3761
  {
3762
    // Get the target container and resource
3763
    var targetDS = aIsProfile ? this._profileExtensions : this._appExtensions;
3764
    var ctr = Components.classes["@mozilla.org/rdf/container;1"]
3765
                        .createInstance(Components.interfaces.nsIRDFContainer);
3766
    ctr.Init(targetDS, gRDF.GetResource(getItemRoot(aItemType)));
3767
3768
    var targetRes = gRDF.GetResource(getItemPrefix(aItemType) + aItemID);
3769
    // Don't bother adding the extension to the list if it's already there. 
3770
    // (i.e. we're upgrading)
3771
    var oldIndex = ctr.IndexOf(targetRes);
3772
    if (oldIndex == -1)
3773
      ctr.AppendElement(targetRes);
3774
3775
    this._flush(aIsProfile);
3776
  }, 
3777
3778
  removeItemFromContainer: function nsExtensionsDataSource_removeItemFromContainer(aItemID, aItemType, aIsProfile)
3779
  {
3780
    var targetDS = aIsProfile ? this._profileExtensions : this._appExtensions;
3781
    var ctr = Components.classes["@mozilla.org/rdf/container;1"]
3782
                        .createInstance(Components.interfaces.nsIRDFContainer);
3783
    ctr.Init(targetDS, gRDF.GetResource(getItemRoot(aItemType)));
3784
    
3785
    var item = gRDF.GetResource(getItemPrefix(aItemType) + aItemID);
3786
    ctr.RemoveElement(item, true);
3787
    
3788
    this._flush(aIsProfile);
3789
  },
3790
3791
  // Removes a corrupt item entry from the extension list added due to 
3792
  // buggy code in previous EM versions!  
3793
  removeCorruptItem: function nsExtensionsDataSource_removeCorruptItem (aItemID, aItemType, aIsProfile)
3794
  {
3795
    this.removeItemMetadata(aItemID, aItemType);
3796
    this.removeItemFromContainer(aItemID, aItemType, aIsProfile);
3797
  },
3798
3799
  // Removes a corrupt download entry from the list.   
3800
  removeCorruptDLItem: function nsExtensionsDataSource_removeCorruptDLItem (aItemURI, aItemType)
3801
  {
3802
    var itemResource = gRDF.GetResource(aItemURI);
3803
    var itemRoot = gRDF.GetResource(getItemRoot(aItemType));
3804
    var dses = [this._profileExtensions, this._appExtensions];
3805
    var isProfile = [true, false];
3806
    for (var i = 0; i < dses.length; ++i) {
3807
      var ctr = Components.classes["@mozilla.org/rdf/container;1"]
3808
                          .createInstance(Components.interfaces.nsIRDFContainer);
3809
      ctr.Init(dses[i], itemRoot);
3810
      if (ctr.IndexOf(itemResource) != -1) {
3811
        ctr.RemoveElement(itemResource, true);
3812
        this._cleanResource(itemResource, dses[i]);
3813
        this._flush(isProfile[i]);
3814
        break;
3815
      }
3816
    }
3817
  },
3818
  
3819
  addItemMetadata: function nsExtensionsDataSource_addItemMetadata (aItemID, aItemType, aSourceDS, aIsProfile)
3820
  {
3821
    var targetDS = aIsProfile ? this._profileExtensions : this._appExtensions;
3822
    var targetRes = gRDF.GetResource(getItemPrefix(aItemType) + aItemID);
3823
3824
    // Copy the assertions over from the source datasource. 
3825
    
3826
    // Assert properties with single values
3827
    var singleProps = ["version", "name", "description", "creator", "homepageURL", 
3828
                       "updateURL", "updateService", "optionsURL", "aboutURL", 
3829
                       "iconURL", "internalName"];
3830
3831
    // Global extensions and themes can also be locked (can't be removed or disabled).
3832
    if (!aIsProfile)
3833
      singleProps = singleProps.concat(["locked"]);
3834
    var sourceRes = gRDF.GetResource("urn:mozilla:install-manifest");
3835
    for (var i = 0; i < singleProps.length; ++i) {
3836
      var property = this._emR(singleProps[i]);
3837
      var literal = aSourceDS.GetTarget(sourceRes, property, true);
3838
      if (!literal)
3839
        continue; // extension didn't specify this property, no big deal, continue.
3840
        
3841
      var val = literal.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
3842
      
3843
      var oldValue = targetDS.GetTarget(targetRes, property, true);
3844
      if (!oldValue)
3845
        targetDS.Assert(targetRes, property, literal, true);
3846
      else
3847
        targetDS.Change(targetRes, property, oldValue, literal);
3848
    }    
3849
3850
    // Assert properties with multiple values    
3851
    var manyProps = ["contributor"];
3852
    for (var i = 0; i < singleProps.length; ++i) {
3853
      var property = this._emR(manyProps[i]);
3854
      var literals = aSourceDS.GetTargets(sourceRes, property, true);
3855
      
3856
      var oldValues = targetDS.GetTargets(targetRes, property, true);
3857
      while (oldValues.hasMoreElements()) {
3858
        var oldValue = oldValues.getNext().QueryInterface(Components.interfaces.nsIRDFNode);
3859
        targetDS.Unassert(targetRes, property, oldValue);
3860
      }
3861
      while (literals.hasMoreElements()) {
3862
        var literal = literals.getNext().QueryInterface(Components.interfaces.nsIRDFNode);
3863
        targetDS.Assert(targetRes, property, literal, true);
3864
      }
3865
    }
3866
    
3867
    // Version/Dependency Info
3868
    var versionProps = ["targetApplication", "requires"];
3869
    var idRes = this._emR("id");
3870
    var minVersionRes = this._emR("minVersion");
3871
    var maxVersionRes = this._emR("maxVersion");
3872
    for (var i = 0; i < versionProps.length; ++i) {
3873
      var property = this._emR(versionProps[i]);
3874
      var newVersionInfos = aSourceDS.GetTargets(sourceRes, property, true);
3875
      
3876
      var oldVersionInfos = targetDS.GetTargets(targetRes, property, true);
3877
      while (oldVersionInfos.hasMoreElements()) {
3878
        var oldVersionInfo = oldVersionInfos.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3879
        this._cleanResource(oldVersionInfo, targetDS);
3880
        targetDS.Unassert(targetRes, property, oldVersionInfo);
3881
      }
3882
      while (newVersionInfos.hasMoreElements()) {
3883
        var newVersionInfo = newVersionInfos.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
3884
        var anon = gRDF.GetAnonymousResource();
3885
        targetDS.Assert(anon, idRes, aSourceDS.GetTarget(newVersionInfo, idRes, true), true);
3886
        targetDS.Assert(anon, minVersionRes, aSourceDS.GetTarget(newVersionInfo, minVersionRes, true), true);
3887
        targetDS.Assert(anon, maxVersionRes, aSourceDS.GetTarget(newVersionInfo, maxVersionRes, true), true);
3888
        targetDS.Assert(targetRes, property, anon, true);
3889
      }
3890
    }
3891
    
3892
    this._flush(aIsProfile);
3893
  },
3894
  
3895
  lockUnlockItem: function nsExtensionsDataSource_lockUnlockItem (aItemID, aLocked)
3896
  {
3897
    var item = this._getResourceForItem(aItemID);
3898
    if (item) {
3899
      var val = aLocked ? this._emL("true") : this._emL("false");
3900
      this.setItemProperty(aItemID, this._emR("locked"), val, false, getItemType(item.Value));
3901
      this._flush(false);
3902
    }
3903
  },  
3904
  
3905
  enableExtension: function nsExtensionsDataSource_enableExtension (aExtensionID)
3906
  {
3907
    this.setItemProperty(aExtensionID, this._emR("toBeEnabled"), 
3908
                         this._emL("true"), true,
3909
                         nsIUpdateItem.TYPE_EXTENSION);
3910
    this.setItemProperty(aExtensionID, this._emR("toBeDisabled"), 
3911
                         null, true,
3912
                         nsIUpdateItem.TYPE_EXTENSION);
3913
    this.setItemProperty(aExtensionID, this._emR("disabled"), 
3914
                         null, true,
3915
                         nsIUpdateItem.TYPE_EXTENSION);
3916
  },
3917
  
3918
  disableExtension: function nsExtensionsDataSource_disableExtension (aExtensionID)
3919
  {
3920
    this.setItemProperty(aExtensionID, this._emR("toBeDisabled"), 
3921
                         this._emL("true"), true,
3922
                         nsIUpdateItem.TYPE_EXTENSION);
3923
    this.setItemProperty(aExtensionID, this._emR("toBeEnabled"), 
3924
                         null, true,
3925
                         nsIUpdateItem.TYPE_EXTENSION);
3926
    this.setItemProperty(aExtensionID, this._emR("disabled"), 
3927
                         this._emL("true"), true, 
3928
                         nsIUpdateItem.TYPE_EXTENSION);
3929
  },
3930
  
3931
  uninstallExtension: function nsExtensionsDataSource_uninstallExtension (aExtensionID)
3932
  {
3933
    // We have to do this check BEFORE we unhook all the metadata from this 
3934
    // extension's resource, otherwise we'll think it's a global extension.
3935
    var isProfile = this.isProfileItem(aExtensionID);
3936
    
3937
    this.setItemProperty(aExtensionID, this._emR("toBeInstalled"), 
3938
                         null, isProfile, 
3939
                         nsIUpdateItem.TYPE_EXTENSION);
3940
    this.setItemProperty(aExtensionID, this._emR("toBeUninstalled"), 
3941
                         this._emL("true"), isProfile, 
3942
                         nsIUpdateItem.TYPE_EXTENSION);
3943
    this._flush(isProfile);
3944
  },
3945
  
3946
  doneInstallingTheme: function nsExtensionsDataSource_doneInstallingTheme (aThemeID)
3947
  {
3948
    // Notify observers of a change in the iconURL property to cause the UI to
3949
    // refresh.
3950
    var theme = this._getResourceForItem(aThemeID);
3951
    var iconURLArc = this._emR("iconURL");
3952
    var iconURL = this.GetTarget(theme, iconURLArc, true);
3953
    if (theme, iconURLArc, iconURL) {
3954
      for (var i = 0; i < this._observers.length; ++i)
3955
        this._observers[i].onAssert(this, theme, iconURLArc, iconURL);
3956
    }
3957
  },
3958
  
3959
  enableTheme: function nsExtensionsDataSource_enableTheme (aThemeID)
3960
  {
3961
    this.setItemProperty(aThemeID, this._emR("disabled"), 
3962
                         null, this.isProfileItem(aThemeID), 
3963
                         nsIUpdateItem.TYPE_THEME);
3964
  },
3965
    
3966
  disableTheme: function nsExtensionsDataSource_disableTheme (aThemeID)
3967
  {
3968
    this.setItemProperty(aThemeID, this._emR("disabled"), 
3969
                         this._emL("true"), this.isProfileItem(aThemeID), 
3970
                         nsIUpdateItem.TYPE_THEME);
3971
  },
3972
  
3973
  uninstallTheme: function nsExtensionsDataSource_uninstallTheme(aThemeID)
3974
  {
3975
    // We have to do this check BEFORE we unhook all the metadata from this 
3976
    // extension's resource, otherwise we'll think it's a global extension.
3977
    var isProfile = this.isProfileItem(aThemeID);
3978
        
3979
    // Clean the extension resource
3980
    this.removeItemMetadata(aThemeID, nsIUpdateItem.TYPE_THEME);
3981
    
3982
    var uninstaller = new nsThemeUninstaller(this);
3983
    uninstaller.uninstall(aThemeID, isProfile);  
3984
    
3985
    // Do this LAST since inferences are made about an item based on
3986
    // what container it's in.
3987
    this.removeItemFromContainer(aThemeID, nsIUpdateItem.TYPE_THEME, isProfile);
3988
  },
3989
  
3990
  // Cleans the resource of all its assertionss
3991
  removeItemMetadata: function nsExtensionsDataSource_removeItemMetadata (aItemID, aItemType)
3992
  {
3993
    var item = gRDF.GetResource(getItemPrefix(aItemType) + aItemID);
3994
    var isProfile = this.isProfileItem(aItemID);
3995
    var ds = isProfile ? this._profileExtensions : this._appExtensions;
3996
    
3997
    var resources = ["targetApplication", "requires"];
3998
    for (var i = 0; i < resources.length; ++i) {
3999
      var targetApps = ds.GetTargets(item, this._emR(resources[i]), true);
4000
      while (targetApps.hasMoreElements()) {
4001
        var targetApp = targetApps.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
4002
        this._cleanResource(targetApp, ds);
4003
      }
4004
    }
4005
4006
    this._cleanResource(item, ds);
4007
  },
4008
  
4009
  _cleanResource: function nsExtensionsDataSource__cleanResource (aResource, aDS)
4010
  {
4011
    // Remove outward arcs
4012
    var arcs = aDS.ArcLabelsOut(aResource);
4013
    while (arcs.hasMoreElements()) {
4014
      var arc = arcs.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
4015
      var value = aDS.GetTarget(aResource, arc, true);
4016
      if (value)
4017
        aDS.Unassert(aResource, arc, value);
4018
    }
4019
  },
4020
  
4021
  moveTop: function nsExtensionsDataSource_moveTop (aItemID)
4022
  {
4023
    var extensions = gRDF.GetResource("urn:mozilla:extension:root");
4024
    var item = this._getResourceForItem(aItemID);
4025
    var ds = this._getTargetDSFromSource(item);
4026
    var container = Components.classes["@mozilla.org/rdf/container;1"]
4027
                              .createInstance(Components.interfaces.nsIRDFContainer);
4028
    container.Init(ds, extensions);
4029
    
4030
    var index = container.IndexOf(item);
4031
    if (index > 1) {
4032
      container.RemoveElement(item, false);
4033
      container.InsertElementAt(item, 1, true);
4034
    }
4035
    this._flush(this.isProfileItem(aItemID));
4036
  },
4037
  
4038
  moveUp: function nsExtensionsDataSource_moveUp (aItemID)
4039
  {
4040
    var extensions = gRDF.GetResource("urn:mozilla:extension:root");
4041
    var item = this._getResourceForItem(aItemID);
4042
    var ds = this._getTargetDSFromSource(item);
4043
    var container = Components.classes["@mozilla.org/rdf/container;1"]
4044
                              .createInstance(Components.interfaces.nsIRDFContainer);
4045
    container.Init(ds, extensions);
4046
    
4047
    var item = this._getResourceForItem(aItemID);
4048
    var index = container.IndexOf(item);
4049
    if (index > 1) {
4050
      container.RemoveElement(item, false);
4051
      container.InsertElementAt(item, index - 1, true);
4052
    }
4053
    this._flush(this.isProfileItem(aItemID));
4054
  },
4055
  
4056
  moveDown: function nsExtensionsDataSource_moveDown (aItemID)
4057
  {
4058
    var extensions = gRDF.GetResource("urn:mozilla:extension:root");
4059
    var item = this._getResourceForItem(aItemID);
4060
    var ds = this._getTargetDSFromSource(item);
4061
    var container = Components.classes["@mozilla.org/rdf/container;1"]
4062
                              .createInstance(Components.interfaces.nsIRDFContainer);
4063
    container.Init(ds, extensions);
4064
    
4065
    var item = this._getResourceForItem(aItemID);
4066
    var index = container.IndexOf(item);
4067
    var count = container.GetCount();
4068
    if (index < count) {
4069
      container.RemoveElement(item, true);
4070
      container.InsertElementAt(item, index + 1, true);
4071
    }
4072
    this._flush(this.isProfileItem(aItemID));
4073
  },
4074
  
4075
  isDownloadItem: function nsExtensionsDataSource_isDownloadItem (aItemID)
4076
  {
4077
    return this.getItemProperty(aItemID, "downloadURL") != "";
4078
  },
4079
4080
  addDownload: function nsExtensionsDataSource_addDownload (aName, aURL, aIconURL, aItemType)
4081
  {
4082
    var root = gRDF.GetResource(getItemRoot(aItemType));
4083
    
4084
    var res = gRDF.GetResource(aURL);
4085
    this._setProperty(this._profileExtensions, res, 
4086
                      this._emR("name"),
4087
                      gRDF.GetLiteral(aName))
4088
    this._setProperty(this._profileExtensions, res, 
4089
                      this._emR("version"),
4090
                      gRDF.GetLiteral(" "));
4091
    this._setProperty(this._profileExtensions, res, 
4092
                      this._emR("iconURL"),
4093
                      gRDF.GetLiteral(aIconURL));
4094
    this._setProperty(this._profileExtensions, res, 
4095
                      this._emR("downloadURL"),
4096
                      gRDF.GetLiteral(aURL));
4097
4098
    var ctr = Components.classes["@mozilla.org/rdf/container;1"]
4099
                        .createInstance(Components.interfaces.nsIRDFContainer);
4100
    ctr.Init(this._profileExtensions, root);
4101
    if (ctr.IndexOf(res) == -1)
4102
      ctr.InsertElementAt(res, 1, true);
4103
    
4104
    this._flush(true);
4105
  },
4106
  
4107
  removeDownload: function nsExtensionsDataSource_removeDownload (aURL, aItemType)
4108
  {
4109
    var root = gRDF.GetResource(getItemRoot(aItemType));
4110
    var res = gRDF.GetResource(aURL);
4111
    var ctr = Components.classes["@mozilla.org/rdf/container;1"]
4112
                        .createInstance(Components.interfaces.nsIRDFContainer);
4113
    ctr.Init(this._profileExtensions, root);
4114
    ctr.RemoveElement(res, true);
4115
    this._cleanResource(res, this._profileExtensions);
4116
    
4117
    this._flush(true);
4118
  },
4119
    
4120
  flushProgressInfo: function nsExtensionsDataSource_flushProgressInfo (aData)
4121
  {
4122
    for (var url in aData) {
4123
      var res = gRDF.GetResource(url);
4124
      this._setProperty(this._profileExtensions, res, 
4125
                        this._emR("state"),
4126
                        gRDF.GetIntLiteral(aData[url].state));
4127
      this._setProperty(this._profileExtensions, res, 
4128
                        this._emR("progress"),
4129
                        gRDF.GetIntLiteral(aData[url].progress));
4130
    }
4131
    this._flush(true);
4132
  },   
4133
   
4134
  loadExtensions: function nsExtensionsDataSource_loadExtensions (aProfile)
4135
  {
4136
    var extensionsFile  = getFile(getDirKey(aProfile), 
4137
                                  [DIR_EXTENSIONS, FILE_EXTENSIONS]);
4138
    ensureExtensionsFiles(aProfile);
4139
4140
    var ds = gRDF.GetDataSourceBlocking(getURLSpecFromFile(extensionsFile));
4141
    if (aProfile) {
4142
      this._profileExtensions = ds;
4143
      if (!this._composite) 
4144
        this._composite = Components.classes["@mozilla.org/rdf/datasource;1?name=composite-datasource"]
4145
                                    .createInstance(Components.interfaces.nsIRDFDataSource);
4146
      if (this._appExtensions)
4147
        this._composite.RemoveDataSource(this._appExtensions);
4148
      this._composite.AddDataSource(this._profileExtensions);
4149
      if (this._appExtensions)
4150
        this._composite.AddDataSource(this._appExtensions);  
4151
    }
4152
    else {
4153
      this._appExtensions = ds;
4154
      
4155
      if (!this._composite)
4156
        this._composite = Components.classes["@mozilla.org/rdf/datasource;1?name=composite-datasource"]
4157
                                    .createInstance(Components.interfaces.nsIRDFCompositeDataSource);
4158
      this._composite.AddDataSource(this._appExtensions);
4159
    }
4160
  },
4161
  
4162
  /////////////////////////////////////////////////////////////////////////////
4163
  // nsIRDFDataSource
4164
  get URI()
4165
  {
4166
    return "rdf:extensions";
4167
  },
4168
  
4169
  GetSource: function nsExtensionsDataSource_GetSource (aProperty, aTarget, aTruthValue)
4170
  {
4171
    return this._composite.GetSource(aProperty, aTarget, aTruthValue);
4172
  },
4173
  
4174
  GetSources: function nsExtensionsDataSource_GetSources (aProperty, aTarget, aTruthValue)
4175
  {
4176
    return this._composite.GetSources(aProperty, aTarget, aTruthValue);
4177
  },
4178
  
4179
  _getThemeJARURL: function nsExtensionsDataSource__getThemeJARURL (aSource, aFileName, aFallbackURL)
4180
  {
4181
    var id = stripPrefix(aSource.Value, nsIUpdateItem.TYPE_THEME);
4182
    var chromeDir = getDir(this.isProfileItem(id) ? KEY_PROFILEDIR : KEY_APPDIR, 
4183
                            [DIR_EXTENSIONS, id, DIR_CHROME]);
4184
4185
    var jarFile = null;
4186
    // XXXben hack for pre-configured classic.jar
4187
    if ((!chromeDir.exists() || !chromeDir.directoryEntries.hasMoreElements()) &&
4188
        aSource.EqualsNode(gRDF.GetResource("urn:mozilla:theme:{972ce4c6-7e08-4474-a285-3208198ce6fd}")))
4189
      jarFile = getFile(KEY_APPDIR, ["chrome", "classic.jar"]);
4190
    if (chromeDir.directoryEntries.hasMoreElements() || jarFile) {
4191
      if (!jarFile)
4192
        jarFile = chromeDir.directoryEntries.getNext().QueryInterface(Components.interfaces.nsIFile);
4193
4194
      if (jarFile.exists()) {
4195
        var zipReader = Components.classes["@mozilla.org/libjar/zip-reader;1"]
4196
                                  .createInstance(Components.interfaces.nsIZipReader);
4197
        zipReader.init(jarFile);
4198
        zipReader.open();
4199
        var url = aFallbackURL;
4200
        try {
4201
          zipReader.getEntry(aFileName);
4202
          url = "jar:" + getURLSpecFromFile(jarFile) + "!/" + aFileName; 
4203
        }
4204
        catch (e) { }
4205
        zipReader.close();
4206
        
4207
        if (url)
4208
          return gRDF.GetResource(url);
4209
      }
4210
    }
4211
    return null;
4212
  },
4213
  
4214
  GetTarget: function nsExtensionsDataSource_GetTarget(aSource, aProperty, aTruthValue)
4215
  {
4216
    if (!aSource)
4217
      return null;
4218
      
4219
    if (aProperty.EqualsNode(this._emR("iconURL"))) {
4220
      var itemType = getItemType(aSource.Value);
4221
      if (itemType != -1 && itemType & nsIUpdateItem.TYPE_EXTENSION) {
4222
        var hasIconURL = this._composite.hasArcOut(aSource, aProperty);
4223
        // If the download entry doesn't have a IconURL property, use a
4224
        // generic icon URL instead.
4225
        if (!hasIconURL)
4226
          return gRDF.GetResource("chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png");
4227
        else {
4228
          var iconURL = this._composite.GetTarget(aSource, aProperty, true);
4229
          iconURL = iconURL.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
4230
          var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
4231
                             .getService(Components.interfaces.nsIChromeRegistry);
4232
          var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
4233
                                 .getService(Components.interfaces.nsIIOService);
4234
          var uri = ioServ.newURI(iconURL, null, null);
4235
          try {
4236
            cr.convertChromeURL(uri);
4237
          }
4238
          catch(e) {
4239
            // bogus URI, supply a generic icon. 
4240
            return gRDF.GetResource("chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png");
4241
          }
4242
        }
4243
      }
4244
      else if (itemType != -1 && itemType & nsIUpdateItem.TYPE_THEME) {
4245
        var res = this._getThemeJARURL(aSource, "icon.png", "chrome://mozapps/skin/extensions/themeGeneric.png");
4246
        if (res)
4247
          return res;
4248
      }
4249
    }
4250
    else if (aProperty.EqualsNode(this._emR("previewImage"))) {
4251
      var itemType = getItemType(aSource.Value);
4252
      if (itemType != -1 && itemType & nsIUpdateItem.TYPE_THEME) {
4253
        var res = this._getThemeJARURL(aSource, "preview.png", null);
4254
        if (res)
4255
          return res;
4256
      }
4257
    }
4258
    else if (aProperty.EqualsNode(this._emR("installLocation"))) {
4259
      var arcs = this._profileExtensions.ArcLabelsOut(aSource);
4260
      return arcs.hasMoreElements() ? this._emL("profile") : this._emL("global");
4261
    }
4262
    else if (aProperty.EqualsNode(this._emR("disabled"))) {
4263
      if (this.safeMode) 
4264
        return this._emL("true");
4265
      // fall through to default.
4266
    }
4267
    else if (aProperty.EqualsNode(this._emR("itemType"))) {
4268
      // We can try and infer the type from presence in one of the 
4269
      // item lists.
4270
      var rdfc = Components.classes["@mozilla.org/rdf/container;1"]
4271
                          .createInstance(Components.interfaces.nsIRDFContainer);
4272
      rdfc.Init(this, gRDF.GetResource(ROOT_EXTENSION));
4273
      if (rdfc.IndexOf(aSource) != -1) 
4274
        return this._emL("extension");
4275
    
4276
      rdfc.Init(this, gRDF.GetResource(ROOT_THEME));
4277
      if (rdfc.IndexOf(aSource) != -1) 
4278
        return this._emL("theme");
4279
    }
4280
    else if (aProperty.EqualsNode(this._emR("compatible"))) {
4281
      var type = getItemType(aSource.Value);
4282
      var id = stripPrefix(aSource.Value, type);
4283
      var targetAppInfo = this.getTargetApplicationInfo(id, this, type);
4284
      if (!targetAppInfo)
4285
        return this._emL("false");
4286
      getVersionChecker();
4287
      
4288
      var appVersion = gPref.getCharPref(PREF_EM_APP_EXTENSIONS_VERSION);
4289
      if (gVersionChecker.compare(targetAppInfo.maxVersion, appVersion) < 0 || 
4290
          gVersionChecker.compare(appVersion, targetAppInfo.minVersion) < 0) {
4291
        // OK, this item is incompatible. 
4292
        return this._emL("false");
4293
      }
4294
      return this._emL("true");
4295
    }
4296
    else if (aProperty.EqualsNode(this._emR("displayDescription"))) {
4297
      // We have a separate property for the description of the extension items
4298
      // which is displayed in the EM list - because we overload this value with
4299
      // alternative messages when the extension is disabled because of 
4300
      // incompatibility.
4301
      var disabled = this.getItemProperty(stripPrefix(aSource.Value, getItemType(aSource.Value)), 
4302
                                          "disabled");
4303
      if (disabled == "true") {
4304
        // See if this item was disabled because it was incompatible. 
4305
        // XXXben potential visual-glitch bug here with extensions whose install.rdf 
4306
        //        manifests state that they are incompatible but when phone home checking
4307
        //        reveals that they are compatible and they are installed the 
4308
        //        incompatible metadata is written anyway and will remain in the ds
4309
        //        until the next background update check corrects it - this means that
4310
        //        when a compatible extension is installed in this manner it is 
4311
        //        likely that when it is disabled it will show this special-case
4312
        //        error message.
4313
        var compatible = this.getItemProperty(stripPrefix(aSource.Value, getItemType(aSource.Value)), 
4314
                                              "compatible");
4315
        if (compatible != "true") {
4316
          var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
4317
                              .getService(Components.interfaces.nsIStringBundleService);
4318
          var extensionStrings = sbs.createBundle("chrome://mozapps/locale/extensions/extensions.properties");
4319
          var brandStrings = sbs.createBundle("chrome://global/locale/brand.properties");
4320
          var brandShortName = brandStrings.GetStringFromName("brandShortName");
4321
          var appVersion = gPref.getCharPref(PREF_EM_APP_VERSION);
4322
          var incompatibleMessage = extensionStrings.formatStringFromName("incompatibleExtension", 
4323
                                                                          [brandShortName, appVersion], 2);
4324
          return this._emL(incompatibleMessage);
4325
        }
4326
      }
4327
      // Use the "description" property. 
4328
      return this.GetTarget(aSource, this._emR("description"), aTruthValue);
4329
    }
4330
    else if (aProperty.EqualsNode(this._emR("name")) || 
4331
             aProperty.EqualsNode(this._emR("description")) || 
4332
             aProperty.EqualsNode(this._emR("creator")) || 
4333
             aProperty.EqualsNode(this._emR("homepageURL"))) {
4334
      // These are localizable properties that a language pack supplied by the 
4335
      // Extension may override.          
4336
      var prefName = PREF_EM_EXTENSION_FORMAT.replace(/%UUID%/, 
4337
                                                      stripPrefix(aSource.Value, 
4338
                                                                  nsIUpdateItem.TYPE_EXTENSION)) + 
4339
                      stripPropertyPrefix(aProperty.Value, EM_NS_PREFIX);
4340
      try {
4341
        var value = gPref.getComplexValue(prefName, 
4342
                                          Components.interfaces.nsIPrefLocalizedString);
4343
        if (value.data) 
4344
          return this._emL(value.data);
4345
      }
4346
      catch (e) {
4347
      }
4348
    }
4349
    
4350
    return this._composite.GetTarget(aSource, aProperty, aTruthValue);
4351
  },
4352
  
4353
  GetTargets: function nsExtensionsDataSource_GetTargets (aSource, aProperty, aTruthValue)
4354
  {
4355
    if (aProperty.EqualsNode(this._emR("name")) ||
4356
        aProperty.EqualsNode(this._emR("contributor"))) {
4357
      // These are localizable properties that a language pack supplied by the 
4358
      // Extension may override.          
4359
      var contributors = [];
4360
      var prefName = PREF_EM_EXTENSION_FORMAT.replace(/%UUID%/, 
4361
                                                      stripPrefix(aSource.Value, 
4362
                                                                  nsIUpdateItem.TYPE_EXTENSION)) + 
4363
                      stripPropertyPrefix(aProperty.Value, EM_NS_PREFIX);
4364
      var i = 0;
4365
      do {
4366
        try {
4367
          var value = gPref.getComplexValue(prefName + "." + ++i, 
4368
                                            Components.interfaces.nsIPrefLocalizedString);
4369
          if (value.data) 
4370
            contributors.push(this._emL(value.data));
4371
        }
4372
        catch (e) {
4373
          try {
4374
            var value = gPref.getComplexValue(prefName, 
4375
                                              Components.interfaces.nsIPrefLocalizedString);
4376
            if (value.data) 
4377
              contributors.push(this._emL(value.data));
4378
          }
4379
          catch (e) {
4380
          }
4381
          break;
4382
        }
4383
      }
4384
      while (1);
4385
      if (contributors.length > 0)
4386
        return new ArrayEnumerator(contributors);
4387
    }
4388
    return this._composite.GetTargets(aSource, aProperty, aTruthValue);
4389
  },
4390
  
4391
  _getTargetDSFromSource: function nsExtensionsDataSource__getTargetDSFromSource (aSource)
4392
  {
4393
    var itemID = stripPrefix(aSource.Value, nsIUpdateItem.TYPE_ADDON);
4394
    return this.isProfileItem(itemID) ? this._profileExtensions : this._appExtensions;
4395
  },
4396
  
4397
  Assert: function nsExtensionsDataSource_Assert (aSource, aProperty, aTarget, aTruthValue)
4398
  {
4399
    var targetDS = this._getTargetDSFromSource(aSource);
4400
    targetDS.Assert(aSource, aProperty, aTarget, aTruthValue);
4401
  },
4402
  
4403
  Unassert: function nsExtensionsDataSource_Unassert (aSource, aProperty, aTarget)
4404
  {
4405
    var targetDS = this._getTargetDSFromSource(aSource);
4406
    targetDS.Unassert(aSource, aProperty, aTarget);
4407
  },
4408
  
4409
  Change: function nsExtensionsDataSource_Change (aSource, aProperty, aOldTarget, aNewTarget)
4410
  {
4411
    var targetDS = this._getTargetDSFromSource(aSource);
4412
    targetDS.Change(aSource, aProperty, aOldTarget, aNewTarget);
4413
  },
4414
4415
  Move: function nsExtensionsDataSource_Move (aSource, aNewSource, aProperty, aTarget)
4416
  {
4417
    var targetDS = this._getTargetDSFromSource(aSource);
4418
    targetDS.Move(aSource, aNewSource, aProperty, aTarget);
4419
  },
4420
  
4421
  HasAssertion: function nsExtensionsDataSource_HasAssertion (aSource, aProperty, aTarget, aTruthValue)
4422
  {
4423
    if (!aSource || !aProperty || !aTarget)
4424
      return false;
4425
    return this._composite.HasAssertion(aSource, aProperty, aTarget, aTruthValue);
4426
  },
4427
  
4428
  _observers: [],
4429
  AddObserver: function nsExtensionsDataSource_AddObserver (aObserver)
4430
  {
4431
    for (var i = 0; i < this._observers.length; ++i) {
4432
      if (this._observers[i] == aObserver) 
4433
        return;
4434
    }
4435
    this._observers.push(aObserver);
4436
    this._composite.AddObserver(aObserver);
4437
  },
4438
  
4439
  RemoveObserver: function nsExtensionsDataSource_RemoveObserver (aObserver)
4440
  {
4441
    for (var i = 0; i < this._observers.length; ++i) {
4442
      if (this._observers[i] == aObserver) 
4443
        this._observers.splice(i, 1);
4444
    }
4445
    this._composite.RemoveObserver(aObserver);
4446
  },
4447
  
4448
  ArcLabelsIn: function nsExtensionsDataSource_ArcLabelsIn (aNode)
4449
  {
4450
    return this._composite.ArcLabelsIn(aNode);
4451
  },
4452
  
4453
  ArcLabelsOut: function nsExtensionsDataSource_ArcLabelsOut (aSource)
4454
  {
4455
    return this._composite.ArcLabelsOut(aSource);
4456
  },
4457
  
4458
  GetAllResources: function nsExtensionsDataSource_GetAllResources ()
4459
  {
4460
    return this._composite.GetAllResources();
4461
  },
4462
  
4463
  IsCommandEnabled: function nsExtensionsDataSource_IsCommandEnabled (aSources, aCommand, aArguments)
4464
  {
4465
    return this._composite.IsCommandEnabled(aSources, aCommand, aArguments);
4466
  },
4467
  
4468
  DoCommand: function nsExtensionsDataSource_DoCommand (aSources, aCommand, aArguments)
4469
  {
4470
    this._composite.DoCommand(aSources, aCommand, aArguments);
4471
  },
4472
  
4473
  GetAllCmds: function nsExtensionsDataSource_GetAllCmds (aSource)
4474
  {
4475
    return this._composite.GetAllCmds(aSource);
4476
  },
4477
  
4478
  hasArcIn: function nsExtensionsDataSource_hasArcIn (aNode, aArc)
4479
  {
4480
    return this._composite.hasArcIn(aNode, aArc);
4481
  },
4482
  
4483
  hasArcOut: function nsExtensionsDataSource_hasArcOut (aSource, aArc)
4484
  {
4485
    return this._composite.hasArcOut(aSource, aArc);
4486
  },
4487
  
4488
  beginUpdateBatch: function nsExtensionsDataSource_beginUpdateBatch ()
4489
  {
4490
    return this._composite.beginUpdateBatch();
4491
  },
4492
  
4493
  endUpdateBatch: function nsExtensionsDataSource_endUpdateBatch ()
4494
  {
4495
    return this._composite.endUpdateBatch();
4496
  },
4497
  
4498
  /////////////////////////////////////////////////////////////////////////////
4499
  // nsIRDFRemoteDataSource
4500
  
4501
  get loaded()
4502
  {
4503
    throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
4504
  },
4505
  
4506
  Init: function nsExtensionsDataSource_Init (aURI)
4507
  {
4508
  },
4509
  
4510
  Refresh: function nsExtensionsDataSource_Refresh (aBlocking)
4511
  {
4512
  },
4513
  
4514
  Flush: function nsExtensionsDataSource_Flush ()
4515
  {
4516
    this._flush(false);
4517
    this._flush(true);
4518
  },
4519
  
4520
  FlushTo: function nsExtensionsDataSource_FlushTo (aURI)
4521
  {
4522
  },
4523
  
4524
  _flush: function nsExtensionsDataSource__flush (aIsProfile)
4525
  { 
4526
    var ds = aIsProfile ? this._profileExtensions : this._appExtensions;
4527
    var rds = ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
4528
    rds.Flush();
4529
  },
4530
4531
  /////////////////////////////////////////////////////////////////////////////
4532
  // nsISupports
4533
  QueryInterface: function nsExtensionsDataSource_QueryInterface (aIID) 
4534
  {
4535
    if (!aIID.equals(Components.interfaces.nsIRDFDataSource) &&
4536
        !aIID.equals(Components.interfaces.nsIRDFRemoteDataSource) && 
4537
        !aIID.equals(Components.interfaces.nsISupports))
4538
      throw Components.results.NS_ERROR_NO_INTERFACE;
4539
    return this;
4540
  }
4541
};
4542
4543
4544
var gModule = {
4545
  _firstTime: true,
4546
  
4547
  registerSelf: function (aComponentManager, aFileSpec, aLocation, aType) 
4548
  {
4549
    if (this._firstTime) {
4550
      this._firstTime = false;
4551
      throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
4552
    }
4553
    aComponentManager = aComponentManager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
4554
    
4555
    for (var key in this._objects) {
4556
      var obj = this._objects[key];
4557
      aComponentManager.registerFactoryLocation(obj.CID, obj.className, obj.contractID,
4558
                                                aFileSpec, aLocation, aType);
4559
    }
4560
4561
/*    
4562
    // Make the Extension Manager a startup observer
4563
    var categoryManager = Components.classes["@mozilla.org/categorymanager;1"]
4564
                                    .getService(Components.interfaces.nsICategoryManager);
4565
    categoryManager.addCategoryEntry("app-startup", this._objects.manager.className,
4566
                                     "service," + this._objects.manager.contractID, 
4567
                                     true, true, null);
4568
 */
4569
  },
4570
  
4571
  getClassObject: function (aComponentManager, aCID, aIID) 
4572
  {
4573
    if (!aIID.equals(Components.interfaces.nsIFactory))
4574
      throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
4575
4576
    for (var key in this._objects) {
4577
      if (aCID.equals(this._objects[key].CID))
4578
        return this._objects[key].factory;
4579
    }
4580
    
4581
    throw Components.results.NS_ERROR_NO_INTERFACE;
4582
  },
4583
  
4584
  _objects: {
4585
    manager: { CID        : nsExtensionManager.prototype.classID,
4586
               contractID : nsExtensionManager.prototype.contractID,
4587
               className  : nsExtensionManager.prototype.classDescription,
4588
               factory    : {
4589
                              createInstance: function (aOuter, aIID) 
4590
                              {
4591
                                if (aOuter != null)
4592
                                  throw Components.results.NS_ERROR_NO_AGGREGATION;
4593
                                
4594
                                return (new nsExtensionManager()).QueryInterface(aIID);
4595
                              }
4596
                            }
4597
             }
4598
   },
4599
  
4600
  canUnload: function (aComponentManager) 
4601
  {
4602
    return true;
4603
  }
4604
};
4605
4606
function NSGetModule(compMgr, fileSpec) 
4607
{
4608
  return gModule;
4609
}
4610
++ toolkit/mozapps/extensions/src/nsExtensionManager.js.in
Lines 20-25 Link Here
20
 *
20
 *
21
 * Contributor(s):
21
 * Contributor(s):
22
 *  Ben Goodger <ben@bengoodger.com>
22
 *  Ben Goodger <ben@bengoodger.com>
23
 *  Mike Hommey <mh@glandium.org>
23
 *
24
 *
24
 * Alternatively, the contents of this file may be used under the terms of
25
 * Alternatively, the contents of this file may be used under the terms of
25
 * either the GNU General Public License Version 2 or later (the "GPL"), or
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or
Lines 144-149 Link Here
144
}
145
}
145
146
146
// Returns the file at the appropriate point in a directory hierarchy under
147
// Returns the file at the appropriate point in a directory hierarchy under
148
// the specified key. Does NOT create the file NOR the directories along the
149
// way.
150
function getFileNoCreateDir(aKey, aPathToFile)
151
{
152
  var subdirs = [];
153
  for (var i = 0; i < aPathToFile.length - 1; ++i)
154
    subdirs.push(aPathToFile[i]);
155
  var file = getDirNoCreate(aKey, subdirs);
156
  file.append(aPathToFile[aPathToFile.length - 1]);
157
  return file;
158
}
159
160
// Returns the file at the appropriate point in a directory hierarchy under
147
// the specified key, creating directories along the way if necessary. Does
161
// the specified key, creating directories along the way if necessary. Does
148
// NOT create the file.
162
// NOT create the file.
149
function getFile(aKey, aPathToFile)
163
function getFile(aKey, aPathToFile)
Lines 675-683 Link Here
675
function nsInstallLogReader(aExtensionID, aIsProfile, aListener)
689
function nsInstallLogReader(aExtensionID, aIsProfile, aListener)
676
{
690
{
677
  this._isProfile = aIsProfile;
691
  this._isProfile = aIsProfile;
678
  this.uninstallLog = getFile(getDirKey(aIsProfile),
692
  this.uninstallLog = getFileNoCreateDir(getDirKey(aIsProfile),
679
                              [DIR_EXTENSIONS, aExtensionID, 
693
                              [DIR_EXTENSIONS, aExtensionID, 
680
                               DIR_UNINSTALL, FILE_UNINSTALL_LOG]);
694
                               DIR_UNINSTALL, FILE_UNINSTALL_LOG]);
695
  // If the uninstall Log doesn't exist in profile, let's give a try in
696
  // global extension pool.
697
  if (aIsProfile && !this.uninstallLog.exists()) {
698
    this._isProfile = false;
699
    this.uninstallLog = getFileNoCreateDir(getDirKey(false),
700
                                           [DIR_EXTENSIONS, aExtensionID,
701
                                            DIR_UNINSTALL, FILE_UNINSTALL_LOG]);
702
  }
681
  this._listener = aListener
703
  this._listener = aListener
682
}
704
}
683
705
Lines 829-854 Link Here
829
  {
851
  {
830
    // extension,{GUID} or theme,{GUID}
852
    // extension,{GUID} or theme,{GUID}
831
    var parts = aLine.split(",");
853
    var parts = aLine.split(",");
832
    var manifest = getFile(KEY_APPDIR, 
854
    var manifest = getFileNoCreateDir(KEY_APPDIR, 
833
                           [DIR_EXTENSIONS, parts[1], FILE_INSTALL_MANIFEST]);
855
                           [DIR_EXTENSIONS, parts[1], FILE_INSTALL_MANIFEST]);
834
    if (parts.length != 2)
856
    if (parts.length != 2)
835
      return;
857
      return;
836
      
858
      
837
    if (!manifest.exists()) {
859
    if (manifest.exists()) {
838
      defaultManifest = defaultFile = getFile(KEY_DEFAULTS, 
860
      switch (parts[0]) {
839
                                              [DIR_DEFAULTS_EXTENSIONS, parts[1], FILE_INSTALL_MANIFEST]);
861
      case this.TOKEN_EXTENSION:
840
      var extensionDir = getDir(KEY_APPDIR, [DIR_EXTENSIONS, parts[1]]);
862
        this._manager.ensurePreConfiguredItem(parts[1], nsIUpdateItem.TYPE_EXTENSION, manifest);
841
      defaultManifest.copyTo(extensionDir, FILE_INSTALL_MANIFEST);
863
        break;
842
      manifest = getFile(KEY_APPDIR, 
864
      case this.TOKEN_THEME:
843
                         [DIR_EXTENSIONS, parts[1], FILE_INSTALL_MANIFEST]);
865
        this._manager.ensurePreConfiguredItem(parts[1], nsIUpdateItem.TYPE_THEME, manifest);
844
    }
866
        break;
845
    switch (parts[0]) {
867
      }
846
    case this.TOKEN_EXTENSION:
847
      this._manager.ensurePreConfiguredItem(parts[1], nsIUpdateItem.TYPE_EXTENSION, manifest);
848
      break;
849
    case this.TOKEN_THEME:
850
      this._manager.ensurePreConfiguredItem(parts[1], nsIUpdateItem.TYPE_THEME, manifest);
851
      break;
852
    }
868
    }
853
  }
869
  }
854
};
870
};
Lines 929-935 Link Here
929
    this._installExtensionFiles();
945
    this._installExtensionFiles();
930
    
946
    
931
    // Load the metadata datasource
947
    // Load the metadata datasource
932
    var metadataFile = getFile(this._extDirKey, 
948
    var metadataFile = getFileNoCreateDir(this._extDirKey, 
933
                               [DIR_EXTENSIONS, aExtensionID, FILE_INSTALL_MANIFEST]);
949
                               [DIR_EXTENSIONS, aExtensionID, FILE_INSTALL_MANIFEST]);
934
    
950
    
935
    this._metadataDS = getInstallManifest(metadataFile);
951
    this._metadataDS = getInstallManifest(metadataFile);
Lines 969-978 Link Here
969
  
985
  
970
  _installExtensionFiles: function nsExtensionInstaller__installExtensionFiles ()
986
  _installExtensionFiles: function nsExtensionInstaller__installExtensionFiles ()
971
  {
987
  {
972
    var sourceXPI = getFile(this._extDirKey, 
988
    var sourceXPI = getFileNoCreateDir(this._extDirKey, 
973
                            [DIR_EXTENSIONS, DIR_TEMP, 
989
                            [DIR_EXTENSIONS, DIR_TEMP, 
974
                             this._extensionID, 
990
                             this._extensionID, 
975
                             this._extensionID + ".xpi"]);
991
                             this._extensionID + ".xpi"]);
992
    if (!sourceXPI.exists())
993
      return;
976
    var zipReader = Components.classes["@mozilla.org/libjar/zip-reader;1"]
994
    var zipReader = Components.classes["@mozilla.org/libjar/zip-reader;1"]
977
                              .createInstance(Components.interfaces.nsIZipReader);
995
                              .createInstance(Components.interfaces.nsIZipReader);
978
    zipReader.init(sourceXPI);
996
    zipReader.init(sourceXPI);
Lines 1752-1757 Link Here
1752
      // Write bin/components.ini
1770
      // Write bin/components.ini
1753
      var manifest = getFile(KEY_APPDIR, [FILE_COMPONENT_MANIFEST]);
1771
      var manifest = getFile(KEY_APPDIR, [FILE_COMPONENT_MANIFEST]);
1754
      this._writeProfileFile(manifest, this._getComponentsDir, false);
1772
      this._writeProfileFile(manifest, this._getComponentsDir, false);
1773
1774
      // Update the Defaults Manifest
1775
      this._writeDefaults(false);
1755
    }
1776
    }
1756
  },
1777
  },
1757
1778
Lines 1823-1829 Link Here
1823
        cr.selectSkin(KEY_DEFAULT_THEME, true);
1844
        cr.selectSkin(KEY_DEFAULT_THEME, true);
1824
      }
1845
      }
1825
      catch (e) {
1846
      catch (e) {
1826
        dump("*** nsExtensionManager::_disableObsoleteExtensions - failure, catching exception so finalize window can close\n");
1847
//        dump("*** nsExtensionManager::_disableObsoleteExtensions - failure, catching exception so finalize window can close\n");
1827
      }
1848
      }
1828
      win.close();
1849
      win.close();
1829
      
1850
      
Lines 2000-2007 Link Here
2000
  ensurePreConfiguredItem: function nsExtensionManager_ensurePreConfiguredItem (aItemID, aItemType, aManifest)
2021
  ensurePreConfiguredItem: function nsExtensionManager_ensurePreConfiguredItem (aItemID, aItemType, aManifest)
2001
  {
2022
  {
2002
    this._ds.insertForthcomingItem(aItemID, aItemType, false);
2023
    this._ds.insertForthcomingItem(aItemID, aItemType, false);
2003
    var metadataDS = getInstallManifest(aManifest);
2024
    try {
2025
        var metadataDS = getInstallManifest(aManifest);
2026
    }
2027
    catch(e) {
2028
            return;
2029
    }
2004
    this._ds.addItemMetadata(aItemID, aItemType, metadataDS, false);
2030
    this._ds.addItemMetadata(aItemID, aItemType, metadataDS, false);
2031
2032
    // Check whether the extension is installable (firefox_version fitting between
2033
    // em:MaxVersion and em:MinVersion)
2034
    var extensionID = this.canInstallItem(metadataDS);
2035
    // |extensionID| must be a GUID string, not a number - a number means failure.
2036
    if (isNaN(parseInt(extensionID))) {
2037
      // Do install the extension, meaning we register its chrome and components
2038
      if (!this._extInstaller)
2039
          this._extInstaller = new nsExtensionInstaller(this._ds);
2040
      try {
2041
          this._extInstaller.install(aItemID, false);
2042
      }
2043
      catch (e) {
2044
          // If the installation failed, we disable the extension in addition
2045
	  // to _not_ uninstalling it (which would fail anyway because it
2046
	  // would be done at launch time... as a user).
2047
	  this._ds.setItemProperty(aItemID, this._ds._emR("toBeUninstalled"),
2048
	                           null, false, aItemType);
2049
          this._ds.setItemProperty(aItemID, this._ds._emR("disabled"),
2050
                                   this._ds._emL("true"), false, aItemType);
2051
      }
2052
    } else {
2053
      // disable extensions that aren't installable
2054
      this._ds.setItemProperty(aItemID, this._ds._emR("disabled"),
2055
                              this._ds._emL("true"), false, aItemType);
2056
    }
2057
    // Force locking pre-configured items.
2058
    this._ds.lockUnlockItem(aItemID, true);
2005
  },
2059
  },
2006
  
2060
  
2007
  checkForMismatches: function nsExtensionManager_checkForMismatches () 
2061
  checkForMismatches: function nsExtensionManager_checkForMismatches () 
Lines 2028-2049 Link Here
2028
      if (items.length > 0) {
2082
      if (items.length > 0) {
2029
        for (var i = 0; i < items.length; ++i) {
2083
        for (var i = 0; i < items.length; ++i) {
2030
          // Now disable the extension so it won't hurt anything. 
2084
          // Now disable the extension so it won't hurt anything. 
2085
	  var alreadyDisabled = this._ds.getItemProperty(items[i].id, "disabled");
2031
          var itemType = getItemType(this._ds._getResourceForItem(items[i].id).Value);
2086
          var itemType = getItemType(this._ds._getResourceForItem(items[i].id).Value);
2032
          if (itemType != -1 && itemType & nsIUpdateItem.TYPE_EXTENSION)
2087
          if (itemType != -1 && itemType & nsIUpdateItem.TYPE_EXTENSION)
2033
            this.disableExtension(items[i].id);
2088
            if (!alreadyDisabled) this.disableExtension(items[i].id);
2034
          else if (itemType & nsIUpdateItem.TYPE_THEME) {
2089
          else if (itemType & nsIUpdateItem.TYPE_THEME) {
2035
            if (gPref.prefHasUserValue(PREF_GENERAL_SKINS_SELECTEDSKIN))
2090
            if (gPref.prefHasUserValue(PREF_GENERAL_SKINS_SELECTEDSKIN))
2036
              gPref.clearUserPref(PREF_GENERAL_SKINS_SELECTEDSKIN);
2091
              gPref.clearUserPref(PREF_GENERAL_SKINS_SELECTEDSKIN);
2037
            this._ds.disableTheme(items[i].id);
2092
            if (!alreadyDisabled) this._ds.disableTheme(items[i].id);
2038
          }
2093
          }
2039
        }
2094
        }
2040
        var updates = Components.classes["@mozilla.org/updates/update-service;1"]
2095
	// We want to eliminate locked extensions
2041
                                .getService(Components.interfaces.nsIUpdateService);
2096
	newitems = [];
2042
        updates.checkForUpdates(items, items.length, nsIUpdateItem.TYPE_ADDON, 
2097
	for (var i = 0; i < items.length; ++i) {
2043
                                nsIUpdateService.SOURCE_EVENT_MISMATCH,
2098
	  if (!this._ds.getItemProperty(items[i].id, "locked"))
2044
                                null);
2099
	    newitems.push(items[i]);
2100
	}
2101
	if (newitems.length > 0) {
2102
          var updates = Components.classes["@mozilla.org/updates/update-service;1"]
2103
                                  .getService(Components.interfaces.nsIUpdateService);
2104
          updates.checkForUpdates(newitems, newitems.length, nsIUpdateItem.TYPE_ADDON, 
2105
                                  nsIUpdateService.SOURCE_EVENT_MISMATCH,
2106
                                  null);
2045
        
2107
        
2046
        needsRestart = true;
2108
          needsRestart = true;
2109
	}
2047
      }
2110
      }
2048
    }
2111
    }
2049
    
2112
    
Lines 2087-2093 Link Here
2087
      this._writeDefaults(false);
2150
      this._writeDefaults(false);
2088
    }
2151
    }
2089
    catch (e) { 
2152
    catch (e) { 
2090
      dump("*** ExtensionManager:_updateManifests: no access privileges to application directory, skipping.\n"); 
2153
//      dump("*** ExtensionManager:_updateManifests: no access privileges to application directory, skipping.\n"); 
2091
    };
2154
    };
2092
    this._writeComponentManifest(true);
2155
    this._writeComponentManifest(true);
2093
    this._writeDefaults(true);
2156
    this._writeDefaults(true);
Lines 2133-2138 Link Here
2133
        validExtensions.push({ sourceDir: sourceDir, isProfile: isProfile });
2196
        validExtensions.push({ sourceDir: sourceDir, isProfile: isProfile });
2134
    }
2197
    }
2135
    
2198
    
2199
    // Debian hook to insert defaults/syspref into defaults.ini
2200
    if ((aFile.leafName == FILE_DEFAULTS) && aIsProfile == false) {
2201
      validExtensions.push({ sourceDir: getDirNoCreate(getDirKey(false), [DIR_DEFAULTS, "syspref"]), isProfile: false });
2202
    }
2203
2136
    var lines = ["[Extra Files]\r\n",
2204
    var lines = ["[Extra Files]\r\n",
2137
                 "Count=" + validExtensions.length + "\r\n"];
2205
                 "Count=" + validExtensions.length + "\r\n"];
2138
    for (i = 0; i < lines.length; ++i)
2206
    for (i = 0; i < lines.length; ++i)
Lines 2545-2560 Link Here
2545
      this._extEnabler = new nsExtensionEnabler(this._ds);
2613
      this._extEnabler = new nsExtensionEnabler(this._ds);
2546
      
2614
      
2547
    var isProfile = this._ds.isProfileItem(aExtensionID);
2615
    var isProfile = this._ds.isProfileItem(aExtensionID);
2548
    this._extEnabler.enable(aExtensionID, isProfile, aDisable);
2616
    this._extEnabler.enable(aExtensionID, true, aDisable);
2549
2617
2550
    // clear temporary flags
2618
    // clear temporary flags
2551
    this._ds.setItemProperty(aExtensionID, 
2619
    this._ds.setItemProperty(aExtensionID, 
2552
                             this._ds._emR("toBeEnabled"),
2620
                             this._ds._emR("toBeEnabled"),
2553
                             null, isProfile,
2621
                             null, true,
2554
                             nsIUpdateItem.TYPE_EXTENSION);
2622
                             nsIUpdateItem.TYPE_EXTENSION);
2555
    this._ds.setItemProperty(aExtensionID, 
2623
    this._ds.setItemProperty(aExtensionID, 
2556
                             this._ds._emR("toBeDisabled"),
2624
                             this._ds._emR("toBeDisabled"),
2557
                             null, isProfile,
2625
                             null, true,
2558
                             nsIUpdateItem.TYPE_EXTENSION);
2626
                             nsIUpdateItem.TYPE_EXTENSION);
2559
  },
2627
  },
2560
  
2628
  
Lines 3090-3097 Link Here
3090
  checkForUpdates: function (aItem, aVersionUpdateOnly)
3158
  checkForUpdates: function (aItem, aVersionUpdateOnly)
3091
  {
3159
  {
3092
    // A preference setting can disable updating for this item
3160
    // A preference setting can disable updating for this item
3161
    // We'll also skip locked items.
3093
    try {
3162
    try {
3094
      if (!gPref.getBoolPref(PREF_EM_ITEM_UPDATE_ENABLED.replace(/%UUID%/, aItem.id))) {
3163
      if (this._updater._emDS.getItemProperty(aItem.id, "locked") ||
3164
          !gPref.getBoolPref(PREF_EM_ITEM_UPDATE_ENABLED.replace(/%UUID%/, aItem.id))) {
3095
        gOS.notifyObservers(null, "Update:Extension:Item-Ended", "");
3165
        gOS.notifyObservers(null, "Update:Extension:Item-Ended", "");
3096
        this._updater._checkForDone();
3166
        this._updater._checkForDone();
3097
        return;
3167
        return;
Lines 3557-3563 Link Here
3557
  
3627
  
3558
  isProfileItem: function nsExtensionsDataSource_isProfileItem (aItemID)
3628
  isProfileItem: function nsExtensionsDataSource_isProfileItem (aItemID)
3559
  {
3629
  {
3560
    return this.getItemProperty(aItemID, "installLocation") != "global";
3630
    return this.getItemProperty(aItemID, "installLocation") == "profile";
3561
  },
3631
  },
3562
  
3632
  
3563
  _setProperty: function nsExtensionsDataSource__setProperty (aDS, aSource, aProperty, aNewValue)
3633
  _setProperty: function nsExtensionsDataSource__setProperty (aDS, aSource, aProperty, aNewValue)
Lines 3845-3870 Link Here
3845
  enableExtension: function nsExtensionsDataSource_enableExtension (aExtensionID)
3915
  enableExtension: function nsExtensionsDataSource_enableExtension (aExtensionID)
3846
  {
3916
  {
3847
    this.setItemProperty(aExtensionID, this._emR("toBeEnabled"), 
3917
    this.setItemProperty(aExtensionID, this._emR("toBeEnabled"), 
3848
                         this._emL("true"), this.isProfileItem(aExtensionID), 
3918
                         this._emL("true"), true,
3849
                         nsIUpdateItem.TYPE_EXTENSION);
3919
                         nsIUpdateItem.TYPE_EXTENSION);
3850
    this.setItemProperty(aExtensionID, this._emR("toBeDisabled"), 
3920
    this.setItemProperty(aExtensionID, this._emR("toBeDisabled"), 
3851
                         null, this.isProfileItem(aExtensionID), 
3921
                         null, true,
3852
                         nsIUpdateItem.TYPE_EXTENSION);
3922
                         nsIUpdateItem.TYPE_EXTENSION);
3853
    this.setItemProperty(aExtensionID, this._emR("disabled"), 
3923
    this.setItemProperty(aExtensionID, this._emR("disabled"), 
3854
                         null, this.isProfileItem(aExtensionID), 
3924
                         null, true,
3855
                         nsIUpdateItem.TYPE_EXTENSION);
3925
                         nsIUpdateItem.TYPE_EXTENSION);
3856
  },
3926
  },
3857
  
3927
  
3858
  disableExtension: function nsExtensionsDataSource_disableExtension (aExtensionID)
3928
  disableExtension: function nsExtensionsDataSource_disableExtension (aExtensionID)
3859
  {
3929
  {
3860
    this.setItemProperty(aExtensionID, this._emR("toBeDisabled"), 
3930
    this.setItemProperty(aExtensionID, this._emR("toBeDisabled"), 
3861
                         this._emL("true"), this.isProfileItem(aExtensionID), 
3931
                         this._emL("true"), true,
3862
                         nsIUpdateItem.TYPE_EXTENSION);
3932
                         nsIUpdateItem.TYPE_EXTENSION);
3863
    this.setItemProperty(aExtensionID, this._emR("toBeEnabled"), 
3933
    this.setItemProperty(aExtensionID, this._emR("toBeEnabled"), 
3864
                         null, this.isProfileItem(aExtensionID), 
3934
                         null, true,
3865
                         nsIUpdateItem.TYPE_EXTENSION);
3935
                         nsIUpdateItem.TYPE_EXTENSION);
3866
    this.setItemProperty(aExtensionID, this._emR("disabled"), 
3936
    this.setItemProperty(aExtensionID, this._emR("disabled"), 
3867
                         this._emL("true"), this.isProfileItem(aExtensionID), 
3937
                         this._emL("true"), true, 
3868
                         nsIUpdateItem.TYPE_EXTENSION);
3938
                         nsIUpdateItem.TYPE_EXTENSION);
3869
  },
3939
  },
3870
  
3940
  
3871
-- toolkit/mozapps/update/src/nsUpdateService.js.in
3941
++ toolkit/mozapps/update/src/nsUpdateService.js.in
Lines 178-186 Link Here
178
      if (aRequestedTypes & nsIUpdateItem.TYPE_THEME)
178
      if (aRequestedTypes & nsIUpdateItem.TYPE_THEME)
179
        types |= nsIUpdateItem.TYPE_THEME;
179
        types |= nsIUpdateItem.TYPE_THEME;
180
    }
180
    }
181
    if (appUpdateEnabled && 
181
    // Disable application updates
182
        (aRequestedTypes & nsIUpdateItem.TYPE_APP))
182
    //if (appUpdateEnabled && 
183
      types |= nsIUpdateItem.TYPE_APP;
183
    //    (aRequestedTypes & nsIUpdateItem.TYPE_APP))
184
    //  types |= nsIUpdateItem.TYPE_APP;
184
185
185
    return types;
186
    return types;
186
  },
187
  },
187
-- toolkit/mozapps/update/src/nsUpdateService.js
188
++ toolkit/mozapps/update/src/nsUpdateService.js
Line 0 Link Here
0
-- toolkit/mozapps/jar.mn
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
 *
5
 * The contents of this file are subject to the Mozilla Public License Version
6
 * 1.1 (the "License"); you may not use this file except in compliance with
7
 * the License. You may obtain a copy of the License at
8
 * http://www.mozilla.org/MPL/
9
 *
10
 * Software distributed under the License is distributed on an "AS IS" basis,
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
 * for the specific language governing rights and limitations under the
13
 * License.
14
 *
15
 * The Original Code is the Update Service.
16
 *
17
 * The Initial Developer of the Original Code is Ben Goodger.
18
 * Portions created by the Initial Developer are Copyright (C) 2004
19
 * the Initial Developer. All Rights Reserved.
20
 *
21
 * Contributor(s):
22
 *  Ben Goodger <ben@bengoodger.com>
23
 *
24
 * Alternatively, the contents of this file may be used under the terms of
25
 * either the GNU General Public License Version 2 or later (the "GPL"), or
26
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27
 * in which case the provisions of the GPL or the LGPL are applicable instead
28
 * of those above. If you wish to allow use of your version of this file only
29
 * under the terms of either the GPL or the LGPL, and not to allow others to
30
 * use your version of this file under the terms of the MPL, indicate your
31
 * decision by deleting the provisions above and replace them with the notice
32
 * and other provisions required by the GPL or the LGPL. If you do not delete
33
 * the provisions above, a recipient may use your version of this file under
34
 * the terms of any one of the MPL, the GPL or the LGPL.
35
 *
36
 * ***** END LICENSE BLOCK ***** */
37
38
const PREF_APP_ID                           = "app.id";
39
const PREF_APP_VERSION                      = "app.version";
40
const PREF_UPDATE_APP_ENABLED               = "app.update.enabled";
41
const PREF_UPDATE_APP_AUTOUPDATEENABLED     = "app.update.autoUpdateEnabled";
42
const PREF_UPDATE_APP_URI                   = "app.update.url";
43
const PREF_UPDATE_APP_UPDATESAVAILABLE      = "app.update.updatesAvailable";
44
const PREF_UPDATE_APP_INTERVAL              = "app.update.interval";
45
const PREF_UPDATE_APP_LASTUPDATEDATE        = "app.update.lastUpdateDate";
46
const PREF_UPDATE_APP_PERFORMED             = "app.update.performed";
47
48
const PREF_UPDATE_EXTENSIONS_ENABLED            = "extensions.update.enabled";
49
const PREF_UPDATE_EXTENSIONS_AUTOUPDATEENABLED  = "extensions.update.autoUpdateEnabled";
50
const PREF_UPDATE_EXTENSIONS_AUTOUPDATE         = "extensions.update.autoUpdate";
51
const PREF_UPDATE_EXTENSIONS_COUNT              = "extensions.update.count";
52
const PREF_UPDATE_EXTENSIONS_INTERVAL           = "extensions.update.interval";
53
const PREF_UPDATE_EXTENSIONS_LASTUPDATEDATE     = "extensions.update.lastUpdateDate";
54
const PREF_UPDATE_EXTENSIONS_SEVERITY_THRESHOLD = "extensions.update.severity.threshold";
55
56
const PREF_UPDATE_INTERVAL                  = "update.interval";
57
const PREF_UPDATE_SEVERITY                  = "update.severity";
58
const PREF_UPDATE_SHOW_SLIDING_NOTIFICATION = "update.showSlidingNotification";
59
60
const nsIExtensionManager = Components.interfaces.nsIExtensionManager;
61
const nsIUpdateService    = Components.interfaces.nsIUpdateService;
62
const nsIUpdateItem       = Components.interfaces.nsIUpdateItem;
63
64
const UPDATED_EXTENSIONS  = 0x01;
65
const UPDATED_APP         = 0x02;
66
67
function APP_NS(aProperty)
68
{
69
  return "http://www.mozilla.org/2004/app-rdf#" + aProperty;
70
}
71
72
function getOSKey()
73
{
74
  return "linux";
75
}
76
77
function stackTraceFunctionFormat(aFunctionName)
78
{
79
  var classDelimiter = aFunctionName.indexOf("_");
80
  var className = aFunctionName.substr(0, classDelimiter);
81
  if (!className)
82
    className == "<global>";
83
  var functionName = aFunctionName.substr(classDelimiter + 1, aFunctionName.length);
84
  if (!functionName) 
85
    functionName == "<anonymous>";
86
  return className + "::" + functionName;
87
}
88
89
function stackTrace(aArguments, aMaxCount)
90
{
91
  dump("=[STACKTRACE]=====================================================\n");
92
  dump("*** at: " + stackTraceFunctionFormat(aArguments.callee.name) + "()\n");
93
  var temp = aArguments.callee.caller;
94
  var count = 0;
95
  while (temp) {
96
    dump("***     " + stackTraceFunctionFormat(temp.name) + ")\n");
97
    temp = temp.arguments.callee.caller;
98
    if (aMaxCount > 0 && ++count == aMaxCount)
99
      break;
100
  }
101
  dump("==================================================================\n");
102
}
103
104
var gPref   = null;
105
var gOS     = null;
106
var gRDF    = null;
107
108
function nsUpdateService()
109
{
110
  gPref = Components.classes["@mozilla.org/preferences-service;1"]
111
                    .getService(Components.interfaces.nsIPrefBranch);
112
  gOS   = Components.classes["@mozilla.org/observer-service;1"]
113
                    .getService(Components.interfaces.nsIObserverService);
114
  gRDF  = Components.classes["@mozilla.org/rdf/rdf-service;1"]
115
                    .getService(Components.interfaces.nsIRDFService);
116
  
117
  this.watchForUpdates();
118
119
  var pbi = gPref.QueryInterface(Components.interfaces.nsIPrefBranchInternal);
120
  pbi.addObserver(PREF_UPDATE_APP_AUTOUPDATEENABLED, this, false);
121
  pbi.addObserver(PREF_UPDATE_APP_ENABLED, this, false);
122
  pbi.addObserver(PREF_UPDATE_EXTENSIONS_AUTOUPDATEENABLED, this, false);
123
  pbi.addObserver(PREF_UPDATE_EXTENSIONS_ENABLED, this, false);
124
  pbi.addObserver(PREF_UPDATE_INTERVAL, this, false);
125
  pbi.addObserver(PREF_UPDATE_APP_INTERVAL, this, false);
126
  pbi.addObserver(PREF_UPDATE_EXTENSIONS_INTERVAL, this, false);
127
128
  // Observe xpcom-shutdown to unhook pref branch observers above to avoid 
129
  // shutdown leaks.
130
  gOS.addObserver(this, "xpcom-shutdown", false);
131
  
132
  // Reset update state from previous session if an app update was installed.
133
  if (gPref.prefHasUserValue(PREF_UPDATE_APP_PERFORMED)) 
134
    gPref.clearUserPref(PREF_UPDATE_APP_PERFORMED);
135
}
136
137
nsUpdateService.prototype = {
138
  _updateObserver: null,
139
  _appAutoUpdateEnabled: true,
140
  _extAutoUpdateEnabled: true,
141
    
142
  /////////////////////////////////////////////////////////////////////////////
143
  // nsIUpdateService
144
  watchForUpdates: function nsUpdateService_watchForUpdates ()
145
  {
146
    // This is called when the app starts, so check to see if the time interval
147
    // expired between now and the last time an automated update was performed.
148
    // now is the same one that was started last time. 
149
    this._appAutoUpdateEnabled = gPref.getBoolPref(PREF_UPDATE_APP_AUTOUPDATEENABLED);
150
    this._extAutoUpdateEnabled = gPref.getBoolPref(PREF_UPDATE_EXTENSIONS_AUTOUPDATEENABLED);
151
    if (!this._appAutoUpdateEnabled && !this._extAutoUpdateEnabled)
152
      return;
153
154
    this._makeTimer(gPref.getIntPref(PREF_UPDATE_INTERVAL));
155
  },
156
  
157
  _getAllowedTypes: function nsUpdateService__getAllowedTypes(aRequestedTypes)
158
  {
159
    // Figure out what types we're allowed to update. These options
160
    // differ from PREF_UPDATE_*_AUTOUPDATEENABLED since they effectively
161
    // shut down the update UI if the administrator/distributor has configured
162
    // a build to have disallowed these types of update.
163
    var extUpdateEnabled = gPref.getBoolPref(PREF_UPDATE_EXTENSIONS_ENABLED);
164
    var appUpdateEnabled = gPref.getBoolPref(PREF_UPDATE_APP_ENABLED);
165
    
166
    var types = 0;
167
    if (extUpdateEnabled) {
168
      if (aRequestedTypes & nsIUpdateItem.TYPE_EXTENSION)
169
        types |= nsIUpdateItem.TYPE_EXTENSION;
170
      if (aRequestedTypes & nsIUpdateItem.TYPE_THEME)
171
        types |= nsIUpdateItem.TYPE_THEME;
172
    }
173
    if (appUpdateEnabled && 
174
        (aRequestedTypes & nsIUpdateItem.TYPE_APP))
175
      types |= nsIUpdateItem.TYPE_APP;
176
177
    return types;
178
  },
179
  
180
  checkForUpdates: function nsUpdateService_checkForUpdates (aItems, aItemCount, aUpdateTypes, aSourceEvent, aParentWindow)
181
  {
182
    var types = this._getAllowedTypes(aUpdateTypes);
183
    
184
    // Nothing to update
185
    if (!types) {
186
      var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
187
                          .getService(Components.interfaces.nsIStringBundleService);
188
      var bundle = sbs.createBundle("chrome://mozapps/locale/update/update.properties");
189
      var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
190
                         .getService(Components.interfaces.nsIPromptService);
191
      ps.alert(aParentWindow, 
192
               bundle.GetStringFromName("updatesdisabledtitle"), 
193
               bundle.GetStringFromName("updatesdisabledmessage"));
194
      return;
195
    }
196
  
197
    switch (aSourceEvent) {
198
    case nsIUpdateService.SOURCE_EVENT_MISMATCH:
199
    case nsIUpdateService.SOURCE_EVENT_USER:
200
      if (aSourceEvent == nsIUpdateService.SOURCE_EVENT_USER && 
201
          gPref.getBoolPref(PREF_UPDATE_APP_PERFORMED)) {
202
        var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
203
                            .getService(Components.interfaces.nsIStringBundleService);
204
        var bundle = sbs.createBundle("chrome://mozapps/locale/update/update.properties");
205
        var brandBundle = sbs.createBundle("chrome://global/locale/brand.properties");
206
        var brandShortName = brandBundle.GetStringFromName("brandShortName");        
207
        var message = bundle.formatStringFromName("appupdateperformedmessage",
208
                                                  [brandShortName, brandShortName], 2);
209
        var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
210
                          .getService(Components.interfaces.nsIPromptService);
211
        ps.alert(aParentWindow, 
212
                 bundle.GetStringFromName("appupdateperformedtitle"), 
213
                 message);
214
        return;
215
      }
216
      
217
      var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
218
                         .getService(Components.interfaces.nsIWindowMediator);
219
      var wizard = wm.getMostRecentWindow("Update:Wizard");
220
      if (wizard)
221
        wizard.focus();
222
      else {
223
        var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
224
                          .getService(Components.interfaces.nsIWindowWatcher);
225
        var ary = Components.classes["@mozilla.org/supports-array;1"]
226
                            .createInstance(Components.interfaces.nsISupportsArray);
227
        var updateTypes = Components.classes["@mozilla.org/supports-PRUint8;1"]
228
                                    .createInstance(Components.interfaces.nsISupportsPRUint8);
229
        updateTypes.data = types;
230
        ary.AppendElement(updateTypes);
231
        var sourceEvent = Components.classes["@mozilla.org/supports-PRUint8;1"]
232
                                    .createInstance(Components.interfaces.nsISupportsPRUint8);
233
        sourceEvent.data = aSourceEvent;
234
        ary.AppendElement(sourceEvent);
235
        for (var i = 0; i < aItems.length; ++i)
236
          ary.AppendElement(aItems[i]);
237
238
        var features = "chrome,centerscreen";
239
        if (aSourceEvent == nsIUpdateService.SOURCE_EVENT_MISMATCH) {
240
          features += ",modal"; // Must block in mismatch mode since there's 
241
                                // no main evt loop yet. 
242
        }
243
        // This *must* be modal so as not to break startup! This code is invoked before
244
        // the main event loop is initiated (via checkForMismatches).
245
        ww.openWindow(aParentWindow, "chrome://mozapps/content/update/update.xul", 
246
                      "", features, ary);
247
      }
248
      break;
249
    case nsIUpdateService.SOURCE_EVENT_BACKGROUND:
250
      // Rather than show a UI, call the checkForUpdates function directly here. 
251
      // The Browser's inline front end update notification system listens for the
252
      // updates that this function broadcasts.
253
      this.checkForUpdatesInternal([], 0, types, aSourceEvent);
254
255
      break;
256
    }  
257
  },
258
  
259
  _canUpdate: function (aPreference, aSourceEvent, aUpdateTypes)
260
  {
261
    // Always can update if the autoupdate preference is set, otherwise, 
262
    // allow updates only when not in backround update mode, i.e. when the user
263
    // explicitly asked. 
264
    return aPreference ? true 
265
                       : aSourceEvent != nsIUpdateService.SOURCE_EVENT_BACKGROUND;
266
  },
267
  
268
  checkForUpdatesInternal: function nsUpdateService_checkForUpdatesInternal (aItems, aItemCount, aUpdateTypes, aSourceEvent)
269
  {
270
    var types = this._getAllowedTypes(aUpdateTypes);
271
272
    // Listen for notifications sent out by the app updater (implemented here) and the
273
    // extension updater (implemented in nsExtensionItemUpdater)
274
    var canUpdate;
275
    this._updateObserver = new nsUpdateObserver(types, aSourceEvent, this);
276
    var os = Components.classes["@mozilla.org/observer-service;1"]
277
                       .getService(Components.interfaces.nsIObserverService);
278
    if (types & nsIUpdateItem.TYPE_APP) {
279
      if (this._canUpdate(this._appAutoUpdateEnabled, aSourceEvent, types)) {
280
        gOS.addObserver(this._updateObserver, "Update:App:Ended", false);
281
        
282
        this._currentVersion  = new nsAppUpdateInfo();
283
        this._newestVersion   = new nsAppUpdateInfo();
284
285
        if (!this._updateObserver.appUpdater) {
286
          this._updateObserver.appUpdater = new nsAppUpdater(this);
287
          this._updateObserver.appUpdater.checkForUpdates();
288
        }
289
      }
290
    }
291
    if (types & nsIUpdateItem.TYPE_ADDON) { // TYPE_EXTENSION, TYPE_ANY, etc.
292
      if (this._canUpdate(this._extAutoUpdateEnabled, aSourceEvent, types)) {
293
        gOS.addObserver(this._updateObserver, "Update:Extension:Started", false);
294
        gOS.addObserver(this._updateObserver, "Update:Extension:Item-Ended", false);
295
        gOS.addObserver(this._updateObserver, "Update:Extension:Ended", false);
296
297
        var em = Components.classes["@mozilla.org/extensions/manager;1"]
298
                           .getService(Components.interfaces.nsIExtensionManager);
299
        em.update(aItems, aItems.length, false);
300
      }
301
    }
302
    
303
    if (aSourceEvent == nsIUpdateService.SOURCE_EVENT_BACKGROUND && 
304
        (this._appAutoUpdateEnabled || this._extAutoUpdateEnabled)) {
305
      if (types & nsIUpdateItem.TYPE_ADDON)
306
        gPref.setIntPref(PREF_UPDATE_EXTENSIONS_LASTUPDATEDATE, this._nowInMilliseconds / 1000);
307
      if (types & nsIUpdateItem.TYPE_APP)
308
        gPref.setIntPref(PREF_UPDATE_APP_LASTUPDATEDATE, this._nowInMilliseconds / 1000);
309
    }
310
  },
311
  
312
  get updateCount()
313
  {
314
    // The number of available updates is the number of extension/theme/other
315
    // updates + 1 for an application update, if one is available.
316
    var updateCount = this.extensionUpdatesAvailable;
317
    if (this.appUpdatesAvailable)
318
      ++updateCount;
319
    return updateCount;
320
  },
321
  
322
  get updateSeverity()
323
  {
324
    return gPref.getIntPref(PREF_UPDATE_SEVERITY);
325
  },
326
  
327
  _appUpdatesAvailable: undefined,
328
  get appUpdatesAvailable() 
329
  {
330
    if (this._appUpdatesAvailable === undefined) {
331
      return (gPref.prefHasUserValue(PREF_UPDATE_APP_UPDATESAVAILABLE) && 
332
              gPref.getBoolPref(PREF_UPDATE_APP_UPDATESAVAILABLE));
333
    }
334
    return this._appUpdatesAvailable;
335
  },
336
  set appUpdatesAvailable(aValue)
337
  {
338
    this._appUpdatesAvailable = aValue;
339
    return aValue;
340
  },
341
  
342
  _extensionUpdatesAvailable: undefined,
343
  get extensionUpdatesAvailable()
344
  {
345
    if (this._extensionUpdatesAvailable === undefined)
346
      return gPref.getIntPref(PREF_UPDATE_EXTENSIONS_COUNT);
347
    return this._extensionUpdatesAvailable;
348
  },
349
  set extensionUpdatesAvailable(aValue)
350
  {
351
    this._extensionUpdatesAvailable = aValue;
352
    return aValue;
353
  },
354
  
355
  _newestVersion: null,
356
  get newestVersion()
357
  {
358
    return this._newestVersion;
359
  },
360
  _currentVersion: null,
361
  get currentVersion()
362
  {
363
    return this._currentVersion;
364
  },
365
    
366
  /////////////////////////////////////////////////////////////////////////////
367
  // nsITimerCallback
368
  _shouldUpdate: function nsUpdateService__shouldUpdate (aIntervalPref, aLastCheckPref)
369
  {
370
    var interval = gPref.getIntPref(aIntervalPref);
371
    var lastUpdateTime = gPref.getIntPref(aLastCheckPref);
372
    return ((Math.round(this._nowInMilliseconds/1000) - lastUpdateTime) > Math.round(interval/1000));
373
  },
374
  
375
  notify: function nsUpdateService_notify (aTimer)
376
  {
377
    var types = 0;
378
    if (this._shouldUpdate(PREF_UPDATE_EXTENSIONS_INTERVAL, 
379
                           PREF_UPDATE_EXTENSIONS_LASTUPDATEDATE)) {
380
      types |= nsIUpdateItem.TYPE_ADDON;         
381
    }
382
    if (this._shouldUpdate(PREF_UPDATE_APP_INTERVAL,
383
                           PREF_UPDATE_APP_LASTUPDATEDATE)) {
384
      types |= nsIUpdateItem.TYPE_APP;         
385
    }
386
    if (types)
387
      this.checkForUpdatesInternal([], 0, types, 
388
                                   nsIUpdateService.SOURCE_EVENT_BACKGROUND);
389
  },
390
391
  /////////////////////////////////////////////////////////////////////////////
392
  // nsIObserver
393
  observe: function nsUpdateService_observe (aSubject, aTopic, aData)
394
  {
395
    switch (aTopic) {
396
    case "nsPref:changed":
397
      var needsNotification = false;
398
      switch (aData) {
399
      case PREF_UPDATE_APP_AUTOUPDATEENABLED:
400
      case PREF_UPDATE_APP_ENABLED:
401
        this._appAutoUpdateEnabled = gPref.getBoolPref(PREF_UPDATE_APP_AUTOUPDATEENABLED);
402
        if (!this._appAutoUpdateEnabled) {
403
          this._clearAppUpdatePrefs();
404
          needsNotification = true;
405
        }
406
        else {
407
          // Do an initial check NOW to update any FE components and kick off the
408
          // timer. 
409
          this.checkForUpdatesInternal([], 0, nsIUpdateItem.TYPE_APP, 
410
                                       nsIUpdateService.SOURCE_EVENT_BACKGROUND);
411
        }
412
        break;
413
      case PREF_UPDATE_EXTENSIONS_AUTOUPDATEENABLED:
414
      case PREF_UPDATE_EXTENSIONS_ENABLED:
415
        this._extAutoUpdateEnabled = gPref.getBoolPref(PREF_UPDATE_EXTENSIONS_AUTOUPDATEENABLED);
416
        if (!this._extAutoUpdateEnabled) {
417
          // Unset prefs used by the update service to signify extension updates
418
          if (gPref.prefHasUserValue(PREF_UPDATE_EXTENSIONS_COUNT))
419
            gPref.clearUserPref(PREF_UPDATE_EXTENSIONS_COUNT);
420
          needsNotification = true;
421
        }
422
        else {
423
          // Do an initial check NOW to update any FE components and kick off the
424
          // timer. 
425
          this.checkForUpdatesInternal([], 0, nsIUpdateItem.TYPE_ADDON, 
426
                                       nsIUpdateService.SOURCE_EVENT_BACKGROUND);
427
        }
428
        break;
429
      case PREF_UPDATE_INTERVAL:
430
      case PREF_UPDATE_APP_INTERVAL:
431
      case PREF_UPDATE_EXTENSIONS_INTERVAL:
432
        this._makeTimer(gPref.getIntPref(PREF_UPDATE_INTERVAL));
433
        break;
434
      }
435
    
436
      if (needsNotification) {
437
        var os = Components.classes["@mozilla.org/observer-service;1"]
438
                           .getService(Components.interfaces.nsIObserverService);
439
        var backgroundEvt = Components.interfaces.nsIUpdateService.SOURCE_EVENT_BACKGROUND;
440
        gOS.notifyObservers(null, "Update:Ended", backgroundEvt.toString());
441
      }
442
      break;
443
    case "xpcom-shutdown":
444
      gOS.removeObserver(this, "xpcom-shutdown");    
445
      
446
      // Clean up held observers etc to avoid leaks. 
447
      var pbi = gPref.QueryInterface(Components.interfaces.nsIPrefBranchInternal);
448
      pbi.removeObserver(PREF_UPDATE_APP_AUTOUPDATEENABLED, this);
449
      pbi.removeObserver(PREF_UPDATE_APP_ENABLED, this);
450
      pbi.removeObserver(PREF_UPDATE_EXTENSIONS_AUTOUPDATEENABLED, this);
451
      pbi.removeObserver(PREF_UPDATE_EXTENSIONS_ENABLED, this);
452
      pbi.removeObserver(PREF_UPDATE_INTERVAL, this);
453
      pbi.removeObserver(PREF_UPDATE_EXTENSIONS_INTERVAL, this);
454
    
455
      // Release strongly held services.
456
      gPref = null;
457
      gRDF  = null;
458
      gOS   = null;
459
      if (this._timer) {
460
        this._timer.cancel();
461
        this._timer = null;
462
      }
463
      break;
464
    }  
465
  },
466
467
  /////////////////////////////////////////////////////////////////////////////
468
  // nsUpdateService
469
  _timer: null,
470
  _makeTimer: function nsUpdateService__makeTimer (aDelay)
471
  {
472
    if (!this._timer) 
473
      this._timer = Components.classes["@mozilla.org/timer;1"]
474
                              .createInstance(Components.interfaces.nsITimer);
475
    this._timer.cancel();
476
    this._timer.initWithCallback(this, aDelay, 
477
                                 Components.interfaces.nsITimer.TYPE_REPEATING_SLACK);
478
  },
479
  
480
  get _nowInMilliseconds ()
481
  {
482
    var d = new Date();
483
    return Date.UTC(d.getUTCFullYear(), 
484
                    d.getUTCMonth(),
485
                    d.getUTCDay(),
486
                    d.getUTCHours(),
487
                    d.getUTCMinutes(),
488
                    d.getUTCSeconds(),
489
                    d.getUTCMilliseconds());
490
  },
491
  
492
  _clearAppUpdatePrefs: function nsUpdateService__clearAppUpdatePrefs ()
493
  {
494
    // Unset prefs used by the update service to signify application updates
495
    if (gPref.prefHasUserValue(PREF_UPDATE_APP_UPDATESAVAILABLE))
496
      gPref.clearUserPref(PREF_UPDATE_APP_UPDATESAVAILABLE);
497
  },
498
499
  /////////////////////////////////////////////////////////////////////////////
500
  // nsISupports
501
  QueryInterface: function nsUpdateService_QueryInterface (aIID) 
502
  {
503
    if (!aIID.equals(Components.interfaces.nsIUpdateService) &&
504
        !aIID.equals(Components.interfaces.nsIObserver) && 
505
        !aIID.equals(Components.interfaces.nsISupports))
506
      throw Components.results.NS_ERROR_NO_INTERFACE;
507
    return this;
508
  }
509
};
510
511
function nsUpdateObserver(aUpdateTypes, aSourceEvent, aService)
512
{
513
  this._updateTypes = aUpdateTypes;
514
  this._sourceEvent = aSourceEvent;
515
  this._service = aService;
516
}
517
518
nsUpdateObserver.prototype = {
519
  _updateTypes: 0,
520
  _sourceEvent: 0,
521
  _updateState: 0,
522
  _endedTimer : null,
523
  
524
  appUpdater: null,
525
  
526
  get _doneUpdating()
527
  {
528
    var notBackground = this._sourceEvent != nsIUpdateService.SOURCE_EVENT_BACKGROUND;
529
    var canUpdateApp = this._service._appAutoUpdateEnabled || 
530
                        (notBackground ? gPref.getBoolPref(PREF_UPDATE_APP_ENABLED) 
531
                                       : false);
532
    var canUpdateExt = this._service._extAutoUpdateEnabled || 
533
                        (notBackground ? gPref.getBoolPref(PREF_UPDATE_EXTENSIONS_ENABLED) 
534
                                       : false);
535
   
536
    var test = 0;
537
    var updatingApp = (this._updateTypes & nsIUpdateItem.TYPE_APP) && 
538
                       canUpdateApp;
539
    var updatingExt = (this._updateTypes & nsIUpdateItem.TYPE_ADDON) &&
540
                       canUpdateExt;
541
    
542
    if (updatingApp)
543
      test |= UPDATED_APP;
544
    if (updatingExt)
545
      test |= UPDATED_EXTENSIONS;
546
    
547
    return (this._updateState & test) == test;
548
  },
549
  
550
  /////////////////////////////////////////////////////////////////////////////
551
  // nsIObserver
552
  observe: function nsUpdateObserver_observe (aSubject, aTopic, aData)
553
  {
554
    switch (aTopic) {
555
    case "Update:Extension:Started":
556
      // Reset the count
557
      gPref.setIntPref(PREF_UPDATE_EXTENSIONS_COUNT, 0);
558
      break;
559
    case "Update:Extension:Item-Ended":
560
      var newCount = gPref.getIntPref(PREF_UPDATE_EXTENSIONS_COUNT) + 1;
561
      gPref.setIntPref(PREF_UPDATE_EXTENSIONS_COUNT, newCount);
562
      var threshold = gPref.getIntPref(PREF_UPDATE_EXTENSIONS_SEVERITY_THRESHOLD);
563
      if (this._service.updateSeverity < nsIUpdateService.SEVERITY_HIGH) {
564
        if (newCount > threshold)
565
          gPref.setIntPref(PREF_UPDATE_SEVERITY, nsIUpdateService.SEVERITY_MEDIUM);
566
        else
567
          gPref.setIntPref(PREF_UPDATE_SEVERITY, nsIUpdateService.SEVERITY_LOW);
568
      }
569
      break;
570
    case "Update:Extension:Ended":
571
      this._updateState |= UPDATED_EXTENSIONS;
572
      break;
573
    case "Update:App:Ended":
574
      this._updateState |= UPDATED_APP;
575
      
576
      this.appUpdater.destroy();
577
      this.appUpdater = null;
578
      break;
579
    }
580
    
581
    if (this._doneUpdating) {
582
      // Do the finalize stuff on a timer to let other observers have a chance to
583
      // handle
584
      if (this._endedTimer)
585
        this._endedTimer.cancel();
586
      this._endedTimer = Components.classes["@mozilla.org/timer;1"]
587
                                   .createInstance(Components.interfaces.nsITimer);
588
      this._endedTimer.initWithCallback(this, 0, 
589
                                        Components.interfaces.nsITimer.TYPE_ONE_SHOT);
590
    }
591
  },
592
  
593
  notify: function nsUpdateObserver_notify (aTimer)
594
  {
595
    // The Inline Browser Update UI uses this notification to refresh its update 
596
    // UI if necessary.
597
    gOS.notifyObservers(null, "Update:Ended", this._sourceEvent.toString());
598
599
    // Show update notification UI if:
600
    // We were updating any types and any item was found
601
    // We were updating extensions and an extension update was found.
602
    // We were updating app and an app update was found. 
603
    var updatesAvailable = (((this._updateTypes & nsIUpdateItem.TYPE_EXTENSION) || 
604
                              (this._updateTypes & nsIUpdateItem.TYPE_ANY)) && 
605
                            gPref.getIntPref(PREF_UPDATE_EXTENSIONS_COUNT) != 0);
606
    if (!updatesAvailable) {
607
      updatesAvailable = ((this._updateTypes & nsIUpdateItem.TYPE_APP) || 
608
                          (this._updateTypes & nsIUpdateItem.TYPE_ANY)) && 
609
                          gPref.getBoolPref(PREF_UPDATE_APP_UPDATESAVAILABLE);
610
    }
611
    
612
    var showNotification = gPref.getBoolPref(PREF_UPDATE_SHOW_SLIDING_NOTIFICATION);
613
    if (showNotification && updatesAvailable && 
614
        this._sourceEvent == nsIUpdateService.SOURCE_EVENT_BACKGROUND) {
615
      var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
616
                          .getService(Components.interfaces.nsIStringBundleService);
617
      var bundle = sbs.createBundle("chrome://mozapps/locale/update/update.properties");
618
619
      var alertTitle = bundle.GetStringFromName("updatesAvailableTitle");
620
      var alertText = bundle.GetStringFromName("updatesAvailableText");
621
      
622
      var alerts = Components.classes["@mozilla.org/alerts-service;1"]
623
                            .getService(Components.interfaces.nsIAlertsService);
624
      alerts.showAlertNotification("chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png",
625
                                    alertTitle, alertText, true, "", this);
626
    }
627
628
    this.destroy();
629
  },
630
631
  destroy: function nsUpdateObserver_destroy ()
632
  {
633
    try { gOS.removeObserver(this, "Update:Extension:Started");    } catch (e) { }
634
    try { gOS.removeObserver(this, "Update:Extension:Item-Ended"); } catch (e) { }
635
    try { gOS.removeObserver(this, "Update:Extension:Ended");      } catch (e) { }
636
    try { gOS.removeObserver(this, "Update:App:Ended");            } catch (e) { }
637
    
638
    if (this._endedTimer) {
639
      this._endedTimer.cancel();
640
      this._endedTimer = null;
641
    }
642
  },
643
644
  ////////////////////////////////////////////////////////////////////////////
645
  // nsIAlertListener
646
  onAlertFinished: function nsUpdateObserver_onAlertFinished ()
647
  {
648
  },
649
  
650
  onAlertClickCallback: function nsUpdateObserver_onAlertClickCallback (aCookie)
651
  {
652
    var updates = Components.classes["@mozilla.org/updates/update-service;1"]
653
                            .getService(Components.interfaces.nsIUpdateService);
654
    updates.checkForUpdates([], 0, Components.interfaces.nsIUpdateItem.TYPE_ANY, 
655
                            Components.interfaces.nsIUpdateService.SOURCE_EVENT_USER,
656
                            null);
657
  },
658
  
659
  /////////////////////////////////////////////////////////////////////////////
660
  // nsISupports
661
  QueryInterface: function nsUpdateObserver_QueryInterface (aIID) 
662
  {
663
    if (!aIID.equals(Components.interfaces.nsIObserver) &&
664
        !aIID.equals(Components.interfaces.nsIAlertListener) && 
665
        !aIID.equals(Components.interfaces.nsISupports))
666
      throw Components.results.NS_ERROR_NO_INTERFACE;
667
    return this;
668
  }
669
};
670
671
///////////////////////////////////////////////////////////////////////////////
672
// App Updater
673
function nsAppUpdater(aUpdateService)
674
{
675
  this._service = aUpdateService;
676
}
677
678
nsAppUpdater.prototype = {
679
  _service    : null,
680
681
  checkForUpdates: function ()
682
  {
683
    var dsURI = gPref.getComplexValue(PREF_UPDATE_APP_URI, 
684
                                      Components.interfaces.nsIPrefLocalizedString).data;
685
    dsURI += "?" + Math.round(Math.random() * 1000);
686
    this._ds = gRDF.GetDataSource(dsURI);
687
    var rds = this._ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource)
688
    if (rds.loaded)
689
      this.onDatasourceLoaded(this._ds);
690
    else {
691
      var sink = this._ds.QueryInterface(Components.interfaces.nsIRDFXMLSink);
692
      
693
      // Creates a strong ref that holds this object past when it falls out of
694
      // scope in the calling function
695
      sink.addXMLSinkObserver(this);
696
    }
697
  },
698
  
699
  destroy: function ()
700
  {
701
    var sink = this._ds.QueryInterface(Components.interfaces.nsIRDFXMLSink);
702
    sink.removeXMLSinkObserver(this);
703
    this._service = null;
704
  },
705
  
706
  /////////////////////////////////////////////////////////////////////////////
707
  //
708
  _ncR: function nsUpdateService__ncR (aProperty)
709
  {
710
    return gRDF.GetResource("http://home.netscape.com/NC-rdf#" + aProperty);
711
  },
712
  
713
  _getPropertyFromResource: function nsAppUpdater__getPropertyFromResource (aDataSource,
714
                                                                            aSourceResource, 
715
                                                                            aProperty)
716
  {
717
    var rv;
718
    try {
719
      var property = gRDF.GetResource(APP_NS(aProperty));
720
      rv = this._stringData(aDataSource.GetTarget(aSourceResource, property, true));
721
      if (rv == "--")
722
        throw Components.results.NS_ERROR_FAILURE;
723
    }
724
    catch (e) { 
725
      return null;
726
    }
727
    return rv;
728
  },
729
730
  _stringData: function nsAppUpdater__stringData (aLiteralOrResource)
731
  {
732
    try {
733
      var obj = aLiteralOrResource.QueryInterface(Components.interfaces.nsIRDFLiteral);
734
      return obj.Value;
735
    }
736
    catch (e) {
737
      try {
738
        obj = aLiteralOrResource.QueryInterface(Components.interfaces.nsIRDFResource);
739
        return obj.Value;
740
      }
741
      catch (e) {}
742
    }
743
    return "--";
744
  },
745
746
  /////////////////////////////////////////////////////////////////////////////
747
  //
748
  onDatasourceLoaded: function nsAppUpdater_onDatasourceLoaded (aDataSource)
749
  {
750
    var appID = gPref.getCharPref(PREF_APP_ID);
751
    var appVersion = gPref.getCharPref(PREF_APP_VERSION);
752
    
753
    var appResource = gRDF.GetResource("urn:mozilla:app:" + appID);
754
    var updatesArc = gRDF.GetResource(APP_NS("updates"));
755
    var updatesResource = aDataSource.GetTarget(appResource, updatesArc, true);
756
    
757
    try {
758
      updatesResource = updatesResource.QueryInterface(Components.interfaces.nsIRDFResource);
759
    }
760
    catch (e) { 
761
      gOS.notifyObservers(null, "Update:App:Error", "");
762
      gOS.notifyObservers(null, "Update:App:Ended", "");
763
      return; 
764
    }
765
    
766
    var cu = Components.classes["@mozilla.org/rdf/container-utils;1"]
767
                       .getService(Components.interfaces.nsIRDFContainerUtils);
768
    if (cu.IsContainer(aDataSource, updatesResource)) {
769
      var c = Components.classes["@mozilla.org/rdf/container;1"]
770
                        .getService(Components.interfaces.nsIRDFContainer);
771
      c.Init(aDataSource, updatesResource);
772
      
773
      var versionChecker = Components.classes["@mozilla.org/updates/version-checker;1"]
774
                                     .getService(Components.interfaces.nsIVersionChecker);
775
      
776
      var newestVersionObj = { version: appVersion, resource: null };
777
      var updates = c.GetElements();
778
      while (updates.hasMoreElements()) {
779
        var update = updates.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
780
        var version = this._getPropertyFromResource(aDataSource, update, "version");
781
        if (!version)
782
          continue;
783
        if (versionChecker.compare(appVersion, version) == 0)
784
          this._parseVersionData(aDataSource, update, this._service._currentVersion);
785
        else if (versionChecker.compare(newestVersionObj.version, version) < 0) {
786
          newestVersionObj.version = version;
787
          newestVersionObj.resource = update;
788
        }
789
      }
790
      if (newestVersionObj.resource)
791
        this._parseVersionData(aDataSource, newestVersionObj.resource, this._service._newestVersion);
792
      
793
      // There is a newer version of the app available or there are any critical
794
      // patches available update the severity and available updates preferences.
795
      // XXXben also note if there are langpacks available that match the user's
796
      //        preference if they previously installed an app update when a 
797
      //        langpack for their language was not available and they used another
798
      //        in the meantime. 
799
      var haveLanguage = false;
800
      var patches = this._service._currentVersion.patches;
801
      var languages = this._service._newestVersion.languages;
802
      if (languages) {
803
        var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
804
                           .getService(Components.interfaces.nsIXULChromeRegistry);
805
        var selectedLocale = cr.getSelectedLocale("global");
806
        for (var i = 0; i < languages.length; ++i) {
807
          if (languages[i].internalName == selectedLocale)
808
            haveLanguage = true;
809
        }
810
      }
811
      
812
      if ((haveLanguage && (newestVersionObj.version != appVersion)) || 
813
          (patches && patches.length > 0)) {
814
        gPref.setIntPref(PREF_UPDATE_SEVERITY, 2);
815
        gPref.setBoolPref(PREF_UPDATE_APP_UPDATESAVAILABLE, true);
816
      }
817
      else
818
        gPref.setBoolPref(PREF_UPDATE_APP_UPDATESAVAILABLE, false);
819
820
      if (!gPref.getBoolPref(PREF_UPDATE_APP_UPDATESAVAILABLE)) {
821
        this._service._clearAppUpdatePrefs();
822
823
        // Lower the severity to reflect the fact that there are now only Extension/
824
        // Theme updates available
825
        var newCount = gPref.getIntPref(PREF_UPDATE_EXTENSIONS_COUNT);
826
        var threshold = gPref.getIntPref(PREF_UPDATE_EXTENSIONS_SEVERITY_THRESHOLD);
827
        if (newCount >= threshold)
828
          gPref.setIntPref(PREF_UPDATE_SEVERITY, nsIUpdateService.SEVERITY_MEDIUM);
829
        else
830
          gPref.setIntPref(PREF_UPDATE_SEVERITY, nsIUpdateService.SEVERITY_LOW);
831
      }
832
    }
833
834
    // The Update Wizard uses this notification to determine that the application
835
    // update process is now complete. 
836
    gOS.notifyObservers(null, "Update:App:Ended", "");
837
  },
838
  
839
  _parseVersionData: function nsAppUpdater__parseVersionData (aDataSource, 
840
                                                              aUpdateResource, 
841
                                                              aTargetObj)
842
  {
843
    aTargetObj.updateVersion          = this._getPropertyFromResource(aDataSource, aUpdateResource, "version");
844
    aTargetObj.updateDisplayVersion   = this._getPropertyFromResource(aDataSource, aUpdateResource, "displayVersion");
845
    if (!aTargetObj.updateDisplayVersion)
846
      aTargetObj.updateDisplayVersion = this._getPropertyFromResource(aDataSource, aUpdateResource, "version");
847
    aTargetObj.updateInfoURL          = this._getPropertyFromResource(aDataSource, aUpdateResource, "infoURL");
848
    
849
    aTargetObj.features   = this._parseUpdateCollection(aDataSource, aUpdateResource, "features");
850
    aTargetObj.files      = this._parseUpdateCollection(aDataSource, aUpdateResource, "files");
851
    aTargetObj.optional   = this._parseUpdateCollection(aDataSource, aUpdateResource, "optional");
852
    aTargetObj.languages  = this._parseUpdateCollection(aDataSource, aUpdateResource, "languages");
853
    aTargetObj.patches    = this._parseUpdateCollection(aDataSource, aUpdateResource, "patches");
854
  },
855
  
856
  _parseUpdateCollection: function nsAppUpdater__parseUpdateCollection (aDataSource, 
857
                                                                        aUpdateResource, 
858
                                                                        aCollectionName)
859
  {
860
    if (!aUpdateResource)
861
      return null;
862
  
863
    var result = [];
864
    
865
    var collectionArc = gRDF.GetResource(APP_NS(aCollectionName));
866
    var collectionResource = aDataSource.GetTarget(aUpdateResource, collectionArc, true);
867
    
868
    try {
869
      collectionResource = collectionResource.QueryInterface(Components.interfaces.nsIRDFResource);
870
    }
871
    catch (e) { return null; }
872
    
873
    var cu = Components.classes["@mozilla.org/rdf/container-utils;1"]
874
                       .getService(Components.interfaces.nsIRDFContainerUtils);
875
    if (cu.IsContainer(aDataSource, collectionResource)) {
876
      var c = Components.classes["@mozilla.org/rdf/container;1"]
877
                        .getService(Components.interfaces.nsIRDFContainer);
878
      c.Init(aDataSource, collectionResource);
879
      
880
      var elements = c.GetElements();
881
      var fileArc = gRDF.GetResource(APP_NS("file"));
882
      var platform = getOSKey();
883
      while (elements.hasMoreElements()) {
884
        var element = elements.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
885
        var info = new nsAppUpdateInfoItem();
886
        info.name          = this._getPropertyFromResource(aDataSource, element, "name");
887
        info.internalName  = this._getPropertyFromResource(aDataSource, element, "internalName");
888
        
889
        // Each Component has a set of app:file arcs out, which reference resources with two 
890
        // properties: app:platform and app:URL. If we find a resource whose app:platform value
891
        // matches the platform we're running on, we use the app:URL property on that resource
892
        // as the XPI URL, otherwise we use the default app:URL property on the Component
893
        // resource. (It must be a cross-platform piece, e.g. a language pack)
894
        // XXXben - what to do when platform not supported? We need some way to abort 
895
        //          and tell the app that this update is not available. 
896
        var files = aDataSource.GetTargets(element, fileArc, true);
897
        while (files.hasMoreElements()) {
898
          var file = files.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
899
          if (platform == this._getPropertyFromResource(aDataSource, file, "platform")) {
900
            info.URL = this._getPropertyFromResource(aDataSource, file, "URL");
901
            break;
902
          }
903
        }
904
        if (!info.URL)
905
          info.URL         = this._getPropertyFromResource(aDataSource, element, "URL");
906
        info.infoURL       = this._getPropertyFromResource(aDataSource, element, "infoURL");
907
        info.description   = this._getPropertyFromResource(aDataSource, element, "description");
908
        result.push(info);
909
      }
910
    }
911
912
    return result;
913
  },
914
  
915
  onDatasourceError: function (aStatus, aErrorMsg)
916
  {
917
    gOS.notifyObservers(null, "Update:App:Error", "");
918
    gOS.notifyObservers(null, "Update:App:Ended", "");
919
  },
920
  
921
  /////////////////////////////////////////////////////////////////////////////
922
  // nsIRDFXMLSinkObserver
923
  onBeginLoad: function(aSink)
924
  {
925
  },
926
  onInterrupt: function(aSink)
927
  {
928
  },
929
  onResume: function(aSink)
930
  {
931
  },
932
  
933
  onEndLoad: function(aSink)
934
  {
935
    try {
936
      this._ds = aSink.QueryInterface(Components.interfaces.nsIRDFDataSource);
937
      this.onDatasourceLoaded(this._ds);
938
    }
939
    catch (e) { }
940
  },
941
  
942
  onError: function(aSink, aStatus, aErrorMsg)
943
  {
944
    try {
945
      this._ds = aSink.QueryInterface(Components.interfaces.nsIRDFDataSource);
946
      this.onDatasourceError(aStatus, aErrorMsg);
947
    }
948
    catch (e) { }
949
  },
950
951
  /////////////////////////////////////////////////////////////////////////////
952
  // nsISupports
953
  QueryInterface: function nsAppUpdater_QueryInterface (aIID) 
954
  {
955
    if (!aIID.equals(Components.interfaces.nsIRDFXMLSinkObserver) &&
956
        !aIID.equals(Components.interfaces.nsISupports))
957
      throw Components.results.NS_ERROR_NO_INTERFACE;
958
    return this;
959
  }
960
}
961
962
function UpdateItem ()
963
{
964
}
965
966
UpdateItem.prototype = {
967
  init: function UpdateItem_init (aID, 
968
                                  aVersion, 
969
                                  aMinAppVersion, 
970
                                  aMaxAppVersion, 
971
                                  aName, 
972
                                  aRow, 
973
                                  aXPIURL, 
974
                                  aIconURL, 
975
                                  aUpdateRDF, 
976
                                  aType)
977
  {
978
    this._id            = aID;
979
    this._version       = aVersion;
980
    this._minAppVersion = aMinAppVersion;
981
    this._maxAppVersion = aMaxAppVersion;
982
    this._name          = aName;
983
    this._row           = aRow;
984
    this._xpiURL        = aXPIURL;
985
    this._iconURL       = aIconURL;
986
    this._updateRDF     = aUpdateRDF;
987
    this._type          = aType;
988
  },
989
  
990
  get id()            { return this._id;            },
991
  get version()       { return this._version;       },
992
  get minAppVersion() { return this._minAppVersion; },
993
  get maxAppVersion() { return this._maxAppVersion; },
994
  get name()          { return this._name;          },
995
  get row()           { return this._row;           },
996
  get xpiURL()        { return this._xpiURL;        },
997
  get iconURL()       { return this._iconURL        },
998
  get updateRDF()     { return this._updateRDF;     },
999
  get type()          { return this._type;          },
1000
1001
  get objectSource()
1002
  {
1003
    return { id             : this._id, 
1004
             version        : this._version, 
1005
             minAppVersion  : this._minAppVersion,
1006
             maxAppVersion  : this._maxAppVersion,
1007
             name           : this._name, 
1008
             row            : this._row, 
1009
             xpiURL         : this._xpiURL, 
1010
             iconURL        : this._iconURL, 
1011
             updateRDF      : this._updateRDF,
1012
             type           : this._type 
1013
           }.toSource();
1014
  },
1015
1016
  /////////////////////////////////////////////////////////////////////////////
1017
  // nsISupports
1018
  QueryInterface: function UpdateItem_QueryInterface (aIID) 
1019
  {
1020
    if (!aIID.equals(Components.interfaces.nsIUpdateItem) &&
1021
        !aIID.equals(Components.interfaces.nsISupports))
1022
      throw Components.results.NS_ERROR_NO_INTERFACE;
1023
    return this;
1024
  }
1025
};
1026
1027
function nsAppUpdateInfoItem ()
1028
{
1029
}
1030
nsAppUpdateInfoItem.prototype = {
1031
  internalName: "",
1032
  name        : "",
1033
  URL         : "",
1034
  infoURL     : "",
1035
1036
  /////////////////////////////////////////////////////////////////////////////
1037
  // nsISupports
1038
  QueryInterface: function nsAppUpdater_QueryInterface (aIID) 
1039
  {
1040
    if (!aIID.equals(Components.interfaces.nsIAppUpdateInfo) &&
1041
        !aIID.equals(Components.interfaces.nsISupports))
1042
      throw Components.results.NS_ERROR_NO_INTERFACE;
1043
    return this;
1044
  }
1045
};
1046
1047
function nsAppUpdateInfo ()
1048
{
1049
}
1050
nsAppUpdateInfo.prototype = {
1051
  updateVersion       : "",
1052
  updateDisplayVersion: "",
1053
  updateInfoURL       : "",
1054
1055
  features  : [],
1056
  files     : [],
1057
  optional  : [],
1058
  languages : [],
1059
  patches   : [], 
1060
  
1061
  getCollection: function (aCollectionName, aItemCount)
1062
  {
1063
    var collection = aCollectionName in this ? this[aCollectionName] : null;
1064
    aItemCount.value = collection ? collection.length : 0;
1065
    return collection;
1066
  },
1067
1068
  /////////////////////////////////////////////////////////////////////////////
1069
  // nsISupports
1070
  QueryInterface: function nsAppUpdater_QueryInterface (aIID) 
1071
  {
1072
    if (!aIID.equals(Components.interfaces.nsIAppUpdateInfoCollection) &&
1073
        !aIID.equals(Components.interfaces.nsISupports))
1074
      throw Components.results.NS_ERROR_NO_INTERFACE;
1075
    return this;
1076
  }
1077
};
1078
1079
function Version(aMajor, aMinor, aRelease, aBuild, aPlus) 
1080
{ 
1081
  this.major    = aMajor    || 0;
1082
  this.minor    = aMinor    || 0;
1083
  this.release  = aRelease  || 0;
1084
  this.build    = aBuild    || 0;
1085
  this.plus     = aPlus     || 0;
1086
}
1087
1088
Version.prototype = {
1089
  toString: function Version_toString() 
1090
  {
1091
    return this.major + "." + this.minor + "." + this.subminor + "." + this.release + (this.plus ? "+" : "");
1092
  },
1093
  
1094
  compare: function (aVersion)
1095
  {
1096
    var fields = ["major", "minor", "release", "build", "plus"];
1097
    
1098
    for (var i = 0; i < fields.length; ++i) {
1099
      var field = fields[i];
1100
      if (aVersion[field] > this[field])
1101
        return -1;
1102
      else if (aVersion[field] < this[field])
1103
        return 1;
1104
    }
1105
    return 0;
1106
  }
1107
}
1108
1109
function nsVersionChecker()
1110
{
1111
}
1112
1113
nsVersionChecker.prototype = {
1114
  /////////////////////////////////////////////////////////////////////////////
1115
  // nsIVersionChecker
1116
  
1117
  // -ve      if B is newer
1118
  // equal    if A == B
1119
  // +ve      if A is newer
1120
  compare: function nsVersionChecker_compare (aVersionA, aVersionB)
1121
  {
1122
    var a = this._decomposeVersion(aVersionA);
1123
    var b = this._decomposeVersion(aVersionB);
1124
    
1125
    return a.compare(b);
1126
  },
1127
  
1128
  _decomposeVersion: function nsVersionChecker__decomposeVersion (aVersion)
1129
  {
1130
    var plus = 0;
1131
    if (aVersion.charAt(aVersion.length-1) == "+") {
1132
      aVersion = aVersion.substr(0, aVersion.length-1);
1133
      plus = 1;
1134
    }
1135
1136
    var parts = aVersion.split(".");
1137
    
1138
    return new Version(this._getValidInt(parts[0]),
1139
                       this._getValidInt(parts[1]),
1140
                       this._getValidInt(parts[2]),
1141
                       this._getValidInt(parts[3]),
1142
                       plus);
1143
  },
1144
  
1145
  _getValidInt: function nsVersionChecker__getValidInt (aPartString)
1146
  {
1147
    var integer = parseInt(aPartString);
1148
    if (isNaN(integer))
1149
      return 0;
1150
    return integer;
1151
  },
1152
  
1153
  isValidVersion: function nsVersionChecker_isValidVersion (aVersion)
1154
  {
1155
    var parts = aVersion.split(".");
1156
    if (parts.length == 0)
1157
      return false;
1158
    for (var i = 0; i < parts.length; ++i) {
1159
      var part = parts[i];
1160
      if (i == parts.length - 1) {
1161
        if (part.lastIndexOf("+") != -1) 
1162
          parts[i] = part.substr(0, part.length - 1);
1163
      }
1164
      var integer = parseInt(part);
1165
      if (isNaN(integer))
1166
        return false;
1167
    }
1168
    return true;
1169
  },
1170
1171
  /////////////////////////////////////////////////////////////////////////////
1172
  // nsISupports
1173
  QueryInterface: function nsVersionChecker_QueryInterface (aIID) 
1174
  {
1175
    if (!aIID.equals(Components.interfaces.nsIVersionChecker) &&
1176
        !aIID.equals(Components.interfaces.nsISupports))
1177
      throw Components.results.NS_ERROR_NO_INTERFACE;
1178
    return this;
1179
  }
1180
};
1181
1182
var gModule = {
1183
  _firstTime: true,
1184
  
1185
  registerSelf: function (aComponentManager, aFileSpec, aLocation, aType) 
1186
  {
1187
    if (this._firstTime) {
1188
      this._firstTime = false;
1189
      throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
1190
    }
1191
    aComponentManager = aComponentManager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
1192
    
1193
    for (var key in this._objects) {
1194
      var obj = this._objects[key];
1195
      aComponentManager.registerFactoryLocation(obj.CID, obj.className, obj.contractID,
1196
                                                aFileSpec, aLocation, aType);
1197
    }
1198
  },
1199
  
1200
  getClassObject: function (aComponentManager, aCID, aIID) 
1201
  {
1202
    if (!aIID.equals(Components.interfaces.nsIFactory))
1203
      throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
1204
1205
    for (var key in this._objects) {
1206
      if (aCID.equals(this._objects[key].CID))
1207
        return this._objects[key].factory;
1208
    }
1209
    
1210
    throw Components.results.NS_ERROR_NO_INTERFACE;
1211
  },
1212
  
1213
  _objects: {
1214
    manager: { CID: Components.ID("{B3C290A6-3943-4B89-8BBE-C01EB7B3B311}"),
1215
               contractID: "@mozilla.org/updates/update-service;1",
1216
               className: "Update Service",
1217
               factory: {
1218
                          createInstance: function (aOuter, aIID) 
1219
                          {
1220
                            if (aOuter != null)
1221
                              throw Components.results.NS_ERROR_NO_AGGREGATION;
1222
                            
1223
                            return (new nsUpdateService()).QueryInterface(aIID);
1224
                          }
1225
                        }
1226
             },
1227
    version: { CID: Components.ID("{9408E0A5-509E-45E7-80C1-0F35B99FF7A9}"),
1228
               contractID: "@mozilla.org/updates/version-checker;1",
1229
               className: "Version Checker",
1230
               factory: {
1231
                          createInstance: function (aOuter, aIID) 
1232
                          {
1233
                            if (aOuter != null)
1234
                              throw Components.results.NS_ERROR_NO_AGGREGATION;
1235
                            
1236
                            return (new nsVersionChecker()).QueryInterface(aIID);
1237
                          }
1238
                        }
1239
             },
1240
    item:    { CID: Components.ID("{F3294B1C-89F4-46F8-98A0-44E1EAE92518}"),
1241
               contractID: "@mozilla.org/updates/item;1",
1242
               className: "Extension Item",
1243
               factory: {
1244
                          createInstance: function (aOuter, aIID) 
1245
                          {
1246
                            if (aOuter != null)
1247
                              throw Components.results.NS_ERROR_NO_AGGREGATION;
1248
                            
1249
                            return new UpdateItem().QueryInterface(aIID);
1250
                          }
1251
                        } 
1252
             }  
1253
   },
1254
  
1255
  canUnload: function (aComponentManager) 
1256
  {
1257
    return true;
1258
  }
1259
};
1260
1261
function NSGetModule(compMgr, fileSpec) 
1262
{
1263
  return gModule;
1264
}
1265
1266
++ toolkit/mozapps/jar.mn
Lines 22-28 Link Here
22
* content/mozapps/extensions/finalize.xul                       (extensions/content/finalize.xul)
22
* content/mozapps/extensions/finalize.xul                       (extensions/content/finalize.xul)
23
* content/mozapps/update/update.xul                             (update/content/update.xul)
23
* content/mozapps/update/update.xul                             (update/content/update.xul)
24
* content/mozapps/update/update.js                              (update/content/update.js)
24
* content/mozapps/update/update.js                              (update/content/update.js)
25
* content/mozapps/update/updates.xml                            (update/content/updates.xml)
26
* content/mozapps/update/update.css                             (update/content/update.css)
25
* content/mozapps/update/update.css                             (update/content/update.css)
27
* content/mozapps/update/errors.xul                             (update/content/errors.xul)
26
* content/mozapps/update/errors.xul                             (update/content/errors.xul)
28
* content/mozapps/shared/richview.xml                           (shared/content/richview.xml)
27
* content/mozapps/shared/richview.xml                           (shared/content/richview.xml)
29
-- toolkit/themes/gnomestripe/global/button.css
28
++ toolkit/themes/gnomestripe/global/button.css
Lines 162-164 Link Here
162
  list-style-image: url("chrome://global/skin/tree/twisty-open.png"); 
162
  list-style-image: url("chrome://global/skin/tree/twisty-open.png"); 
163
}
163
}
164
164
165
-- toolkit/xre/nsXREDirProvider.cpp
165
/*
166
 * GNOME Stock Icon Styles
167
 */
168
169
button[icon="accept"] .button-icon {
170
  list-style-image: url("moz-icon://stock/gtk-ok?size=button");
171
}
172
173
button[icon="cancel"] .button-icon {
174
  list-style-image: url("moz-icon://stock/gtk-cancel?size=button");
175
}
176
177
button[icon="help"] .button-icon {
178
  list-style-image: url("moz-icon://stock/gtk-help?size=button");
179
}
180
181
button[icon="open"] .button-icon {
182
  list-style-image: url("moz-icon://stock/gtk-open?size=button");
183
}
184
185
button[icon="save"] .button-icon {
186
  list-style-image: url(moz-icon://stock/gtk-save?size=button);
187
}
188
189
button[icon="find"] .button-icon {
190
  list-style-image: url("moz-icon://stock/gtk-find?size=button");
191
}
192
193
button[icon="clear"] .button-icon {
194
  list-style-image: url("moz-icon://stock/gtk-clear?size=button");
195
}
196
197
button[icon="yes"] .button-icon {
198
  list-style-image: url("moz-icon://stock/gtk-yes?size=button");
199
}
200
201
button[icon="no"] .button-icon {
202
  list-style-image: url("moz-icon://stock/gtk-no?size=button");
203
}
204
205
button[icon="apply"] .button-icon {
206
  list-style-image: url("moz-icon://stock/gtk-apply?size=button");
207
}
208
209
button[icon="close"] .button-icon {
210
  list-style-image: url("moz-icon://stock/gtk-close?size=button");
211
}
212
213
button[icon="print"] .button-icon {
214
  list-style-image: url("moz-icon://stock/gtk-print?size=button");
215
}
216
217
button[icon="add"] .button-icon {
218
  list-style-image: url("moz-icon://stock/gtk-add?size=button");
219
}
220
221
button[icon="remove"] .button-icon {
222
  list-style-image: url("moz-icon://stock/gtk-remove?size=button");
223
}
224
225
button[icon="refresh"] .button-icon {
226
  list-style-image: url("moz-icon://stock/gtk-refresh?size=button");
227
}
228
229
button[icon="go-forward"] .button-icon {
230
  list-style-image: url("moz-icon://stock/gtk-go-forward?size=button");
231
}
232
233
button[icon="go-back"] .button-icon {
234
  list-style-image: url("moz-icon://stock/gtk-go-back?size=button");
235
}
236
237
button[icon="properties"] .button-icon {
238
  list-style-image: url("moz-icon://stock/gtk-properties?size=button");
239
}
240
241
button[icon="select-font"] .button-icon {
242
  list-style-image: url("moz-icon://stock/gtk-select-font?size=button");
243
}
244
245
button[icon="network"] .button-icon {
246
  list-style-image: url("moz-icon://stock/gtk-network?size=button");
247
}
248
++ toolkit/xre/nsXREDirProvider.cpp
Lines 287-292 Link Here
287
        rv = mProfileDir->Clone(getter_AddRefs(file));
287
        rv = mProfileDir->Clone(getter_AddRefs(file));
288
        rv |= file->AppendNative(nsDependentCString("chrome"));
288
        rv |= file->AppendNative(nsDependentCString("chrome"));
289
      }
289
      }
290
      else if (!strcmp(aProperty, NS_APP_USER_SEARCH_50_DIR)) {
291
        rv = mProfileDir->Clone(getter_AddRefs(file));
292
        rv |= file->AppendNative(NS_LITERAL_CSTRING("search"));
293
      }
290
      else if (!strcmp(aProperty, NS_APP_LOCALSTORE_50_FILE)) {
294
      else if (!strcmp(aProperty, NS_APP_LOCALSTORE_50_FILE)) {
291
        rv = mProfileDir->Clone(getter_AddRefs(file));
295
        rv = mProfileDir->Clone(getter_AddRefs(file));
292
        rv |= file->AppendNative(nsDependentCString("localstore.rdf"));
296
        rv |= file->AppendNative(nsDependentCString("localstore.rdf"));
Lines 314-324 Link Here
314
        rv = mProfileDir->Clone(getter_AddRefs(file));
318
        rv = mProfileDir->Clone(getter_AddRefs(file));
315
        rv |= file->AppendNative(nsDependentCString("downloads.rdf"));
319
        rv |= file->AppendNative(nsDependentCString("downloads.rdf"));
316
      }
320
      }
317
      else if (!strcmp(aProperty, NS_APP_SEARCH_50_FILE)) {
318
        rv = mProfileDir->Clone(getter_AddRefs(file));
319
        rv |= file->AppendNative(nsDependentCString("search.rdf"));
320
        EnsureProfileFileExists(file);
321
      }
322
      else if (!strcmp(aProperty, NS_APP_MAIL_50_DIR)) {
321
      else if (!strcmp(aProperty, NS_APP_MAIL_50_DIR)) {
323
        rv = mProfileDir->Clone(getter_AddRefs(file));
322
        rv = mProfileDir->Clone(getter_AddRefs(file));
324
        rv |= file->AppendNative(nsDependentCString("Mail"));
323
        rv |= file->AppendNative(nsDependentCString("Mail"));
325
-- toolkit/xre/nsAppRunner.cpp
324
++ toolkit/xre/nsAppRunner.cpp
Lines 1522-1527 Link Here
1522
};
1522
};
1523
#endif
1523
#endif
1524
1524
1525
#ifdef MOZ_WIDGET_GTK2
1526
#include "prlink.h"
1527
typedef void (*_g_set_application_name_fn)(const gchar *application_name);
1528
#endif
1529
1525
int xre_main(int argc, char* argv[], const nsXREAppData* aAppData)
1530
int xre_main(int argc, char* argv[], const nsXREAppData* aAppData)
1526
{
1531
{
1527
  nsresult rv;
1532
  nsresult rv;
Lines 1650-1655 Link Here
1650
#endif
1655
#endif
1651
  gtk_init(&gArgc, &gArgv);
1656
  gtk_init(&gArgc, &gArgv);
1652
1657
1658
#if defined(MOZ_WIDGET_GTK2)
1659
  // g_set_application_name is only defined in glib2.2 and higher
1660
  PRLibrary *glib2;
1661
  _g_set_application_name_fn _g_set_application_name = 
1662
          (_g_set_application_name_fn)PR_FindFunctionSymbolAndLibrary("g_set_application_name", &glib2);
1663
  if (_g_set_application_name) {
1664
     _g_set_application_name(gAppData->appName);
1665
  }
1666
  if (glib2) {
1667
     PR_UnloadLibrary(glib2);
1668
  }
1669
#endif
1670
1653
  gtk_widget_set_default_visual(gdk_rgb_get_visual());
1671
  gtk_widget_set_default_visual(gdk_rgb_get_visual());
1654
  gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
1672
  gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
1655
#endif /* MOZ_WIDGET_GTK || MOZ_WIDGET_GTK2 */
1673
#endif /* MOZ_WIDGET_GTK || MOZ_WIDGET_GTK2 */
1656
-- extensions/cookie/resources/content/cookieAcceptDialog.js
1674
++ extensions/cookie/resources/content/cookieAcceptDialog.js
Lines 62-67 Link Here
62
  document.getElementById("cancel").label = dialog.getAttribute("cancelLabel");
62
  document.getElementById("cancel").label = dialog.getAttribute("cancelLabel");
63
  document.getElementById("cancel").accessKey = dialog.getAttribute("cancelKey");
63
  document.getElementById("cancel").accessKey = dialog.getAttribute("cancelKey");
64
64
65
  // hook up GNOME stock icons where implemented
66
  document.getElementById("ok").setAttribute("icon","accept");
67
  document.getElementById("cancel").setAttribute("icon","cancel");
68
  document.getElementById("Button2").setAttribute("icon","accept");
69
  document.getElementById("disclosureButton").setAttribute("icon","properties");
70
65
  if (!gDateService) {
71
  if (!gDateService) {
66
    const nsScriptableDateFormat_CONTRACTID = "@mozilla.org/intl/scriptabledateformat;1";
72
    const nsScriptableDateFormat_CONTRACTID = "@mozilla.org/intl/scriptabledateformat;1";
67
    const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat;
73
    const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat;
68
-- extensions/typeaheadfind/public/Makefile.in
74
++ extensions/typeaheadfind/public/Makefile.in
Lines 31-41 Link Here
31
31
32
include $(DEPTH)/config/autoconf.mk
32
include $(DEPTH)/config/autoconf.mk
33
33
34
MODULE=typeaheadfind
34
MODULE=typeaheadfindsea
35
XPIDL_MODULE=typeaheadfind
35
XPIDL_MODULE=typeaheadfindsea
36
GRE_MODULE	= 1
36
GRE_MODULE	= 1
37
37
38
XPIDLSRCS= ./nsITypeAheadFind.idl \
38
XPIDLSRCS= ./nsITypeAheadFindSea.idl \
39
  $(NULL)
39
  $(NULL)
40
40
41
41
42
-- extensions/typeaheadfind/public/nsITypeAheadFindSea.idl
42
++ extensions/typeaheadfind/public/nsITypeAheadFindSea.idl
Line 0 Link Here
0
-- extensions/typeaheadfind/resources/content/prefs/typeaheadfind.js
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
 *
5
 * The contents of this file are subject to the Mozilla Public License Version
6
 * 1.1 (the "License"); you may not use this file except in compliance with
7
 * the License. You may obtain a copy of the License at
8
 * http://www.mozilla.org/MPL/
9
 *
10
 * Software distributed under the License is distributed on an "AS IS" basis,
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
 * for the specific language governing rights and limitations under the
13
 * License.
14
 *
15
 * The Original Code is mozilla.org code.
16
 *
17
 * The Initial Developer of the Original Code is
18
 * Netscape Communications Corporation.
19
 * Portions created by the Initial Developer are Copyright (C) 1998
20
 * the Initial Developer. All Rights Reserved.
21
 *
22
 * Contributor(s):
23
 *   Original Author: Aaron Leventhal (aaronl@netscape.com)
24
 *
25
 * Alternatively, the contents of this file may be used under the terms of
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or
27
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
 * in which case the provisions of the GPL or the LGPL are applicable instead
29
 * of those above. If you wish to allow use of your version of this file only
30
 * under the terms of either the GPL or the LGPL, and not to allow others to
31
 * use your version of this file under the terms of the MPL, indicate your
32
 * decision by deleting the provisions above and replace them with the notice
33
 * and other provisions required by the GPL or the LGPL. If you do not delete
34
 * the provisions above, a recipient may use your version of this file under
35
 * the terms of any one of the MPL, the GPL or the LGPL.
36
 *
37
 * ***** END LICENSE BLOCK ***** */
38
39
#include "nsISupports.idl"
40
#include "domstubs.idl"
41
#include "nsISupportsPrimitives.idl"
42
43
%{ C++
44
  #include "nsIDOMEvent.h"
45
46
  #define NS_TYPEAHEADFINDSEA_CID \
47
    {0x46590685, 0xbc00, 0x4aac, {0xab, 0xed, 0x2c, 0x10, 0xa5, 0xb9, 0x45, 0xa4}}
48
49
  #define NS_TYPEAHEADFINDSEA_CONTRACTID "@mozilla.org/typeaheadfindsea;1"
50
%}
51
52
interface nsIDOMEvent;
53
54
[scriptable, uuid(a565f6e0-d521-4ffe-8cea-569fbb163cd1)]
55
interface nsITypeAheadFindSea : nsISupports
56
{
57
  /** Is type ahead find mode currently on? */
58
  readonly attribute boolean isActive;
59
60
  /** Manually start type ahead find mode */
61
  void startNewFind(in nsIDOMWindow aWindow, in boolean aLinksOnly);
62
63
  /** Manually cancel type ahead find mode */
64
  void cancelFind();
65
66
  /**
67
    * Will find as you type start automatically if the user
68
    * types with the focus on page content other than a textfield or select?
69
    * If autostart is off, the startNewFind() method can be used to enact
70
    * type ahead find, as well as cmd_findTypeLinks or cmd_findTypeText.
71
    */
72
  void setAutoStart(in nsIDOMWindow aWindow, in boolean aIsAutoStartOn);
73
  boolean getAutoStart(in nsIDOMWindow aWindow);  
74
75
  /**
76
    * Find next recurrence if typeaheadfind was the last used find, 
77
    * as opposed to regular find. Returns false in nsISupportsPRBool if we
78
    * don't handle the request.
79
    */
80
  void findNext(in boolean aReverse, in nsISupportsInterfacePointer aCallerWindowSupports);
81
82
  /*
83
   * Go back and remove one character from find string
84
   * Returns true if backspace used
85
   */
86
  boolean backOneChar();
87
};
88
89
++ extensions/typeaheadfind/resources/content/prefs/typeaheadfind.js
Lines 36-42 Link Here
36
 *
36
 *
37
 * ***** END LICENSE BLOCK ***** */
37
 * ***** END LICENSE BLOCK ***** */
38
38
39
pref("accessibility.typeaheadfind", true);
39
pref("accessibility.typeaheadfindsea", false);
40
pref("accessibility.typeaheadfind.linksonly", true);
40
pref("accessibility.typeaheadfindsea.linksonly", true);
41
pref("accessibility.typeaheadfind.startlinksonly", false);
41
pref("accessibility.typeaheadfindsea.startlinksonly", false);
42
pref("accessibility.typeaheadfind.timeout", 5000);
42
pref("accessibility.typeaheadfindsea.timeout", 5000);
43
-- extensions/typeaheadfind/resources/locale/en-US/typeaheadfindsea.properties
43
++ extensions/typeaheadfind/resources/locale/en-US/typeaheadfindsea.properties
Line 0 Link Here
0
-- extensions/typeaheadfind/resources/jar.mn
1
openparen     = (
2
closeparen    = )
3
textfound     = Text found: "
4
textnotfound  = Text not found: "
5
linkfound     = Link found: "
6
linknotfound  = Link not found: "
7
closequote    = "
8
stopfind      = Find stopped.
9
starttextfind = Starting -- find text as you type
10
startlinkfind = Starting -- find links as you type
11
repeated      = repeated
12
nextmatch     = - next match
13
prevmatch     = - previous match
14
++ extensions/typeaheadfind/resources/jar.mn
Lines 1-5 Link Here
1
en-US.jar:
1
en-US.jar:
2
    locale/en-US/global/typeaheadfind.properties  (locale/en-US/typeaheadfind.properties)
2
    locale/en-US/global/typeaheadfindsea.properties  (locale/en-US/typeaheadfindsea.properties)
3
3
4
toolkit.jar:
4
toolkit.jar:
5
    content/global/notfound.wav                   (content/notfound.wav)
5
    content/global/notfound.wav                   (content/notfound.wav)
6
-- extensions/typeaheadfind/src/Makefile.in
6
++ extensions/typeaheadfind/src/Makefile.in
Lines 31-44 Link Here
31
31
32
include $(DEPTH)/config/autoconf.mk
32
include $(DEPTH)/config/autoconf.mk
33
33
34
MODULE = typeaheadfind
34
MODULE = typeaheadfindsea
35
LIBRARY_NAME = typeaheadfind
35
LIBRARY_NAME = typeaheadfindsea
36
ifneq ($(OS_ARCH),WINNT)
36
ifneq ($(OS_ARCH),WINNT)
37
SHORT_LIBNAME = typahead
37
SHORT_LIBNAME = typaheadsea
38
endif
38
endif
39
GRE_MODULE	= 1
39
GRE_MODULE	= 1
40
40
41
PACKAGE_FILE = typeaheadfind.pkg
41
PACKAGE_FILE = typeaheadfindsea.pkg
42
42
43
REQUIRES	= appcomps \
43
REQUIRES	= appcomps \
44
		  embedcomponents \
44
		  embedcomponents \
Lines 66-72 Link Here
66
66
67
EXPORT_LIBRARY = 1
67
EXPORT_LIBRARY = 1
68
IS_COMPONENT = 1
68
IS_COMPONENT = 1
69
MODULE_NAME	= nsTypeAheadFind
69
MODULE_NAME	= nsTypeAheadFindSea
70
70
71
CPPSRCS =   \
71
CPPSRCS =   \
72
  nsTypeAheadFind.cpp	   \
72
  nsTypeAheadFind.cpp	   \
73
-- extensions/typeaheadfind/src/nsTypeAheadFind.cpp
73
++ extensions/typeaheadfind/src/nsTypeAheadFind.cpp
Lines 117-124 Link Here
117
////////////////////////////////////////////////////////////////////////
117
////////////////////////////////////////////////////////////////////////
118
118
119
119
120
NS_INTERFACE_MAP_BEGIN(nsTypeAheadFind)
120
NS_INTERFACE_MAP_BEGIN(nsTypeAheadFindSea)
121
  NS_INTERFACE_MAP_ENTRY(nsITypeAheadFind)
121
  NS_INTERFACE_MAP_ENTRY(nsITypeAheadFindSea)
122
  NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
122
  NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
123
  NS_INTERFACE_MAP_ENTRY(nsITimerCallback)
123
  NS_INTERFACE_MAP_ENTRY(nsITimerCallback)
124
  NS_INTERFACE_MAP_ENTRY(nsIScrollPositionListener)
124
  NS_INTERFACE_MAP_ENTRY(nsIScrollPositionListener)
Lines 131-138 Link Here
131
  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsIDOMEventListener, nsIDOMKeyListener)
131
  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsIDOMEventListener, nsIDOMKeyListener)
132
NS_INTERFACE_MAP_END
132
NS_INTERFACE_MAP_END
133
133
134
NS_IMPL_ADDREF(nsTypeAheadFind)
134
NS_IMPL_ADDREF(nsTypeAheadFindSea)
135
NS_IMPL_RELEASE(nsTypeAheadFind)
135
NS_IMPL_RELEASE(nsTypeAheadFindSea)
136
136
137
static NS_DEFINE_IID(kRangeCID, NS_RANGE_CID);
137
static NS_DEFINE_IID(kRangeCID, NS_RANGE_CID);
138
static NS_DEFINE_CID(kStringBundleServiceCID,  NS_STRINGBUNDLESERVICE_CID);
138
static NS_DEFINE_CID(kStringBundleServiceCID,  NS_STRINGBUNDLESERVICE_CID);
Lines 141-151 Link Here
141
141
142
#define NS_FIND_CONTRACTID "@mozilla.org/embedcomp/rangefind;1"
142
#define NS_FIND_CONTRACTID "@mozilla.org/embedcomp/rangefind;1"
143
143
144
nsTypeAheadFind* nsTypeAheadFind::sInstance = nsnull;
144
nsTypeAheadFindSea* nsTypeAheadFindSea::sInstance = nsnull;
145
PRInt32 nsTypeAheadFind::sAccelKey = -1;  // magic value of -1 when unitialized
145
PRInt32 nsTypeAheadFindSea::sAccelKey = -1;  // magic value of -1 when unitialized
146
146
147
147
148
nsTypeAheadFind::nsTypeAheadFind():
148
nsTypeAheadFindSea::nsTypeAheadFindSea():
149
  mIsFindAllowedInWindow(PR_FALSE), mAutoStartPref(PR_FALSE),
149
  mIsFindAllowedInWindow(PR_FALSE), mAutoStartPref(PR_FALSE),
150
  mLinksOnlyPref(PR_FALSE), mStartLinksOnlyPref(PR_FALSE),
150
  mLinksOnlyPref(PR_FALSE), mStartLinksOnlyPref(PR_FALSE),
151
  mLinksOnly(PR_FALSE), mIsTypeAheadOn(PR_FALSE), mCaretBrowsingOn(PR_FALSE),
151
  mLinksOnly(PR_FALSE), mIsTypeAheadOn(PR_FALSE), mCaretBrowsingOn(PR_FALSE),
Lines 164-188 Link Here
164
  static PRInt32 gInstanceCount;
164
  static PRInt32 gInstanceCount;
165
  ++gInstanceCount;
165
  ++gInstanceCount;
166
  NS_ASSERTION(gInstanceCount == 1,
166
  NS_ASSERTION(gInstanceCount == 1,
167
    "There should be only 1 instance of nsTypeAheadFind!");
167
    "There should be only 1 instance of nsTypeAheadFindSea!");
168
#endif
168
#endif
169
}
169
}
170
170
171
171
172
nsTypeAheadFind::~nsTypeAheadFind()
172
nsTypeAheadFindSea::~nsTypeAheadFindSea()
173
{
173
{
174
  RemoveDocListeners();
174
  RemoveDocListeners();
175
  mTimer = nsnull;
175
  mTimer = nsnull;
176
176
177
  nsCOMPtr<nsIPrefBranchInternal> prefInternal(do_GetService(NS_PREFSERVICE_CONTRACTID));
177
  nsCOMPtr<nsIPrefBranchInternal> prefInternal(do_GetService(NS_PREFSERVICE_CONTRACTID));
178
  if (prefInternal) {
178
  if (prefInternal) {
179
    prefInternal->RemoveObserver("accessibility.typeaheadfind", this);
179
    prefInternal->RemoveObserver("accessibility.typeaheadfindsea", this);
180
    prefInternal->RemoveObserver("accessibility.browsewithcaret", this);
180
    prefInternal->RemoveObserver("accessibility.browsewithcaret", this);
181
  }
181
  }
182
}
182
}
183
183
184
nsresult
184
nsresult
185
nsTypeAheadFind::Init()
185
nsTypeAheadFindSea::Init()
186
{
186
{
187
  nsresult rv = NS_NewISupportsArray(getter_AddRefs(mManualFindWindows));
187
  nsresult rv = NS_NewISupportsArray(getter_AddRefs(mManualFindWindows));
188
  NS_ENSURE_SUCCESS(rv, rv);
188
  NS_ENSURE_SUCCESS(rv, rv);
Lines 199-205 Link Here
199
  }
199
  }
200
200
201
  // ----------- Listen to prefs ------------------
201
  // ----------- Listen to prefs ------------------
202
  rv = prefInternal->AddObserver("accessibility.typeaheadfind", this, PR_FALSE);
202
  rv = prefInternal->AddObserver("accessibility.typeaheadfindsea", this, PR_FALSE);
203
  NS_ENSURE_SUCCESS(rv, rv);
203
  NS_ENSURE_SUCCESS(rv, rv);
204
204
205
  rv = prefInternal->AddObserver("accessibility.browsewithcaret", this, PR_FALSE);
205
  rv = prefInternal->AddObserver("accessibility.browsewithcaret", this, PR_FALSE);
Lines 220-230 Link Here
220
  return rv;
220
  return rv;
221
}
221
}
222
222
223
nsTypeAheadFind *
223
nsTypeAheadFindSea *
224
nsTypeAheadFind::GetInstance()
224
nsTypeAheadFindSea::GetInstance()
225
{
225
{
226
  if (!sInstance) {
226
  if (!sInstance) {
227
    sInstance = new nsTypeAheadFind();
227
    sInstance = new nsTypeAheadFindSea();
228
    if (!sInstance)
228
    if (!sInstance)
229
      return nsnull;
229
      return nsnull;
230
230
Lines 244-257 Link Here
244
244
245
245
246
void
246
void
247
nsTypeAheadFind::ReleaseInstance()
247
nsTypeAheadFindSea::ReleaseInstance()
248
{
248
{
249
  NS_IF_RELEASE(sInstance);
249
  NS_IF_RELEASE(sInstance);
250
}
250
}
251
251
252
252
253
void 
253
void 
254
nsTypeAheadFind::Shutdown()
254
nsTypeAheadFindSea::Shutdown()
255
{
255
{
256
  // Application shutdown 
256
  // Application shutdown 
257
  mTimer = nsnull;
257
  mTimer = nsnull;
Lines 267-280 Link Here
267
// ------- Pref Callbacks (2) ---------------
267
// ------- Pref Callbacks (2) ---------------
268
268
269
nsresult
269
nsresult
270
nsTypeAheadFind::PrefsReset()
270
nsTypeAheadFindSea::PrefsReset()
271
{
271
{
272
  nsCOMPtr<nsIPrefBranch> prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID));
272
  nsCOMPtr<nsIPrefBranch> prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID));
273
  NS_ENSURE_TRUE(prefBranch, NS_ERROR_FAILURE);
273
  NS_ENSURE_TRUE(prefBranch, NS_ERROR_FAILURE);
274
274
275
  PRBool wasTypeAheadOn = mIsTypeAheadOn;
275
  PRBool wasTypeAheadOn = mIsTypeAheadOn;
276
276
277
  prefBranch->GetBoolPref("accessibility.typeaheadfind", &mIsTypeAheadOn);
277
  prefBranch->GetBoolPref("accessibility.typeaheadfindsea", &mIsTypeAheadOn);
278
278
279
  if (mIsTypeAheadOn != wasTypeAheadOn) {
279
  if (mIsTypeAheadOn != wasTypeAheadOn) {
280
    if (!mIsTypeAheadOn) {
280
    if (!mIsTypeAheadOn) {
Lines 294-300 Link Here
294
        do_GetService(kStringBundleServiceCID);
294
        do_GetService(kStringBundleServiceCID);
295
295
296
      if (stringBundleService)
296
      if (stringBundleService)
297
        stringBundleService->CreateBundle(TYPEAHEADFIND_BUNDLE_URL,
297
        stringBundleService->CreateBundle(TYPEAHEADFINDSEA_BUNDLE_URL,
298
                                          getter_AddRefs(mStringBundle));
298
                                          getter_AddRefs(mStringBundle));
299
299
300
      // Observe find again commands. We'll handle them if we were the last find
300
      // Observe find again commands. We'll handle them if we were the last find
Lines 309-342 Link Here
309
  }
309
  }
310
310
311
  PRBool oldAutoStartPref = mAutoStartPref;
311
  PRBool oldAutoStartPref = mAutoStartPref;
312
  prefBranch->GetBoolPref("accessibility.typeaheadfind.autostart",
312
  prefBranch->GetBoolPref("accessibility.typeaheadfindsea.autostart",
313
                           &mAutoStartPref);
313
                           &mAutoStartPref);
314
  if (mAutoStartPref != oldAutoStartPref) {
314
  if (mAutoStartPref != oldAutoStartPref) {
315
    ResetGlobalAutoStart(mAutoStartPref);
315
    ResetGlobalAutoStart(mAutoStartPref);
316
  }
316
  }
317
 
317
 
318
  prefBranch->GetBoolPref("accessibility.typeaheadfind.linksonly",
318
  prefBranch->GetBoolPref("accessibility.typeaheadfindsea.linksonly",
319
                          &mLinksOnlyPref);
319
                          &mLinksOnlyPref);
320
320
321
  prefBranch->GetBoolPref("accessibility.typeaheadfind.startlinksonly",
321
  prefBranch->GetBoolPref("accessibility.typeaheadfindsea.startlinksonly",
322
                          &mStartLinksOnlyPref);
322
                          &mStartLinksOnlyPref);
323
323
324
  PRBool isSoundEnabled = PR_TRUE;
324
  PRBool isSoundEnabled = PR_TRUE;
325
  prefBranch->GetBoolPref("accessibility.typeaheadfind.enablesound",
325
  prefBranch->GetBoolPref("accessibility.typeaheadfindsea.enablesound",
326
                           &isSoundEnabled);
326
                           &isSoundEnabled);
327
  nsXPIDLCString soundStr;
327
  nsXPIDLCString soundStr;
328
  if (isSoundEnabled) {
328
  if (isSoundEnabled) {
329
    prefBranch->GetCharPref("accessibility.typeaheadfind.soundURL",
329
    prefBranch->GetCharPref("accessibility.typeaheadfindsea.soundURL",
330
                             getter_Copies(soundStr));
330
                             getter_Copies(soundStr));
331
  }
331
  }
332
  mNotFoundSoundURL = soundStr;
332
  mNotFoundSoundURL = soundStr;
333
333
334
  PRBool isTimeoutEnabled;
334
  PRBool isTimeoutEnabled;
335
  prefBranch->GetBoolPref("accessibility.typeaheadfind.enabletimeout",
335
  prefBranch->GetBoolPref("accessibility.typeaheadfindsea.enabletimeout",
336
                          &isTimeoutEnabled);
336
                          &isTimeoutEnabled);
337
  PRInt32 timeoutLength = 0;
337
  PRInt32 timeoutLength = 0;
338
  if (isTimeoutEnabled) {
338
  if (isTimeoutEnabled) {
339
    prefBranch->GetIntPref("accessibility.typeaheadfind.timeout",
339
    prefBranch->GetIntPref("accessibility.typeaheadfindsea.timeout",
340
                           &timeoutLength);
340
                           &timeoutLength);
341
  }
341
  }
342
  mTimeoutLength = timeoutLength;
342
  mTimeoutLength = timeoutLength;
Lines 352-358 Link Here
352
// ------- nsITimer Methods (1) ---------------
352
// ------- nsITimer Methods (1) ---------------
353
353
354
NS_IMETHODIMP
354
NS_IMETHODIMP
355
nsTypeAheadFind::Notify(nsITimer *timer)
355
nsTypeAheadFindSea::Notify(nsITimer *timer)
356
{
356
{
357
  CancelFind();
357
  CancelFind();
358
  return NS_OK;
358
  return NS_OK;
Lines 361-367 Link Here
361
// ----------- nsIObserver Methods (1) -------------------
361
// ----------- nsIObserver Methods (1) -------------------
362
362
363
NS_IMETHODIMP
363
NS_IMETHODIMP
364
nsTypeAheadFind::Observe(nsISupports *aSubject, const char *aTopic,
364
nsTypeAheadFindSea::Observe(nsISupports *aSubject, const char *aTopic,
365
                         const PRUnichar *aData)
365
                         const PRUnichar *aData)
366
{
366
{
367
  PRBool isOpening;
367
  PRBool isOpening;
Lines 475-481 Link Here
475
475
476
476
477
nsresult
477
nsresult
478
nsTypeAheadFind::UseInWindow(nsIDOMWindow *aDOMWin)
478
nsTypeAheadFindSea::UseInWindow(nsIDOMWindow *aDOMWin)
479
{
479
{
480
  NS_ENSURE_ARG_POINTER(aDOMWin);
480
  NS_ENSURE_ARG_POINTER(aDOMWin);
481
481
Lines 528-534 Link Here
528
// ------- nsIDOMEventListener Methods (1) ---------------
528
// ------- nsIDOMEventListener Methods (1) ---------------
529
529
530
NS_IMETHODIMP
530
NS_IMETHODIMP
531
nsTypeAheadFind::HandleEvent(nsIDOMEvent* aEvent)
531
nsTypeAheadFindSea::HandleEvent(nsIDOMEvent* aEvent)
532
{
532
{
533
  nsAutoString eventType;
533
  nsAutoString eventType;
534
  aEvent->GetType(eventType);
534
  aEvent->GetType(eventType);
Lines 588-608 Link Here
588
// ------- nsIDOMKeyListener Methods (3) ---------------
588
// ------- nsIDOMKeyListener Methods (3) ---------------
589
589
590
NS_IMETHODIMP
590
NS_IMETHODIMP
591
nsTypeAheadFind::KeyDown(nsIDOMEvent* aEvent)
591
nsTypeAheadFindSea::KeyDown(nsIDOMEvent* aEvent)
592
{
592
{
593
  return NS_OK;
593
  return NS_OK;
594
}
594
}
595
595
596
596
597
NS_IMETHODIMP
597
NS_IMETHODIMP
598
nsTypeAheadFind::KeyUp(nsIDOMEvent* aEvent)
598
nsTypeAheadFindSea::KeyUp(nsIDOMEvent* aEvent)
599
{
599
{
600
  return NS_OK;
600
  return NS_OK;
601
}
601
}
602
602
603
603
604
NS_IMETHODIMP
604
NS_IMETHODIMP
605
nsTypeAheadFind::KeyPress(nsIDOMEvent* aEvent)
605
nsTypeAheadFindSea::KeyPress(nsIDOMEvent* aEvent)
606
{
606
{
607
  if (!mIsTypeAheadOn || mIsMenuBarActive || mIsMenuPopupActive) {
607
  if (!mIsTypeAheadOn || mIsMenuBarActive || mIsMenuPopupActive) {
608
    return NS_OK;
608
    return NS_OK;
Lines 725-738 Link Here
725
    return NS_OK;
725
    return NS_OK;
726
  }
726
  }
727
727
728
  aEvent->StopPropagation();  // We're using this key, no one else should
728
  // We're using this key, no one else should
729
  aEvent->PreventDefault();
729
730
730
  return HandleChar(charCode);
731
  return HandleChar(charCode);
731
}
732
}
732
733
733
734
734
NS_IMETHODIMP
735
NS_IMETHODIMP
735
nsTypeAheadFind::BackOneChar(PRBool *aIsBackspaceUsed)
736
nsTypeAheadFindSea::BackOneChar(PRBool *aIsBackspaceUsed)
736
{
737
{
737
  if (!mFocusedDocSelection) {
738
  if (!mFocusedDocSelection) {
738
    *aIsBackspaceUsed = PR_FALSE;
739
    *aIsBackspaceUsed = PR_FALSE;
Lines 862-868 Link Here
862
863
863
864
864
nsresult
865
nsresult
865
nsTypeAheadFind::HandleChar(PRUnichar aChar)
866
nsTypeAheadFindSea::HandleChar(PRUnichar aChar)
866
{
867
{
867
  // Add a printable char to mTypeAheadBuffer, then search for buffer contents
868
  // Add a printable char to mTypeAheadBuffer, then search for buffer contents
868
869
Lines 1027-1033 Link Here
1027
1028
1028
1029
1029
void
1030
void
1030
nsTypeAheadFind::SaveFind()
1031
nsTypeAheadFindSea::SaveFind()
1031
{
1032
{
1032
  // Store find string for find-next
1033
  // Store find string for find-next
1033
  mFindNextBuffer = mTypeAheadBuffer;
1034
  mFindNextBuffer = mTypeAheadBuffer;
Lines 1055-1061 Link Here
1055
1056
1056
1057
1057
void
1058
void
1058
nsTypeAheadFind::PlayNotFoundSound()
1059
nsTypeAheadFindSea::PlayNotFoundSound()
1059
{
1060
{
1060
  if (mNotFoundSoundURL.IsEmpty())    // no sound
1061
  if (mNotFoundSoundURL.IsEmpty())    // no sound
1061
    return;
1062
    return;
Lines 1085-1091 Link Here
1085
1086
1086
1087
1087
NS_IMETHODIMP
1088
NS_IMETHODIMP
1088
nsTypeAheadFind::HandleText(nsIDOMEvent* aTextEvent)
1089
nsTypeAheadFindSea::HandleText(nsIDOMEvent* aTextEvent)
1089
{
1090
{
1090
  // This is called multiple times in the middle of an 
1091
  // This is called multiple times in the middle of an 
1091
  // IME composition
1092
  // IME composition
Lines 1133-1139 Link Here
1133
1134
1134
1135
1135
NS_IMETHODIMP
1136
NS_IMETHODIMP
1136
nsTypeAheadFind::HandleStartComposition(nsIDOMEvent* aCompositionEvent)
1137
nsTypeAheadFindSea::HandleStartComposition(nsIDOMEvent* aCompositionEvent)
1137
{
1138
{
1138
  // This is called once at the start of an IME composition
1139
  // This is called once at the start of an IME composition
1139
1140
Lines 1155-1161 Link Here
1155
1156
1156
1157
1157
NS_IMETHODIMP
1158
NS_IMETHODIMP
1158
nsTypeAheadFind::HandleEndComposition(nsIDOMEvent* aCompositionEvent)
1159
nsTypeAheadFindSea::HandleEndComposition(nsIDOMEvent* aCompositionEvent)
1159
{
1160
{
1160
  // This is called once at the end of an IME composition
1161
  // This is called once at the end of an IME composition
1161
1162
Lines 1186-1206 Link Here
1186
1187
1187
1188
1188
NS_IMETHODIMP
1189
NS_IMETHODIMP
1189
nsTypeAheadFind::HandleQueryComposition(nsIDOMEvent* aCompositionEvent)
1190
nsTypeAheadFindSea::HandleQueryComposition(nsIDOMEvent* aCompositionEvent)
1190
{
1191
{
1191
  return NS_OK;
1192
  return NS_OK;
1192
}
1193
}
1193
1194
1194
1195
1195
NS_IMETHODIMP
1196
NS_IMETHODIMP
1196
nsTypeAheadFind::HandleQueryReconversion(nsIDOMEvent* aCompositionEvent)
1197
nsTypeAheadFindSea::HandleQueryReconversion(nsIDOMEvent* aCompositionEvent)
1197
{
1198
{
1198
  return NS_OK;
1199
  return NS_OK;
1199
}
1200
}
1200
1201
1201
1202
1202
nsresult
1203
nsresult
1203
nsTypeAheadFind::FindItNow(nsIPresShell *aPresShell,
1204
nsTypeAheadFindSea::FindItNow(nsIPresShell *aPresShell,
1204
                           PRBool aIsRepeatingSameChar, PRBool aIsLinksOnly,
1205
                           PRBool aIsRepeatingSameChar, PRBool aIsLinksOnly,
1205
                           PRBool aIsFirstVisiblePreferred)
1206
                           PRBool aIsFirstVisiblePreferred)
1206
{
1207
{
Lines 1225-1231 Link Here
1225
1226
1226
  nsCOMPtr<nsISupports> startingContainer = presContext->GetContainer();
1227
  nsCOMPtr<nsISupports> startingContainer = presContext->GetContainer();
1227
  nsCOMPtr<nsIDocShellTreeItem> treeItem(do_QueryInterface(startingContainer));
1228
  nsCOMPtr<nsIDocShellTreeItem> treeItem(do_QueryInterface(startingContainer));
1228
  NS_ASSERTION(treeItem, "Bug 175321 Crashes with Type Ahead Find [@ nsTypeAheadFind::FindItNow]");
1229
  NS_ASSERTION(treeItem, "Bug 175321 Crashes with Type Ahead Find [@ nsTypeAheadFindSea::FindItNow]");
1229
  if (!treeItem) {
1230
  if (!treeItem) {
1230
    return NS_ERROR_FAILURE;
1231
    return NS_ERROR_FAILURE;
1231
  }
1232
  }
Lines 1450-1456 Link Here
1450
1451
1451
1452
1452
nsresult
1453
nsresult
1453
nsTypeAheadFind::GetSearchContainers(nsISupports *aContainer,
1454
nsTypeAheadFindSea::GetSearchContainers(nsISupports *aContainer,
1454
                                     PRBool aIsRepeatingSameChar,
1455
                                     PRBool aIsRepeatingSameChar,
1455
                                     PRBool aIsFirstVisiblePreferred,
1456
                                     PRBool aIsFirstVisiblePreferred,
1456
                                     PRBool aCanUseDocSelection,
1457
                                     PRBool aCanUseDocSelection,
Lines 1561-1567 Link Here
1561
1562
1562
1563
1563
void
1564
void
1564
nsTypeAheadFind::RangeStartsInsideLink(nsIDOMRange *aRange,
1565
nsTypeAheadFindSea::RangeStartsInsideLink(nsIDOMRange *aRange,
1565
                                       nsIPresShell *aPresShell,
1566
                                       nsIPresShell *aPresShell,
1566
                                       PRBool *aIsInsideLink,
1567
                                       PRBool *aIsInsideLink,
1567
                                       PRBool *aIsStartingLink)
1568
                                       PRBool *aIsStartingLink)
Lines 1673-1679 Link Here
1673
1674
1674
1675
1675
NS_IMETHODIMP
1676
NS_IMETHODIMP
1676
nsTypeAheadFind::ScrollPositionWillChange(nsIScrollableView *aView,
1677
nsTypeAheadFindSea::ScrollPositionWillChange(nsIScrollableView *aView,
1677
                                          nscoord aX, nscoord aY)
1678
                                          nscoord aX, nscoord aY)
1678
{
1679
{
1679
  return NS_OK;
1680
  return NS_OK;
Lines 1681-1687 Link Here
1681
1682
1682
1683
1683
NS_IMETHODIMP
1684
NS_IMETHODIMP
1684
nsTypeAheadFind::ScrollPositionDidChange(nsIScrollableView *aScrollableView,
1685
nsTypeAheadFindSea::ScrollPositionDidChange(nsIScrollableView *aScrollableView,
1685
                                         nscoord aX, nscoord aY)
1686
                                         nscoord aX, nscoord aY)
1686
{
1687
{
1687
  if (!mIsFindingText)
1688
  if (!mIsFindingText)
Lines 1692-1698 Link Here
1692
1693
1693
1694
1694
NS_IMETHODIMP
1695
NS_IMETHODIMP
1695
nsTypeAheadFind::NotifySelectionChanged(nsIDOMDocument *aDoc,
1696
nsTypeAheadFindSea::NotifySelectionChanged(nsIDOMDocument *aDoc,
1696
                                        nsISelection *aSel, short aReason)
1697
                                        nsISelection *aSel, short aReason)
1697
{
1698
{
1698
  if (!mIsFindingText) {
1699
  if (!mIsFindingText) {
Lines 1709-1718 Link Here
1709
}
1710
}
1710
1711
1711
1712
1712
// ---------------- nsITypeAheadFind --------------------
1713
// ---------------- nsITypeAheadFindSea --------------------
1713
1714
1714
NS_IMETHODIMP
1715
NS_IMETHODIMP
1715
nsTypeAheadFind::FindNext(PRBool aFindBackwards, nsISupportsInterfacePointer *aCallerWindowSupports)
1716
nsTypeAheadFindSea::FindNext(PRBool aFindBackwards, nsISupportsInterfacePointer *aCallerWindowSupports)
1716
{
1717
{
1717
  NS_ENSURE_TRUE(aCallerWindowSupports, NS_ERROR_FAILURE);
1718
  NS_ENSURE_TRUE(aCallerWindowSupports, NS_ERROR_FAILURE);
1718
1719
Lines 1826-1832 Link Here
1826
1827
1827
1828
1828
NS_IMETHODIMP
1829
NS_IMETHODIMP
1829
nsTypeAheadFind::GetIsActive(PRBool *aIsActive)
1830
nsTypeAheadFindSea::GetIsActive(PRBool *aIsActive)
1830
{
1831
{
1831
  *aIsActive = mLinksOnlyManuallySet || !mTypeAheadBuffer.IsEmpty();
1832
  *aIsActive = mLinksOnlyManuallySet || !mTypeAheadBuffer.IsEmpty();
1832
1833
Lines 1839-1845 Link Here
1839
 */
1840
 */
1840
1841
1841
NS_IMETHODIMP
1842
NS_IMETHODIMP
1842
nsTypeAheadFind::StartNewFind(nsIDOMWindow *aWindow, PRBool aLinksOnly)
1843
nsTypeAheadFindSea::StartNewFind(nsIDOMWindow *aWindow, PRBool aLinksOnly)
1843
{
1844
{
1844
  if (!mFind || !mIsTypeAheadOn || !aWindow)
1845
  if (!mFind || !mIsTypeAheadOn || !aWindow)
1845
    return NS_ERROR_FAILURE;  // Type Ahead Find not correctly initialized
1846
    return NS_ERROR_FAILURE;  // Type Ahead Find not correctly initialized
Lines 1872-1878 Link Here
1872
}
1873
}
1873
1874
1874
void
1875
void
1875
nsTypeAheadFind::ResetGlobalAutoStart(PRBool aAutoStart)
1876
nsTypeAheadFindSea::ResetGlobalAutoStart(PRBool aAutoStart)
1876
{
1877
{
1877
  // Enumerate through the current top level windows
1878
  // Enumerate through the current top level windows
1878
  // and either attach or remove window listeners
1879
  // and either attach or remove window listeners
Lines 1910-1916 Link Here
1910
1911
1911
1912
1912
NS_IMETHODIMP
1913
NS_IMETHODIMP
1913
nsTypeAheadFind::SetAutoStart(nsIDOMWindow *aDOMWin, PRBool aAutoStartOn)
1914
nsTypeAheadFindSea::SetAutoStart(nsIDOMWindow *aDOMWin, PRBool aAutoStartOn)
1914
{
1915
{
1915
  if (!aDOMWin) {
1916
  if (!aDOMWin) {
1916
    return NS_ERROR_FAILURE;
1917
    return NS_ERROR_FAILURE;
Lines 1940-1946 Link Here
1940
1941
1941
1942
1942
NS_IMETHODIMP
1943
NS_IMETHODIMP
1943
nsTypeAheadFind::GetAutoStart(nsIDOMWindow *aDOMWin, PRBool *aIsAutoStartOn)
1944
nsTypeAheadFindSea::GetAutoStart(nsIDOMWindow *aDOMWin, PRBool *aIsAutoStartOn)
1944
{
1945
{
1945
  *aIsAutoStartOn = PR_FALSE;
1946
  *aIsAutoStartOn = PR_FALSE;
1946
1947
Lines 2008-2014 Link Here
2008
2009
2009
2010
2010
NS_IMETHODIMP
2011
NS_IMETHODIMP
2011
nsTypeAheadFind::CancelFind()
2012
nsTypeAheadFindSea::CancelFind()
2012
{
2013
{
2013
  // Stop current find if:
2014
  // Stop current find if:
2014
  //   1. Escape pressed
2015
  //   1. Escape pressed
Lines 2065-2071 Link Here
2065
// ------- Helper Methods ---------------
2066
// ------- Helper Methods ---------------
2066
2067
2067
void 
2068
void 
2068
nsTypeAheadFind::GetTopContentPresShell(nsIDocShellTreeItem *aDocShellTreeItem, 
2069
nsTypeAheadFindSea::GetTopContentPresShell(nsIDocShellTreeItem *aDocShellTreeItem, 
2069
                                        nsIPresShell **aPresShell)
2070
                                        nsIPresShell **aPresShell)
2070
{
2071
{
2071
  *aPresShell = nsnull;
2072
  *aPresShell = nsnull;
Lines 2081-2087 Link Here
2081
}
2082
}
2082
2083
2083
void 
2084
void 
2084
nsTypeAheadFind::GetStartWindow(nsIDOMWindow *aWindow, nsIDOMWindow **aStartWindow)
2085
nsTypeAheadFindSea::GetStartWindow(nsIDOMWindow *aWindow, nsIDOMWindow **aStartWindow)
2085
{
2086
{
2086
  // Return the root ancestor content window of aWindow
2087
  // Return the root ancestor content window of aWindow
2087
2088
Lines 2113-2119 Link Here
2113
}
2114
}
2114
2115
2115
nsresult
2116
nsresult
2116
nsTypeAheadFind::GetWebBrowserFind(nsIDOMWindow *aWin, 
2117
nsTypeAheadFindSea::GetWebBrowserFind(nsIDOMWindow *aWin, 
2117
                                   nsIWebBrowserFind **aWebBrowserFind)
2118
                                   nsIWebBrowserFind **aWebBrowserFind)
2118
{
2119
{
2119
  NS_ENSURE_ARG_POINTER(aWin);
2120
  NS_ENSURE_ARG_POINTER(aWin);
Lines 2138-2144 Link Here
2138
2139
2139
2140
2140
void
2141
void
2141
nsTypeAheadFind::StartTimeout()
2142
nsTypeAheadFindSea::StartTimeout()
2142
{
2143
{
2143
  if (mTimeoutLength) {
2144
  if (mTimeoutLength) {
2144
    if (!mTimer) {
2145
    if (!mTimer) {
Lines 2154-2160 Link Here
2154
}
2155
}
2155
2156
2156
void
2157
void
2157
nsTypeAheadFind::SetSelectionLook(nsIPresShell *aPresShell, 
2158
nsTypeAheadFindSea::SetSelectionLook(nsIPresShell *aPresShell, 
2158
                                  PRBool aChangeColor, 
2159
                                  PRBool aChangeColor, 
2159
                                  PRBool aEnabled)
2160
                                  PRBool aEnabled)
2160
{
2161
{
Lines 2210-2216 Link Here
2210
2211
2211
2212
2212
void
2213
void
2213
nsTypeAheadFind::RemoveDocListeners()
2214
nsTypeAheadFindSea::RemoveDocListeners()
2214
{
2215
{
2215
  nsCOMPtr<nsIPresShell> presShell(do_QueryReferent(mFocusedWeakShell));
2216
  nsCOMPtr<nsIPresShell> presShell(do_QueryReferent(mFocusedWeakShell));
2216
  nsIViewManager* vm = nsnull;
2217
  nsIViewManager* vm = nsnull;
Lines 2244-2250 Link Here
2244
2245
2245
2246
2246
void
2247
void
2247
nsTypeAheadFind::AttachDocListeners(nsIPresShell *aPresShell)
2248
nsTypeAheadFindSea::AttachDocListeners(nsIPresShell *aPresShell)
2248
{
2249
{
2249
  if (!aPresShell) {
2250
  if (!aPresShell) {
2250
    return;
2251
    return;
Lines 2274-2280 Link Here
2274
2275
2275
2276
2276
void
2277
void
2277
nsTypeAheadFind::RemoveWindowListeners(nsIDOMWindow *aDOMWin)
2278
nsTypeAheadFindSea::RemoveWindowListeners(nsIDOMWindow *aDOMWin)
2278
{
2279
{
2279
  nsCOMPtr<nsIDOMEventTarget> chromeEventHandler;
2280
  nsCOMPtr<nsIDOMEventTarget> chromeEventHandler;
2280
  GetChromeEventHandler(aDOMWin, getter_AddRefs(chromeEventHandler));
2281
  GetChromeEventHandler(aDOMWin, getter_AddRefs(chromeEventHandler));
Lines 2331-2337 Link Here
2331
2332
2332
2333
2333
void
2334
void
2334
nsTypeAheadFind::AttachWindowListeners(nsIDOMWindow *aDOMWin)
2335
nsTypeAheadFindSea::AttachWindowListeners(nsIDOMWindow *aDOMWin)
2335
{
2336
{
2336
  nsCOMPtr<nsIDOMEventTarget> chromeEventHandler;
2337
  nsCOMPtr<nsIDOMEventTarget> chromeEventHandler;
2337
  GetChromeEventHandler(aDOMWin, getter_AddRefs(chromeEventHandler));
2338
  GetChromeEventHandler(aDOMWin, getter_AddRefs(chromeEventHandler));
Lines 2384-2390 Link Here
2384
2385
2385
2386
2386
void
2387
void
2387
nsTypeAheadFind::GetChromeEventHandler(nsIDOMWindow *aDOMWin,
2388
nsTypeAheadFindSea::GetChromeEventHandler(nsIDOMWindow *aDOMWin,
2388
                                       nsIDOMEventTarget **aChromeTarget)
2389
                                       nsIDOMEventTarget **aChromeTarget)
2389
{
2390
{
2390
  nsCOMPtr<nsPIDOMWindow> privateDOMWindow(do_QueryInterface(aDOMWin));
2391
  nsCOMPtr<nsPIDOMWindow> privateDOMWindow(do_QueryInterface(aDOMWin));
Lines 2400-2406 Link Here
2400
}
2401
}
2401
2402
2402
PRBool
2403
PRBool
2403
nsTypeAheadFind::IsTargetContentOkay(nsIContent *aContent)
2404
nsTypeAheadFindSea::IsTargetContentOkay(nsIContent *aContent)
2404
{
2405
{
2405
  if (!aContent) {
2406
  if (!aContent) {
2406
    return PR_FALSE;
2407
    return PR_FALSE;
Lines 2438-2444 Link Here
2438
2439
2439
2440
2440
nsresult
2441
nsresult
2441
nsTypeAheadFind::GetTargetIfTypeAheadOkay(nsIDOMEvent *aEvent, 
2442
nsTypeAheadFindSea::GetTargetIfTypeAheadOkay(nsIDOMEvent *aEvent, 
2442
                                          nsIContent **aTargetContent,
2443
                                          nsIContent **aTargetContent,
2443
                                          nsIPresShell **aTargetPresShell)
2444
                                          nsIPresShell **aTargetPresShell)
2444
{
2445
{
Lines 2524-2530 Link Here
2524
2525
2525
2526
2526
void
2527
void
2527
nsTypeAheadFind::GetSelection(nsIPresShell *aPresShell,
2528
nsTypeAheadFindSea::GetSelection(nsIPresShell *aPresShell,
2528
                              nsISelectionController **aSelCon,
2529
                              nsISelectionController **aSelCon,
2529
                              nsISelection **aDOMSel)
2530
                              nsISelection **aDOMSel)
2530
{
2531
{
Lines 2548-2554 Link Here
2548
2549
2549
2550
2550
PRBool
2551
PRBool
2551
nsTypeAheadFind::IsRangeVisible(nsIPresShell *aPresShell,
2552
nsTypeAheadFindSea::IsRangeVisible(nsIPresShell *aPresShell,
2552
                                nsIPresContext *aPresContext,
2553
                                nsIPresContext *aPresContext,
2553
                                nsIDOMRange *aRange, PRBool aMustBeInViewPort,
2554
                                nsIDOMRange *aRange, PRBool aMustBeInViewPort,
2554
                                PRBool aGetTopVisibleLeaf,
2555
                                PRBool aGetTopVisibleLeaf,
Lines 2703-2709 Link Here
2703
2704
2704
2705
2705
nsresult
2706
nsresult
2706
nsTypeAheadFind::GetTranslatedString(const nsAString& aKey,
2707
nsTypeAheadFindSea::GetTranslatedString(const nsAString& aKey,
2707
                                     nsAString& aStringOut)
2708
                                     nsAString& aStringOut)
2708
{
2709
{
2709
  nsXPIDLString xsValue;
2710
  nsXPIDLString xsValue;
Lines 2721-2727 Link Here
2721
2722
2722
2723
2723
void
2724
void
2724
nsTypeAheadFind::DisplayStatus(PRBool aSuccess, nsIContent *aFocusedContent,
2725
nsTypeAheadFindSea::DisplayStatus(PRBool aSuccess, nsIContent *aFocusedContent,
2725
                               PRBool aClearStatus, const PRUnichar *aText)
2726
                               PRBool aClearStatus, const PRUnichar *aText)
2726
{
2727
{
2727
  // pres shell -> pres context -> container -> tree item ->
2728
  // pres shell -> pres context -> container -> tree item ->
Lines 2869-2875 Link Here
2869
  // Make sure we're not focused on a text field, listbox
2870
  // Make sure we're not focused on a text field, listbox
2870
  // or other form control that needs typeahead keystrokes
2871
  // or other form control that needs typeahead keystrokes
2871
  if (focusedContent) {
2872
  if (focusedContent) {
2872
    *aResult = nsTypeAheadFind::IsTargetContentOkay(focusedContent);
2873
    *aResult = nsTypeAheadFindSea::IsTargetContentOkay(focusedContent);
2873
    return NS_OK;
2874
    return NS_OK;
2874
  }
2875
  }
2875
2876
Lines 2934-2941 Link Here
2934
  EnsureContentWindow(domWinInternal, getter_AddRefs(startContentWin));
2935
  EnsureContentWindow(domWinInternal, getter_AddRefs(startContentWin));
2935
  NS_ENSURE_TRUE(startContentWin, NS_ERROR_FAILURE);
2936
  NS_ENSURE_TRUE(startContentWin, NS_ERROR_FAILURE);
2936
2937
2937
  nsCOMPtr<nsITypeAheadFind> typeAhead = 
2938
  nsCOMPtr<nsITypeAheadFindSea> typeAhead = 
2938
    do_GetService(NS_TYPEAHEADFIND_CONTRACTID);
2939
    do_GetService(NS_TYPEAHEADFINDSEA_CONTRACTID);
2939
  NS_ENSURE_TRUE(typeAhead, NS_ERROR_FAILURE);
2940
  NS_ENSURE_TRUE(typeAhead, NS_ERROR_FAILURE);
2940
2941
2941
  return typeAhead->StartNewFind(startContentWin, isLinkSearch);
2942
  return typeAhead->StartNewFind(startContentWin, isLinkSearch);
2942
-- extensions/typeaheadfind/src/nsTypeAheadFind.h
2943
++ extensions/typeaheadfind/src/nsTypeAheadFind.h
Lines 62-74 Link Here
62
#include "nsIDOMRange.h"
62
#include "nsIDOMRange.h"
63
#include "nsIDOMWindow.h"
63
#include "nsIDOMWindow.h"
64
#include "nsIDocShellTreeItem.h"
64
#include "nsIDocShellTreeItem.h"
65
#include "nsITypeAheadFind.h"
65
#include "nsITypeAheadFindSea.h"
66
#include "nsIStringBundle.h"
66
#include "nsIStringBundle.h"
67
#include "nsISupportsArray.h"
67
#include "nsISupportsArray.h"
68
#include "nsISound.h"
68
#include "nsISound.h"
69
69
70
#define TYPEAHEADFIND_BUNDLE_URL \
70
#define TYPEAHEADFINDSEA_BUNDLE_URL \
71
        "chrome://global/locale/typeaheadfind.properties"
71
        "chrome://global/locale/typeaheadfindsea.properties"
72
#define TYPEAHEADFIND_NOTFOUND_WAV_URL \
72
#define TYPEAHEADFIND_NOTFOUND_WAV_URL \
73
        "chrome://global/content/notfound.wav"
73
        "chrome://global/content/notfound.wav"
74
74
Lines 82-88 Link Here
82
82
83
const int kMaxBadCharsBeforeCancel = 3;
83
const int kMaxBadCharsBeforeCancel = 3;
84
84
85
class nsTypeAheadFind : public nsITypeAheadFind,
85
class nsTypeAheadFindSea : public nsITypeAheadFindSea,
86
                        public nsIDOMKeyListener,
86
                        public nsIDOMKeyListener,
87
                        public nsIDOMTextListener,
87
                        public nsIDOMTextListener,
88
                        public nsIDOMCompositionListener,
88
                        public nsIDOMCompositionListener,
Lines 93-105 Link Here
93
                        public nsSupportsWeakReference
93
                        public nsSupportsWeakReference
94
{
94
{
95
public:
95
public:
96
  nsTypeAheadFind();
96
  nsTypeAheadFindSea();
97
  virtual ~nsTypeAheadFind();
97
  virtual ~nsTypeAheadFindSea();
98
98
99
  NS_DEFINE_STATIC_CID_ACCESSOR(NS_TYPEAHEADFIND_CID);
99
  NS_DEFINE_STATIC_CID_ACCESSOR(NS_TYPEAHEADFINDSEA_CID);
100
100
101
  NS_DECL_ISUPPORTS
101
  NS_DECL_ISUPPORTS
102
  NS_DECL_NSITYPEAHEADFIND
102
  NS_DECL_NSITYPEAHEADFINDSEA
103
  NS_DECL_NSIOBSERVER
103
  NS_DECL_NSIOBSERVER
104
  NS_DECL_NSIDOMEVENTLISTENER
104
  NS_DECL_NSIDOMEVENTLISTENER
105
  NS_DECL_NSISELECTIONLISTENER
105
  NS_DECL_NSISELECTIONLISTENER
Lines 127-133 Link Here
127
  // ----- nsITimerCallback -----------------------------
127
  // ----- nsITimerCallback -----------------------------
128
  NS_DECL_NSITIMERCALLBACK
128
  NS_DECL_NSITIMERCALLBACK
129
129
130
  static nsTypeAheadFind *GetInstance();
130
  static nsTypeAheadFindSea *GetInstance();
131
  static void ReleaseInstance(void);
131
  static void ReleaseInstance(void);
132
  static PRBool IsTargetContentOkay(nsIContent *aContent);
132
  static PRBool IsTargetContentOkay(nsIContent *aContent);
133
133
Lines 185-191 Link Here
185
  nsresult GetTranslatedString(const nsAString& aKey, nsAString& aStringOut);
185
  nsresult GetTranslatedString(const nsAString& aKey, nsAString& aStringOut);
186
186
187
  // Used by GetInstance and ReleaseInstance
187
  // Used by GetInstance and ReleaseInstance
188
  static nsTypeAheadFind *sInstance;
188
  static nsTypeAheadFindSea *sInstance;
189
189
190
  // Current find state
190
  // Current find state
191
  nsString mTypeAheadBuffer;
191
  nsString mTypeAheadBuffer;
192
-- extensions/typeaheadfind/src/nsTypeAheadFindRegistration.cpp
192
++ extensions/typeaheadfind/src/nsTypeAheadFindRegistration.cpp
Lines 55-61 Link Here
55
55
56
// This function is called at component registration time
56
// This function is called at component registration time
57
static NS_METHOD
57
static NS_METHOD
58
nsTypeAheadFindRegistrationProc(nsIComponentManager *aCompMgr, nsIFile *aPath,
58
nsTypeAheadFindSeaRegistrationProc(nsIComponentManager *aCompMgr, nsIFile *aPath,
59
                                const char *registryLocation,
59
                                const char *registryLocation,
60
                                const char *componentType,
60
                                const char *componentType,
61
                                const nsModuleComponentInfo *info)
61
                                const nsModuleComponentInfo *info)
Lines 72-80 Link Here
72
72
73
  if (NS_SUCCEEDED(rv)) {
73
  if (NS_SUCCEEDED(rv)) {
74
    rv = categoryManager->AddCategoryEntry(APPSTARTUP_CATEGORY,
74
    rv = categoryManager->AddCategoryEntry(APPSTARTUP_CATEGORY,
75
                                           "Type Ahead Find", 
75
                                           "Type Ahead Find Sea", 
76
                                           "service,"
76
                                           "service,"
77
                                           NS_TYPEAHEADFIND_CONTRACTID,
77
                                           NS_TYPEAHEADFINDSEA_CONTRACTID,
78
                                           PR_TRUE, PR_TRUE, nsnull);
78
                                           PR_TRUE, PR_TRUE, nsnull);
79
  }
79
  }
80
80
Lines 82-103 Link Here
82
}
82
}
83
83
84
84
85
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsTypeAheadFind,
85
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsTypeAheadFindSea,
86
                                         nsTypeAheadFind::GetInstance)
86
                                         nsTypeAheadFindSea::GetInstance)
87
87
88
static void PR_CALLBACK
88
static void PR_CALLBACK
89
TypeAheadFindModuleDtor(nsIModule* self)
89
TypeAheadFindSeaModuleDtor(nsIModule* self)
90
{
90
{
91
  nsTypeAheadFind::ReleaseInstance();
91
  nsTypeAheadFindSea::ReleaseInstance();
92
}
92
}
93
93
94
static const nsModuleComponentInfo components[] =
94
static const nsModuleComponentInfo components[] =
95
{
95
{
96
  { "TypeAheadFind Component", NS_TYPEAHEADFIND_CID,
96
  { "TypeAheadFindSea Component", NS_TYPEAHEADFINDSEA_CID,
97
    NS_TYPEAHEADFIND_CONTRACTID, nsTypeAheadFindConstructor,
97
    NS_TYPEAHEADFINDSEA_CONTRACTID, nsTypeAheadFindSeaConstructor,
98
    nsTypeAheadFindRegistrationProc, nsnull  // Unregistration proc
98
    nsTypeAheadFindSeaRegistrationProc, nsnull  // Unregistration proc
99
  }
99
  }
100
};
100
};
101
101
102
NS_IMPL_NSGETMODULE_WITH_DTOR(nsTypeAheadFind, components,
102
NS_IMPL_NSGETMODULE_WITH_DTOR(nsTypeAheadFindSea, components,
103
                              TypeAheadFindModuleDtor)
103
                              TypeAheadFindSeaModuleDtor)
104
-- extensions/typeaheadfind/src/typeaheadfindsea.pkg
104
++ extensions/typeaheadfind/src/typeaheadfindsea.pkg
Line 0 Link Here
0
-- extensions/typeaheadfind/Makefile.in
1
# why not ship this with GRE/embedding, if we're building it?
2
3
[xpfe-browser browser]
4
#if SHARED_LIBRARY
5
dist/bin/components/@SHARED_LIBRARY@
6
#else
7
!staticcomp @LIBRARY@ @MODULE_NAME@
8
#endif
9
!xpt dist/bin/components/typeaheadfind.xpt
10
++ extensions/typeaheadfind/Makefile.in
Lines 31-37 Link Here
31
31
32
include $(DEPTH)/config/autoconf.mk
32
include $(DEPTH)/config/autoconf.mk
33
33
34
MODULE		= typeaheadfind
34
MODULE		= typeaheadfindsea
35
DIRS		= public src resources
35
DIRS		= public src resources
36
36
37
include $(topsrcdir)/config/rules.mk
37
include $(topsrcdir)/config/rules.mk
38
-- caps/src/nsScriptSecurityManager.cpp
38
++ caps/src/nsScriptSecurityManager.cpp
Lines 1233-1238 Link Here
1233
        //   to increase performance
1233
        //   to increase performance
1234
        { "http",            AllowProtocol  },
1234
        { "http",            AllowProtocol  },
1235
        { "chrome",          ChromeProtocol },
1235
        { "chrome",          ChromeProtocol },
1236
        { "moz-icon",	     ChromeProtocol },
1236
        { "file",            PrefControlled },
1237
        { "file",            PrefControlled },
1237
        { "https",           AllowProtocol  },
1238
        { "https",           AllowProtocol  },
1238
        { "mailbox",         DenyProtocol   },
1239
        { "mailbox",         DenyProtocol   },
Lines 1366-1374 Link Here
1366
}
1367
}
1367
1368
1368
NS_IMETHODIMP
1369
NS_IMETHODIMP
1369
nsScriptSecurityManager::CheckLoadURIStr(const char* aSourceURIStr, const char* aTargetURIStr,
1370
nsScriptSecurityManager::CheckLoadURIStr(const char* aSourceURIStr, 
1371
                                         const char* aTargetURIStr,
1370
                                         PRUint32 aFlags)
1372
                                         PRUint32 aFlags)
1371
{
1373
{
1374
    NS_ENSURE_ARG_POINTER(aSourceURIStr);
1375
    NS_ENSURE_ARG_POINTER(aTargetURIStr);
1376
1372
    nsCOMPtr<nsIURI> source;
1377
    nsCOMPtr<nsIURI> source;
1373
    nsresult rv = NS_NewURI(getter_AddRefs(source),
1378
    nsresult rv = NS_NewURI(getter_AddRefs(source),
1374
                            nsDependentCString(aSourceURIStr),
1379
                            nsDependentCString(aSourceURIStr),
1375
-- config/mkdepend/imakemdep.h
1380
++ config/mkdepend/imakemdep.h
Lines 277-282 Link Here
277
# ifdef __i386__
277
# ifdef __i386__
278
	"-D__i386__",
278
	"-D__i386__",
279
# endif
279
# endif
280
# ifdef __x86_64__
281
	"-D__x86_64__",
282
# endif
280
# ifdef __GNUC__
283
# ifdef __GNUC__
281
	"-traditional",
284
	"-traditional",
282
# endif
285
# endif
283
-- config/autoconf.mk.in
286
++ config/autoconf.mk.in
Lines 32-44 Link Here
32
prefix		= @prefix@
32
prefix		= @prefix@
33
exec_prefix	= @exec_prefix@
33
exec_prefix	= @exec_prefix@
34
bindir		= @bindir@
34
bindir		= @bindir@
35
includedir	= @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
35
includedir	= @includedir@/mozilla-firefox
36
libdir		= @libdir@
36
libdir		= @libdir@
37
datadir		= @datadir@
37
datadir		= @datadir@
38
mandir		= @mandir@
38
mandir		= @mandir@
39
idldir		= @datadir@/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
39
idldir		= @datadir@/idl/mozilla-firefox
40
40
41
mozappdir	= $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
41
mozappdir	= $(libdir)/mozilla-firefox
42
mredir		= $(libdir)/mre/mre-$(MOZ_APP_VERSION)
42
mredir		= $(libdir)/mre/mre-$(MOZ_APP_VERSION)
43
mrelibdir	= $(mredir)/lib
43
mrelibdir	= $(mredir)/lib
44
44
Lines 165-172 Link Here
165
endif
165
endif
166
endif
166
endif
167
MOZ_LIBART_LIBS = @MOZ_LIBART_LIBS@
167
MOZ_LIBART_LIBS = @MOZ_LIBART_LIBS@
168
168
MOZ_CAIRO_LIBS = @MOZ_CAIRO_LIBS@
169
MOZ_CAIRO_LIBS = @MOZ_CAIRO_LIBS@
169
170
171
MOZ_ENABLE_GNOMEUI = @MOZ_ENABLE_GNOMEUI@
172
MOZ_GNOMEUI_CFLAGS = @MOZ_GNOMEUI_CFLAGS@
173
MOZ_GNOMEUI_LIBS = @MOZ_GNOMEUI_LIBS@
174
175
170
MOZ_GNOMEVFS_CFLAGS = @MOZ_GNOMEVFS_CFLAGS@
176
MOZ_GNOMEVFS_CFLAGS = @MOZ_GNOMEVFS_CFLAGS@
171
MOZ_GNOMEVFS_LIBS = @MOZ_GNOMEVFS_LIBS@
177
MOZ_GNOMEVFS_LIBS = @MOZ_GNOMEVFS_LIBS@
172
178
Lines 388-393 Link Here
388
MOZ_XFT_LIBS		= @MOZ_XFT_LIBS@
394
MOZ_XFT_LIBS		= @MOZ_XFT_LIBS@
389
MOZ_ENABLE_COREXFONTS	= @MOZ_ENABLE_COREXFONTS@
395
MOZ_ENABLE_COREXFONTS	= @MOZ_ENABLE_COREXFONTS@
390
396
397
MOZ_ENABLE_PANGO        = @MOZ_ENABLE_PANGO@
398
MOZ_PANGO_CFLAGS        = @MOZ_PANGO_CFLAGS@
399
MOZ_PANGO_LIBS          = @MOZ_PANGO_LIBS@
400
391
MOZ_EXTRA_X11CONVERTERS	= @MOZ_EXTRA_X11CONVERTERS@
401
MOZ_EXTRA_X11CONVERTERS	= @MOZ_EXTRA_X11CONVERTERS@
392
402
393
MOZ_ENABLE_XINERAMA	= @MOZ_ENABLE_XINERAMA@
403
MOZ_ENABLE_XINERAMA	= @MOZ_ENABLE_XINERAMA@
394
-- config/rules.mk
404
++ config/rules.mk
Lines 455-461 Link Here
455
455
456
ifeq ($(OS_ARCH),Linux)
456
ifeq ($(OS_ARCH),Linux)
457
ifneq (,$(filter mips mipsel,$(OS_TEST)))
457
ifneq (,$(filter mips mipsel,$(OS_TEST)))
458
ifeq ($(MODULE),layout)
458
ifneq (,$(filter layout content xul xuldoc xultmpl svg_doc view dom jsurl,$(MODULE)))
459
OS_CFLAGS += -Wa,-xgot
459
OS_CFLAGS += -Wa,-xgot
460
OS_CXXFLAGS += -Wa,-xgot
460
OS_CXXFLAGS += -Wa,-xgot
461
endif
461
endif
462
-- embedding/browser/gtk/src/EmbedWindow.cpp
462
++ embedding/browser/gtk/src/EmbedWindow.cpp
Lines 366-371 Link Here
366
366
367
// nsITooltipListener
367
// nsITooltipListener
368
368
369
static gint
370
tooltips_paint_window(GtkWidget *window)
371
{
372
  // draw tooltip style border around the text
373
  gtk_paint_flat_box(window->style, window->window,
374
                     GTK_STATE_NORMAL, GTK_SHADOW_OUT,
375
                     NULL, window, "tooltip",
376
                     0, 0,
377
                     window->allocation.width, window->allocation.height);
378
379
  return FALSE;
380
}
381
                                     
369
NS_IMETHODIMP
382
NS_IMETHODIMP
370
EmbedWindow::OnShowTooltip(PRInt32 aXCoords, PRInt32 aYCoords,
383
EmbedWindow::OnShowTooltip(PRInt32 aXCoords, PRInt32 aYCoords,
371
			   const PRUnichar *aTipText)
384
			   const PRUnichar *aTipText)
Lines 416-427 Link Here
416
  // realize the widget
429
  // realize the widget
417
  gtk_widget_realize(sTipWindow);
430
  gtk_widget_realize(sTipWindow);
418
431
432
  gtk_signal_connect(GTK_OBJECT(sTipWindow), "expose_event",
433
                     GTK_SIGNAL_FUNC(tooltips_paint_window), NULL);
434
419
  // set up the label for the tooltip
435
  // set up the label for the tooltip
420
  GtkWidget *label = gtk_label_new(tipString);
436
  GtkWidget *label = gtk_label_new(tipString);
421
  // wrap automatically
437
  // wrap automatically
422
  gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
438
  gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
423
  gtk_container_add(GTK_CONTAINER(sTipWindow), label);
439
  gtk_container_add(GTK_CONTAINER(sTipWindow), label);
424
  gtk_container_set_border_width(GTK_CONTAINER(sTipWindow), 3);
440
  gtk_container_set_border_width(GTK_CONTAINER(sTipWindow), 4);
425
  // set the coords for the widget
441
  // set the coords for the widget
426
  gtk_widget_set_uposition(sTipWindow, aXCoords + root_x,
442
  gtk_widget_set_uposition(sTipWindow, aXCoords + root_x,
427
			   aYCoords + root_y);
443
			   aYCoords + root_y);
Lines 429-441 Link Here
429
  // and show it.
445
  // and show it.
430
  gtk_widget_show_all(sTipWindow);
446
  gtk_widget_show_all(sTipWindow);
431
447
432
  // draw tooltip style border around the text
433
  gtk_paint_flat_box(sTipWindow->style, sTipWindow->window,
434
           GTK_STATE_NORMAL, GTK_SHADOW_OUT, 
435
           NULL, GTK_WIDGET(sTipWindow), "tooltip",
436
           0, 0,
437
           sTipWindow->allocation.width, sTipWindow->allocation.height);
438
439
#ifdef MOZ_WIDGET_GTK
448
#ifdef MOZ_WIDGET_GTK
440
  gtk_widget_popup(sTipWindow, aXCoords + root_x, aYCoords + root_y);
449
  gtk_widget_popup(sTipWindow, aXCoords + root_x, aYCoords + root_y);
441
#endif /* MOZ_WIDGET_GTK */
450
#endif /* MOZ_WIDGET_GTK */
442
-- embedding/browser/gtk/src/GtkPromptService.cpp
451
++ embedding/browser/gtk/src/GtkPromptService.cpp
Lines 75-80 Link Here
75
                             const PRUnichar* aDialogText,
75
                             const PRUnichar* aDialogText,
76
                             const PRUnichar* aCheckMsg, PRBool* aCheckValue)
76
                             const PRUnichar* aCheckMsg, PRBool* aCheckValue)
77
{
77
{
78
    NS_ENSURE_ARG_POINTER(aCheckValue);
79
78
    EmbedPrompter prompter;
80
    EmbedPrompter prompter;
79
    prompter.SetTitle(aDialogTitle ? aDialogTitle : NS_LITERAL_STRING("Alert").get());
81
    prompter.SetTitle(aDialogTitle ? aDialogTitle : NS_LITERAL_STRING("Alert").get());
80
    prompter.SetMessageText(aDialogText);
82
    prompter.SetMessageText(aDialogText);
Lines 109-114 Link Here
109
                               const PRUnichar* aCheckMsg,
111
                               const PRUnichar* aCheckMsg,
110
                               PRBool* aCheckValue, PRBool* aConfirm)
112
                               PRBool* aCheckValue, PRBool* aConfirm)
111
{
113
{
114
    NS_ENSURE_ARG_POINTER(aCheckValue);
115
112
    EmbedPrompter prompter;
116
    EmbedPrompter prompter;
113
    prompter.SetTitle(aDialogTitle ? aDialogTitle : NS_LITERAL_STRING("Confirm").get());
117
    prompter.SetTitle(aDialogTitle ? aDialogTitle : NS_LITERAL_STRING("Confirm").get());
114
    prompter.SetMessageText(aDialogText);
118
    prompter.SetMessageText(aDialogText);
Lines 171-180 Link Here
171
    prompter.SetTitle(aDialogTitle ? aDialogTitle : NS_LITERAL_STRING("Prompt").get());
175
    prompter.SetTitle(aDialogTitle ? aDialogTitle : NS_LITERAL_STRING("Prompt").get());
172
    prompter.SetMessageText(aDialogText);
176
    prompter.SetMessageText(aDialogText);
173
    prompter.SetTextValue(*aValue);
177
    prompter.SetTextValue(*aValue);
174
    if (aCheckMsg) {
178
    if (aCheckMsg)
175
        prompter.SetCheckMessage(aCheckMsg);
179
        prompter.SetCheckMessage(aCheckMsg);
180
    if (aCheckValue)
176
        prompter.SetCheckValue(*aCheckValue);
181
        prompter.SetCheckValue(*aCheckValue);
177
    }
182
178
    prompter.Create(EmbedPrompter::TYPE_PROMPT,
183
    prompter.Create(EmbedPrompter::TYPE_PROMPT,
179
                    GetGtkWindowForDOMWindow(aParent));
184
                    GetGtkWindowForDOMWindow(aParent));
180
    prompter.Run();
185
    prompter.Run();
Lines 204-213 Link Here
204
    prompter.SetMessageText(aDialogText);
209
    prompter.SetMessageText(aDialogText);
205
    prompter.SetUser(*aUsername);
210
    prompter.SetUser(*aUsername);
206
    prompter.SetPassword(*aPassword);
211
    prompter.SetPassword(*aPassword);
207
    if (aCheckMsg) {
212
    if (aCheckMsg)
208
        prompter.SetCheckMessage(aCheckMsg);
213
        prompter.SetCheckMessage(aCheckMsg);
214
    if (aCheckValue)
209
        prompter.SetCheckValue(*aCheckValue);
215
        prompter.SetCheckValue(*aCheckValue);
210
    }
216
211
    prompter.Create(EmbedPrompter::TYPE_PROMPT_USER_PASS,
217
    prompter.Create(EmbedPrompter::TYPE_PROMPT_USER_PASS,
212
                    GetGtkWindowForDOMWindow(aParent));
218
                    GetGtkWindowForDOMWindow(aParent));
213
    prompter.Run();
219
    prompter.Run();
Lines 238-247 Link Here
238
    prompter.SetTitle(aDialogTitle ? aDialogTitle : NS_LITERAL_STRING("Prompt").get());
244
    prompter.SetTitle(aDialogTitle ? aDialogTitle : NS_LITERAL_STRING("Prompt").get());
239
    prompter.SetMessageText(aDialogText);
245
    prompter.SetMessageText(aDialogText);
240
    prompter.SetPassword(*aPassword);
246
    prompter.SetPassword(*aPassword);
241
    if (aCheckMsg) {
247
    if (aCheckMsg)
242
        prompter.SetCheckMessage(aCheckMsg);
248
        prompter.SetCheckMessage(aCheckMsg);
249
    if (aCheckValue)
243
        prompter.SetCheckValue(*aCheckValue);
250
        prompter.SetCheckValue(*aCheckValue);
244
    }
251
245
    prompter.Create(EmbedPrompter::TYPE_PROMPT_PASS,
252
    prompter.Create(EmbedPrompter::TYPE_PROMPT_PASS,
246
                    GetGtkWindowForDOMWindow(aParent));
253
                    GetGtkWindowForDOMWindow(aParent));
247
    prompter.Run();
254
    prompter.Run();
248
-- js/src/jsstr.c
255
++ js/src/jsstr.c
Lines 1378-1388 Link Here
1378
        JSBool ok;
1378
        JSBool ok;
1379
1379
1380
        /*
1380
        /*
1381
         * Save the rightContext from the current regexp, since it
1381
         * Save the regExpStatics from the current regexp, since they may be
1382
         * gets stuck at the end of the replacement string and may
1382
         * clobbered by a RegExp usage in the lambda function.  Note that all
1383
         * be clobbered by a RegExp usage in the lambda function.
1383
         * members of JSRegExpStatics are JSSubStrings, so not GC roots, save
1384
         * input, which is rooted otherwise via argv[-1] in str_replace.
1385
         *
1386
         * We need to clear moreParens in the top-of-stack cx->regExpStatics
1387
         * to it won't be possibly realloc'ed, leaving the bottom-of-stack
1388
         * moreParens pointing to freed memory.
1384
         */
1389
         */
1385
        JSSubString saveRightContext = cx->regExpStatics.rightContext;
1390
        JSRegExpStatics save = cx->regExpStatics;
1391
        cx->regExpStatics.moreParens = NULL;
1386
1392
1387
        /*
1393
        /*
1388
         * In the lambda case, not only do we find the replacement string's
1394
         * In the lambda case, not only do we find the replacement string's
Lines 1460-1466 Link Here
1460
1466
1461
      lambda_out:
1467
      lambda_out:
1462
        js_FreeStack(cx, mark);
1468
        js_FreeStack(cx, mark);
1463
        cx->regExpStatics.rightContext = saveRightContext;
1469
        if (cx->regExpStatics.moreParens)
1470
            JS_free(cx, cx->regExpStatics.moreParens);
1471
        cx->regExpStatics = save;
1464
        return ok;
1472
        return ok;
1465
    }
1473
    }
1466
#endif /* JS_HAS_REPLACE_LAMBDA */
1474
#endif /* JS_HAS_REPLACE_LAMBDA */
1467
-- netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp
1475
++ netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp
Lines 1051-1072 Link Here
1051
    mResponseMsg = "";
1051
    mResponseMsg = "";
1052
1052
1053
    if (mAnonymous) {
1053
    if (mAnonymous) {
1054
        char* anonPassword = nsnull;
1054
        if (!mPassword.IsEmpty()) {
1055
        PRBool useRealEmail = PR_FALSE;
1055
            // XXX Is UTF-8 the best choice?
1056
        nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
1056
            AppendUTF16toUTF8(mPassword, passwordStr);
1057
        if (prefs) {
1057
        } else {
1058
            rv = prefs->GetBoolPref("advanced.mailftp", &useRealEmail);
1058
            nsXPIDLCString anonPassword;
1059
            if (NS_SUCCEEDED(rv) && useRealEmail)
1059
            PRBool useRealEmail = PR_FALSE;
1060
                prefs->GetCharPref("network.ftp.anonymous_password", &anonPassword);
1060
            nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
1061
        }
1061
            if (prefs) {
1062
        if (useRealEmail && anonPassword && *anonPassword != '\0') {
1062
                rv = prefs->GetBoolPref("advanced.mailftp", &useRealEmail);
1063
            passwordStr.Append(anonPassword);
1063
                if (NS_SUCCEEDED(rv) && useRealEmail)
1064
            nsMemory::Free(anonPassword);
1064
                    prefs->GetCharPref("network.ftp.anonymous_password", getter_Copies(anonPassword));
1065
        }
1065
            }
1066
        else {
1066
            if (!anonPassword.IsEmpty()) {
1067
            // We need to default to a valid email address - bug 101027
1067
                passwordStr.Append(anonPassword);
1068
            // example.com is reserved (rfc2606), so use that
1068
            } else {
1069
            passwordStr.Append("mozilla@example.com");
1069
                // We need to default to a valid email address - bug 101027
1070
                // example.com is reserved (rfc2606), so use that
1071
                passwordStr.Append("mozilla@example.com");
1072
            }
1070
        }
1073
        }
1071
    } else {
1074
    } else {
1072
        if (mPassword.IsEmpty() || mRetryPass) {
1075
        if (mPassword.IsEmpty() || mRetryPass) {
Lines 1146-1151 Link Here
1146
            }
1149
            }
1147
        }
1150
        }
1148
1151
1152
        // If the login was anonymous, and it failed, try again with a username
1153
        if (mAnonymous) {
1154
            mAnonymous = PR_FALSE;
1155
            return FTP_S_USER;
1156
        }
1157
1149
        mRetryPass = PR_TRUE;
1158
        mRetryPass = PR_TRUE;
1150
        return FTP_ERROR;
1159
        return FTP_ERROR;
1151
    }
1160
    }
1152
-- netwerk/protocol/http/src/nsHttpHandler.cpp
1161
++ netwerk/protocol/http/src/nsHttpHandler.cpp
Lines 669-676 Link Here
669
    if (ret >= 0) {
669
    if (ret >= 0) {
670
        nsCString buf;  
670
        nsCString buf;  
671
        buf =  (char*)name.sysname;
671
        buf =  (char*)name.sysname;
672
        buf += ' ';
672
673
        buf += (char*)name.machine;
673
        if (strcmp(name.machine, "x86_64") == 0 &&
674
            sizeof(long) == sizeof(PRInt32)) {
675
            // We're running 32-bit code on x86_64. Make this browser
676
            // look like it's running on i686 hardware, but append "
677
            // (x86_64)" to the end of the oscpu identifier to be able
678
            // to differentiate this from someone running 64-bit code
679
            // on x86_64..
680
681
            buf += " i686 (x86_64)";
682
        } else {
683
            buf += ' ';
684
685
            buf += (char*)name.machine;
686
        }
687
674
        mOscpu.Assign(buf);
688
        mOscpu.Assign(buf);
675
    }
689
    }
676
#endif
690
#endif
677
-- netwerk/necko-config.h
691
++ netwerk/necko-config.h
Line 0 Link Here
0
-- profile/dirserviceprovider/public/nsProfileDirServiceProvider.h
1
/* netwerk/necko-config.h.  Generated automatically by configure.  */
2
/* ***** BEGIN LICENSE BLOCK *****
3
 * Version: NPL 1.1/GPL 2.0/LGPL 2.1
4
 *
5
 * The contents of this file are subject to the Netscape Public License
6
 * Version 1.1 (the "License"); you may not use this file except in
7
 * compliance with the License. You may obtain a copy of the License at
8
 * http://www.mozilla.org/NPL/
9
 *
10
 * Software distributed under the License is distributed on an "AS IS" basis,
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
 * for the specific language governing rights and limitations under the
13
 * License.
14
 *
15
 * The Original Code is mozilla.org code.
16
 *
17
 * The Initial Developer of the Original Code is 
18
 * Netscape Communications Corporation.
19
 * Portions created by the Initial Developer are Copyright (C) 2003
20
 * the Initial Developer. All Rights Reserved.
21
 *
22
 * Contributor(s):
23
 *
24
 * Alternatively, the contents of this file may be used under the terms of
25
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
26
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27
 * in which case the provisions of the GPL or the LGPL are applicable instead
28
 * of those above. If you wish to allow use of your version of this file only
29
 * under the terms of either the GPL or the LGPL, and not to allow others to
30
 * use your version of this file under the terms of the NPL, indicate your
31
 * decision by deleting the provisions above and replace them with the notice
32
 * and other provisions required by the GPL or the LGPL. If you do not delete
33
 * the provisions above, a recipient may use your version of this file under
34
 * the terms of any one of the NPL, the GPL or the LGPL.
35
 *
36
 * ***** END LICENSE BLOCK ***** */
37
38
#ifndef _NECKO_CONFIG_H_
39
#define _NECKO_CONFIG_H_
40
41
#define NECKO_DISK_CACHE 1
42
43
/* #undef NECKO_SMALL_BUFFERS */
44
45
#define NECKO_COOKIES 1
46
47
#define NECKO_PROTOCOL_about 1
48
#define NECKO_PROTOCOL_data 1
49
#define NECKO_PROTOCOL_file 1
50
#define NECKO_PROTOCOL_ftp 1
51
#define NECKO_PROTOCOL_gopher 1
52
#define NECKO_PROTOCOL_http 1
53
#define NECKO_PROTOCOL_jar 1
54
#define NECKO_PROTOCOL_keyword 1
55
#define NECKO_PROTOCOL_res 1
56
#define NECKO_PROTOCOL_viewsource 1
57
58
#endif
59
++ profile/dirserviceprovider/public/nsProfileDirServiceProvider.h
Lines 107-112 Link Here
107
  static nsIAtom*          sApp_PreferencesFile50;
107
  static nsIAtom*          sApp_PreferencesFile50;
108
  static nsIAtom*          sApp_UserProfileDirectory50;
108
  static nsIAtom*          sApp_UserProfileDirectory50;
109
  static nsIAtom*          sApp_UserChromeDirectory;
109
  static nsIAtom*          sApp_UserChromeDirectory;
110
  static nsIAtom*          sApp_UserSearchDirectory50;
110
  static nsIAtom*          sApp_LocalStore50;
111
  static nsIAtom*          sApp_LocalStore50;
111
  static nsIAtom*          sApp_History50;
112
  static nsIAtom*          sApp_History50;
112
  static nsIAtom*          sApp_UsersPanels50;
113
  static nsIAtom*          sApp_UsersPanels50;
113
-- profile/dirserviceprovider/src/nsProfileDirServiceProvider.cpp
114
++ profile/dirserviceprovider/src/nsProfileDirServiceProvider.cpp
Lines 56-68 Link Here
56
56
57
#define PREFS_FILE_50_NAME           NS_LITERAL_CSTRING("prefs.js")
57
#define PREFS_FILE_50_NAME           NS_LITERAL_CSTRING("prefs.js")
58
#define USER_CHROME_DIR_50_NAME      NS_LITERAL_CSTRING("chrome")
58
#define USER_CHROME_DIR_50_NAME      NS_LITERAL_CSTRING("chrome")
59
#define USER_SEARCH_DIR_50_NAME      NS_LITERAL_CSTRING("search")
59
#define LOCAL_STORE_FILE_50_NAME     NS_LITERAL_CSTRING("localstore.rdf")
60
#define LOCAL_STORE_FILE_50_NAME     NS_LITERAL_CSTRING("localstore.rdf")
60
#define HISTORY_FILE_50_NAME         NS_LITERAL_CSTRING("history.dat")
61
#define HISTORY_FILE_50_NAME         NS_LITERAL_CSTRING("history.dat")
61
#define PANELS_FILE_50_NAME          NS_LITERAL_CSTRING("panels.rdf")
62
#define PANELS_FILE_50_NAME          NS_LITERAL_CSTRING("panels.rdf")
62
#define MIME_TYPES_FILE_50_NAME      NS_LITERAL_CSTRING("mimeTypes.rdf")
63
#define MIME_TYPES_FILE_50_NAME      NS_LITERAL_CSTRING("mimeTypes.rdf")
63
#define BOOKMARKS_FILE_50_NAME       NS_LITERAL_CSTRING("bookmarks.html")
64
#define BOOKMARKS_FILE_50_NAME       NS_LITERAL_CSTRING("bookmarks.html")
64
#define DOWNLOADS_FILE_50_NAME       NS_LITERAL_CSTRING("downloads.rdf")
65
#define DOWNLOADS_FILE_50_NAME       NS_LITERAL_CSTRING("downloads.rdf")
65
#define SEARCH_FILE_50_NAME          NS_LITERAL_CSTRING("search.rdf" )
66
#define MAIL_DIR_50_NAME             NS_LITERAL_CSTRING("Mail")
66
#define MAIL_DIR_50_NAME             NS_LITERAL_CSTRING("Mail")
67
#define IMAP_MAIL_DIR_50_NAME        NS_LITERAL_CSTRING("ImapMail")
67
#define IMAP_MAIL_DIR_50_NAME        NS_LITERAL_CSTRING("ImapMail")
68
#define NEWS_DIR_50_NAME             NS_LITERAL_CSTRING("News")
68
#define NEWS_DIR_50_NAME             NS_LITERAL_CSTRING("News")
Lines 74-79 Link Here
74
nsIAtom*   nsProfileDirServiceProvider::sApp_PreferencesFile50;
74
nsIAtom*   nsProfileDirServiceProvider::sApp_PreferencesFile50;
75
nsIAtom*   nsProfileDirServiceProvider::sApp_UserProfileDirectory50;
75
nsIAtom*   nsProfileDirServiceProvider::sApp_UserProfileDirectory50;
76
nsIAtom*   nsProfileDirServiceProvider::sApp_UserChromeDirectory;
76
nsIAtom*   nsProfileDirServiceProvider::sApp_UserChromeDirectory;
77
nsIAtom*   nsProfileDirServiceProvider::sApp_UserSearchDirectory50;
77
nsIAtom*   nsProfileDirServiceProvider::sApp_LocalStore50;
78
nsIAtom*   nsProfileDirServiceProvider::sApp_LocalStore50;
78
nsIAtom*   nsProfileDirServiceProvider::sApp_History50;
79
nsIAtom*   nsProfileDirServiceProvider::sApp_History50;
79
nsIAtom*   nsProfileDirServiceProvider::sApp_UsersPanels50;
80
nsIAtom*   nsProfileDirServiceProvider::sApp_UsersPanels50;
Lines 261-266 Link Here
261
    if (NS_SUCCEEDED(rv))
262
    if (NS_SUCCEEDED(rv))
262
      rv = localFile->AppendNative(USER_CHROME_DIR_50_NAME);
263
      rv = localFile->AppendNative(USER_CHROME_DIR_50_NAME);
263
  }
264
  }
265
  else if (inAtom == sApp_UserSearchDirectory50) {
266
    rv = domainDir->Clone(getter_AddRefs(localFile));
267
    if (NS_SUCCEEDED(rv))
268
      rv = localFile->AppendNative(USER_SEARCH_DIR_50_NAME);
269
  }
264
  else if (inAtom == sApp_LocalStore50) {
270
  else if (inAtom == sApp_LocalStore50) {
265
    rv = domainDir->Clone(getter_AddRefs(localFile));
271
    rv = domainDir->Clone(getter_AddRefs(localFile));
266
    if (NS_SUCCEEDED(rv)) {
272
    if (NS_SUCCEEDED(rv)) {
Lines 303-316 Link Here
303
    if (NS_SUCCEEDED(rv))
309
    if (NS_SUCCEEDED(rv))
304
      rv = localFile->AppendNative(DOWNLOADS_FILE_50_NAME);
310
      rv = localFile->AppendNative(DOWNLOADS_FILE_50_NAME);
305
  }
311
  }
306
  else if (inAtom == sApp_SearchFile50) {
307
    rv = domainDir->Clone(getter_AddRefs(localFile));
308
    if (NS_SUCCEEDED(rv)) {
309
      rv = localFile->AppendNative(SEARCH_FILE_50_NAME);
310
      if (NS_SUCCEEDED(rv))
311
        rv = EnsureProfileFileExists(localFile, domainDir);
312
    }
313
  }
314
  else if (inAtom == sApp_MailDirectory50) {
312
  else if (inAtom == sApp_MailDirectory50) {
315
    rv = domainDir->Clone(getter_AddRefs(localFile));
313
    rv = domainDir->Clone(getter_AddRefs(localFile));
316
    if (NS_SUCCEEDED(rv))
314
    if (NS_SUCCEEDED(rv))
Lines 370-382 Link Here
370
    { NS_APP_PREFS_50_FILE,          &sApp_PreferencesFile50 },
368
    { NS_APP_PREFS_50_FILE,          &sApp_PreferencesFile50 },
371
    { NS_APP_USER_PROFILE_50_DIR,    &sApp_UserProfileDirectory50 },
369
    { NS_APP_USER_PROFILE_50_DIR,    &sApp_UserProfileDirectory50 },
372
    { NS_APP_USER_CHROME_DIR,        &sApp_UserChromeDirectory },
370
    { NS_APP_USER_CHROME_DIR,        &sApp_UserChromeDirectory },
371
    { NS_APP_USER_SEARCH_50_DIR,     &sApp_UserSearchDirectory50 },
373
    { NS_APP_LOCALSTORE_50_FILE,     &sApp_LocalStore50 },
372
    { NS_APP_LOCALSTORE_50_FILE,     &sApp_LocalStore50 },
374
    { NS_APP_HISTORY_50_FILE,        &sApp_History50 },
373
    { NS_APP_HISTORY_50_FILE,        &sApp_History50 },
375
    { NS_APP_USER_PANELS_50_FILE,    &sApp_UsersPanels50 },
374
    { NS_APP_USER_PANELS_50_FILE,    &sApp_UsersPanels50 },
376
    { NS_APP_USER_MIMETYPES_50_FILE, &sApp_UsersMimeTypes50 },
375
    { NS_APP_USER_MIMETYPES_50_FILE, &sApp_UsersMimeTypes50 },
377
    { NS_APP_BOOKMARKS_50_FILE,      &sApp_BookmarksFile50 },
376
    { NS_APP_BOOKMARKS_50_FILE,      &sApp_BookmarksFile50 },
378
    { NS_APP_DOWNLOADS_50_FILE,      &sApp_DownloadsFile50 },
377
    { NS_APP_DOWNLOADS_50_FILE,      &sApp_DownloadsFile50 },
379
    { NS_APP_SEARCH_50_FILE,         &sApp_SearchFile50 },
380
    { NS_APP_MAIL_50_DIR,            &sApp_MailDirectory50 },
378
    { NS_APP_MAIL_50_DIR,            &sApp_MailDirectory50 },
381
    { NS_APP_IMAP_MAIL_50_DIR,       &sApp_ImapMailDirectory50 },
379
    { NS_APP_IMAP_MAIL_50_DIR,       &sApp_ImapMailDirectory50 },
382
    { NS_APP_NEWS_50_DIR,            &sApp_NewsDirectory50 },
380
    { NS_APP_NEWS_50_DIR,            &sApp_NewsDirectory50 },
Lines 534-546 Link Here
534
  (void) directoryService->Undefine(NS_APP_PREFS_50_FILE);
532
  (void) directoryService->Undefine(NS_APP_PREFS_50_FILE);
535
  (void) directoryService->Undefine(NS_APP_USER_PROFILE_50_DIR);
533
  (void) directoryService->Undefine(NS_APP_USER_PROFILE_50_DIR);
536
  (void) directoryService->Undefine(NS_APP_USER_CHROME_DIR);
534
  (void) directoryService->Undefine(NS_APP_USER_CHROME_DIR);
535
  (void) directoryService->Undefine(NS_APP_USER_SEARCH_50_DIR);
537
  (void) directoryService->Undefine(NS_APP_LOCALSTORE_50_FILE);
536
  (void) directoryService->Undefine(NS_APP_LOCALSTORE_50_FILE);
538
  (void) directoryService->Undefine(NS_APP_HISTORY_50_FILE);
537
  (void) directoryService->Undefine(NS_APP_HISTORY_50_FILE);
539
  (void) directoryService->Undefine(NS_APP_USER_PANELS_50_FILE);
538
  (void) directoryService->Undefine(NS_APP_USER_PANELS_50_FILE);
540
  (void) directoryService->Undefine(NS_APP_USER_MIMETYPES_50_FILE);
539
  (void) directoryService->Undefine(NS_APP_USER_MIMETYPES_50_FILE);
541
  (void) directoryService->Undefine(NS_APP_BOOKMARKS_50_FILE);
540
  (void) directoryService->Undefine(NS_APP_BOOKMARKS_50_FILE);
542
  (void) directoryService->Undefine(NS_APP_DOWNLOADS_50_FILE);
541
  (void) directoryService->Undefine(NS_APP_DOWNLOADS_50_FILE);
543
  (void) directoryService->Undefine(NS_APP_SEARCH_50_FILE);
544
  (void) directoryService->Undefine(NS_APP_MAIL_50_DIR);
542
  (void) directoryService->Undefine(NS_APP_MAIL_50_DIR);
545
  (void) directoryService->Undefine(NS_APP_IMAP_MAIL_50_DIR);
543
  (void) directoryService->Undefine(NS_APP_IMAP_MAIL_50_DIR);
546
  (void) directoryService->Undefine(NS_APP_NEWS_50_DIR);
544
  (void) directoryService->Undefine(NS_APP_NEWS_50_DIR);
547
-- uriloader/exthandler/unix/nsGNOMERegistry.cpp
545
++ uriloader/exthandler/unix/nsGNOMERegistry.cpp
Lines 283-288 Link Here
283
283
284
  gchar *nativeCommand = g_filename_from_utf8(handlerApp->command,
284
  gchar *nativeCommand = g_filename_from_utf8(handlerApp->command,
285
                                              -1, NULL, NULL, NULL);
285
                                              -1, NULL, NULL, NULL);
286
287
  // Some versions of the mime stuff will add whitespace to the end or
288
  // beginning of the command
289
  nativeCommand = g_strstrip(nativeCommand);
290
286
  if (!nativeCommand) {
291
  if (!nativeCommand) {
287
    NS_ERROR("Could not convert helper app command to filesystem encoding");
292
    NS_ERROR("Could not convert helper app command to filesystem encoding");
288
    _gnome_vfs_mime_application_free(handlerApp);
293
    _gnome_vfs_mime_application_free(handlerApp);
289
-- xpcom/io/nsDirectoryService.cpp
294
++ xpcom/io/nsDirectoryService.cpp
Lines 400-405 Link Here
400
nsIAtom*  nsDirectoryService::sLocalDirectory = nsnull;
400
nsIAtom*  nsDirectoryService::sLocalDirectory = nsnull;
401
nsIAtom*  nsDirectoryService::sLibDirectory = nsnull;
401
nsIAtom*  nsDirectoryService::sLibDirectory = nsnull;
402
nsIAtom*  nsDirectoryService::sHomeDirectory = nsnull;
402
nsIAtom*  nsDirectoryService::sHomeDirectory = nsnull;
403
nsIAtom*  nsDirectoryService::sDesktopDirectory = nsnull;
403
#elif defined (XP_OS2)
404
#elif defined (XP_OS2)
404
nsIAtom*  nsDirectoryService::sSystemDirectory = nsnull;
405
nsIAtom*  nsDirectoryService::sSystemDirectory = nsnull;
405
nsIAtom*  nsDirectoryService::sOS2Directory = nsnull;
406
nsIAtom*  nsDirectoryService::sOS2Directory = nsnull;
Lines 509-514 Link Here
509
    { NS_UNIX_LOCAL_DIR,           &nsDirectoryService::sLocalDirectory },
510
    { NS_UNIX_LOCAL_DIR,           &nsDirectoryService::sLocalDirectory },
510
    { NS_UNIX_LIB_DIR,             &nsDirectoryService::sLibDirectory },
511
    { NS_UNIX_LIB_DIR,             &nsDirectoryService::sLibDirectory },
511
    { NS_UNIX_HOME_DIR,            &nsDirectoryService::sHomeDirectory },
512
    { NS_UNIX_HOME_DIR,            &nsDirectoryService::sHomeDirectory },
513
    { NS_UNIX_DESKTOP_DIR,         &nsDirectoryService::sDesktopDirectory },
512
#elif defined (XP_OS2)
514
#elif defined (XP_OS2)
513
    { NS_OS_SYSTEM_DIR,            &nsDirectoryService::sSystemDirectory },
515
    { NS_OS_SYSTEM_DIR,            &nsDirectoryService::sSystemDirectory },
514
    { NS_OS2_DIR,                  &nsDirectoryService::sOS2Directory },
516
    { NS_OS2_DIR,                  &nsDirectoryService::sOS2Directory },
Lines 1098-1103 Link Here
1098
    {
1100
    {
1099
        rv = GetSpecialSystemDirectory(Unix_HomeDirectory, getter_AddRefs(localFile)); 
1101
        rv = GetSpecialSystemDirectory(Unix_HomeDirectory, getter_AddRefs(localFile)); 
1100
    }
1102
    }
1103
    else if (inAtom == nsDirectoryService::sDesktopDirectory)
1104
    {
1105
        rv = GetSpecialSystemDirectory(Unix_DesktopDirectory, getter_AddRefs(localFile)); 
1106
    }
1101
#elif defined (XP_OS2)
1107
#elif defined (XP_OS2)
1102
    else if (inAtom == nsDirectoryService::sSystemDirectory)
1108
    else if (inAtom == nsDirectoryService::sSystemDirectory)
1103
    {
1109
    {
1104
-- xpcom/io/nsAppDirectoryServiceDefs.h
1110
++ xpcom/io/nsAppDirectoryServiceDefs.h
Lines 75-82 Link Here
75
#define NS_APP_CHROME_DIR                       "AChrom"
75
#define NS_APP_CHROME_DIR                       "AChrom"
76
#define NS_APP_PLUGINS_DIR                      "APlugns"       // Deprecated - use NS_APP_PLUGINS_DIR_LIST
76
#define NS_APP_PLUGINS_DIR                      "APlugns"       // Deprecated - use NS_APP_PLUGINS_DIR_LIST
77
#define NS_APP_SEARCH_DIR                       "SrchPlugns"
77
#define NS_APP_SEARCH_DIR                       "SrchPlugns"
78
#define NS_USER_SEARCH_DIR                      "UsrSrchPlugns"
78
79
79
#define NS_APP_PLUGINS_DIR_LIST                 "APluginsDL"
80
#define NS_APP_PLUGINS_DIR_LIST                 "APluginsDL"
81
#define NS_APP_SEARCH_DIR_LIST                  "ASearchDL"
80
82
81
// --------------------------------------------------------------------------------------
83
// --------------------------------------------------------------------------------------
82
// Files and directories which exist on a per-profile basis
84
// Files and directories which exist on a per-profile basis
Lines 108-114 Link Here
108
110
109
#define NS_APP_DOWNLOADS_50_FILE                "DLoads"
111
#define NS_APP_DOWNLOADS_50_FILE                "DLoads"
110
         
112
         
111
#define NS_APP_SEARCH_50_FILE                   "SrchF"
113
#define NS_APP_USER_SEARCH_50_DIR               "USrchD"
112
         
114
         
113
#define NS_APP_MAIL_50_DIR                      "MailD"
115
#define NS_APP_MAIL_50_DIR                      "MailD"
114
#define NS_APP_IMAP_MAIL_50_DIR                 "IMapMD"
116
#define NS_APP_IMAP_MAIL_50_DIR                 "IMapMD"
115
-- xpcom/io/nsAppFileLocationProvider.cpp
117
++ xpcom/io/nsAppFileLocationProvider.cpp
Lines 252-257 Link Here
252
        if (NS_SUCCEEDED(rv))
252
        if (NS_SUCCEEDED(rv))
253
            rv = localFile->AppendRelativeNativePath(SEARCH_DIR_NAME);
253
            rv = localFile->AppendRelativeNativePath(SEARCH_DIR_NAME);
254
    }
254
    }
255
    else if (nsCRT::strcmp(prop, NS_USER_SEARCH_DIR) == 0)
256
    {
257
        rv = GetProductDirectory(getter_AddRefs(localFile));
258
        if (NS_SUCCEEDED(rv))
259
            rv = localFile->AppendRelativeNativePath(SEARCH_DIR_NAME);
260
    }
255
    else if (nsCRT::strcmp(prop, NS_APP_INSTALL_CLEANUP_DIR) == 0)
261
    else if (nsCRT::strcmp(prop, NS_APP_INSTALL_CLEANUP_DIR) == 0)
256
    {   
262
    {   
257
        // This is cloned so that embeddors will have a hook to override
263
        // This is cloned so that embeddors will have a hook to override
Lines 589-593 Link Here
589
        NS_IF_ADDREF(*_retval);
595
        NS_IF_ADDREF(*_retval);
590
        rv = *_retval ? NS_OK : NS_ERROR_OUT_OF_MEMORY;        
596
        rv = *_retval ? NS_OK : NS_ERROR_OUT_OF_MEMORY;        
591
    }
597
    }
598
    if (!nsCRT::strcmp(prop, NS_APP_SEARCH_DIR_LIST))
599
    {
600
        static const char* keys[] = { nsnull, NS_USER_SEARCH_DIR, NS_APP_SEARCH_DIR, nsnull };
601
        if (!keys[0] && !(keys[0] = PR_GetEnv("MOZ_SEARCH_ENGINE_PATH"))) {
602
            static const char nullstr = 0;
603
            keys[0] = &nullstr;
604
        }
605
        *_retval = new nsPathsDirectoryEnumerator(this, keys);
606
        NS_IF_ADDREF(*_retval);
607
        rv = *_retval ? NS_OK : NS_ERROR_OUT_OF_MEMORY;        
608
    }
592
    return rv;
609
    return rv;
593
}
610
}
594
-- xpcom/io/SpecialSystemDirectory.cpp
611
++ xpcom/io/SpecialSystemDirectory.cpp
Lines 567-572 Link Here
567
                                         PR_TRUE, 
567
                                         PR_TRUE, 
568
                                         aFile);
568
                                         aFile);
569
569
570
        case Unix_DesktopDirectory:
571
        {
572
            nsCAutoString desktopDir(PR_GetEnv("HOME"));
573
            if (!desktopDir.IsEmpty() || !(desktopDir.Equals("/")))
574
            {   
575
              desktopDir.Append("/Desktop");
576
            } else {
577
              desktopDir = "";
578
            }
579
            return NS_NewNativeLocalFile(desktopDir, PR_TRUE, aFile);
580
        }
581
        
570
        case Unix_HomeDirectory:
582
        case Unix_HomeDirectory:
571
#ifdef VMS
583
#ifdef VMS
572
        {
584
        {
573
-- xpcom/io/SpecialSystemDirectory.h
585
++ xpcom/io/SpecialSystemDirectory.h
Lines 96-101 Link Here
96
  Unix_LocalDirectory       =   301,   
96
  Unix_LocalDirectory       =   301,   
97
  Unix_LibDirectory         =   302,   
97
  Unix_LibDirectory         =   302,   
98
  Unix_HomeDirectory        =   303,
98
  Unix_HomeDirectory        =   303,
99
  Unix_DesktopDirectory     =   304,
99
  
100
  
100
  BeOS_SettingsDirectory    =   401,   
101
  BeOS_SettingsDirectory    =   401,   
101
  BeOS_HomeDirectory        =   402,   
102
  BeOS_HomeDirectory        =   402,   
102
-- xpcom/io/nsDirectoryService.h
103
++ xpcom/io/nsDirectoryService.h
Lines 157-162 Link Here
157
    static nsIAtom *sLocalDirectory;
157
    static nsIAtom *sLocalDirectory;
158
    static nsIAtom *sLibDirectory;
158
    static nsIAtom *sLibDirectory;
159
    static nsIAtom *sHomeDirectory;
159
    static nsIAtom *sHomeDirectory;
160
    static nsIAtom *sDesktopDirectory;
160
#elif defined (XP_OS2)
161
#elif defined (XP_OS2)
161
    static nsIAtom *sSystemDirectory;
162
    static nsIAtom *sSystemDirectory;
162
    static nsIAtom *sOS2Directory;
163
    static nsIAtom *sOS2Directory;
163
-- xpcom/io/nsDirectoryServiceDefs.h
164
++ xpcom/io/nsDirectoryServiceDefs.h
Lines 178-183 Link Here
178
    #define NS_UNIX_LOCAL_DIR                   "Locl"
178
    #define NS_UNIX_LOCAL_DIR                   "Locl"
179
    #define NS_UNIX_LIB_DIR                     "LibD"
179
    #define NS_UNIX_LIB_DIR                     "LibD"
180
    #define NS_UNIX_HOME_DIR                    "Home" 
180
    #define NS_UNIX_HOME_DIR                    "Home" 
181
    #define NS_UNIX_DESKTOP_DIR                 "Desktop" 
181
#elif defined (XP_OS2)
182
#elif defined (XP_OS2)
182
    #define NS_OS2_DIR                          "OS2Dir"
183
    #define NS_OS2_DIR                          "OS2Dir"
183
    #define NS_OS2_HOME_DIR                     "Home"
184
    #define NS_OS2_HOME_DIR                     "Home"
184
-- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp
185
++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp
Lines 21-27 Link Here
21
 * Contributor(s):
21
 * Contributor(s):
22
 *   Stuart Parmenter <pavlov@netscape.com>
22
 *   Stuart Parmenter <pavlov@netscape.com>
23
 *   Brendan Eich     <brendan@mozilla.org>
23
 *   Brendan Eich     <brendan@mozilla.org>
24
 * 
24
 *   Thiemo Seufer    <seufer@csv.ica.uni-stuttgart.de>
25
 */
25
 */
26
26
27
/* This code is for MIPS using the O32 ABI. */
27
/* This code is for MIPS using the O32 ABI. */
Lines 37-46 Link Here
37
    // Count a word for a0 even though it's never stored or loaded
37
    // Count a word for a0 even though it's never stored or loaded
38
    // We do this only for alignment of register pairs.
38
    // We do this only for alignment of register pairs.
39
    PRUint32 result = 1;
39
    PRUint32 result = 1;
40
    for (PRUint32 i = 0; i < paramCount; i++, s++)
40
    for (PRUint32 i = 0; i < paramCount; i++, result++, s++)
41
    {
41
    {
42
        result++;
43
44
        if (s->IsPtrData())
42
        if (s->IsPtrData())
45
            continue;
43
            continue;
46
44
Lines 53-58 Link Here
53
		result++;
51
		result++;
54
	    result++;
52
	    result++;
55
	    break;
53
	    break;
54
55
        default:
56
            break;
56
        }
57
        }
57
    }
58
    }
58
    return (result + 1) & ~(PRUint32)1;
59
    return (result + 1) & ~(PRUint32)1;
Lines 73-80 Link Here
73
            continue;
74
            continue;
74
        }
75
        }
75
76
76
        *((void**)d) = s->val.p;
77
78
        switch(s->type)
77
        switch(s->type)
79
        {
78
        {
80
        case nsXPTType::T_I64    :
79
        case nsXPTType::T_I64    :
Lines 89-94 Link Here
89
            if ((PRWord)d & 4) d++;
88
            if ((PRWord)d & 4) d++;
90
            *((double*)   d) = s->val.d;      d++;
89
            *((double*)   d) = s->val.d;      d++;
91
            break;
90
            break;
91
        default:
92
            *((void**)d) = s->val.p;
93
            break;
92
        }
94
        }
93
    }
95
    }
94
}
96
}
Lines 103-107 Link Here
103
                   PRUint32 paramCount, nsXPTCVariant* params)
105
                   PRUint32 paramCount, nsXPTCVariant* params)
104
{
106
{
105
    return _XPTC_InvokeByIndex(that, methodIndex, paramCount, params);
107
    return _XPTC_InvokeByIndex(that, methodIndex, paramCount, params);
106
}    
108
}
107
108
-- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp
109
++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp
Lines 20-25 Link Here
20
 * the Initial Developer. All Rights Reserved.
20
 * the Initial Developer. All Rights Reserved.
21
 *
21
 *
22
 * Contributor(s):
22
 * Contributor(s):
23
 *   Glen Nakamura <glen@imodulo.com>
23
 *
24
 *
24
 * Alternatively, the contents of this file may be used under the terms of
25
 * Alternatively, the contents of this file may be used under the terms of
25
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
Lines 37-44 Link Here
37
38
38
/* Platform specific code to invoke XPCOM methods on native objects */
39
/* Platform specific code to invoke XPCOM methods on native objects */
39
40
40
/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
41
42
#include "xptcprivate.h"
41
#include "xptcprivate.h"
43
42
44
/* Prototype specifies unmangled function name and disables unused warning */
43
/* Prototype specifies unmangled function name and disables unused warning */
Lines 163-169 Link Here
163
    "bis $16,$16,$1\n\t"    /* load "this" */
162
    "bis $16,$16,$1\n\t"    /* load "this" */
164
    "ldq $2,16($15)\n\t"    /* load "methodIndex" */
163
    "ldq $2,16($15)\n\t"    /* load "methodIndex" */
165
    "ldq $1,0($1)\n\t"      /* load vtable */
164
    "ldq $1,0($1)\n\t"      /* load vtable */
165
#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
166
    "s8addq $2,$31,$2\n\t"  /* vtable index = "methodIndex" * 8 */
167
#else /* not G++ V3 ABI */
166
    "s8addq $2,16,$2\n\t"   /* vtable index = "methodIndex" * 8 + 16 */
168
    "s8addq $2,16,$2\n\t"   /* vtable index = "methodIndex" * 8 + 16 */
169
#endif /* G++ V3 ABI */
167
    "addq $1,$2,$1\n\t"
170
    "addq $1,$2,$1\n\t"
168
    "ldq $27,0($1)\n\t"     /* load address of function */
171
    "ldq $27,0($1)\n\t"     /* load address of function */
169
    "jsr $26,($27),0\n\t"   /* call virtual function */
172
    "jsr $26,($27),0\n\t"   /* call virtual function */
Lines 176-179 Link Here
176
    "ret $31,($26),1\n\t"
179
    "ret $31,($26),1\n\t"
177
    ".end XPTC_InvokeByIndex"
180
    ".end XPTC_InvokeByIndex"
178
    );
181
    );
179
182
++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_alpha.cpp
180
-- xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_alpha.cpp
Lines 20-25 Link Here
20
 * the Initial Developer. All Rights Reserved.
20
 * the Initial Developer. All Rights Reserved.
21
 *
21
 *
22
 * Contributor(s):
22
 * Contributor(s):
23
 *   Glen Nakamura <glen@imodulo.com>
23
 *
24
 *
24
 * Alternatively, the contents of this file may be used under the terms of
25
 * Alternatively, the contents of this file may be used under the terms of
25
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
Lines 37-44 Link Here
37
38
38
/* Implement shared vtbl methods. */
39
/* Implement shared vtbl methods. */
39
40
40
/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
41
42
#include "xptcprivate.h"
41
#include "xptcprivate.h"
43
42
44
/* Prototype specifies unmangled function name and disables unused warning */
43
/* Prototype specifies unmangled function name and disables unused warning */
Lines 188-210 Link Here
188
 * nsresult nsXPTCStubBase::Stub##n()
187
 * nsresult nsXPTCStubBase::Stub##n()
189
 *  Sets register $1 to "methodIndex" and jumps to SharedStub.
188
 *  Sets register $1 to "methodIndex" and jumps to SharedStub.
190
 */
189
 */
190
#define STUB_MANGLED_ENTRY(n, symbol) \
191
    "#### Stub"#n" ####"      "\n\t" \
192
    ".text"                   "\n\t" \
193
    ".align 5"                "\n\t" \
194
    ".globl " symbol          "\n\t" \
195
    ".ent " symbol            "\n"   \
196
symbol ":"                    "\n\t" \
197
    ".frame $30,0,$26,0"      "\n\t" \
198
    "ldgp $29,0($27)"         "\n"   \
199
"$" symbol "..ng:"            "\n\t" \
200
    ".prologue 1"             "\n\t" \
201
    "lda $1,"#n               "\n\t" \
202
    "br $31,$SharedStub..ng"  "\n\t" \
203
    ".end " symbol
204
205
#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
206
207
#define STUB_ENTRY(n) \
208
__asm__( \
209
    ".if "#n" < 10"                                              "\n\t" \
210
        STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase5Stub"#n"Ev")  "\n\t" \
211
    ".elseif "#n" < 100"                                         "\n\t" \
212
        STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase6Stub"#n"Ev")  "\n\t" \
213
    ".elseif "#n" < 1000"                                        "\n\t" \
214
        STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase7Stub"#n"Ev")  "\n\t" \
215
    ".else"                                                      "\n\t" \
216
    ".err \"Stub"#n" >= 1000 not yet supported.\""               "\n\t" \
217
    ".endif" \
218
    );
219
220
#else /* not G++ V3 ABI */
221
191
#define STUB_ENTRY(n) \
222
#define STUB_ENTRY(n) \
192
__asm__( \
223
__asm__( \
193
    "#### Stub"#n" ####\n" \
224
    STUB_MANGLED_ENTRY(n, "Stub"#n"__14nsXPTCStubBase") \
194
".text\n\t" \
195
    ".align 5\n\t" \
196
    ".globl Stub"#n"__14nsXPTCStubBase\n\t" \
197
    ".ent Stub"#n"__14nsXPTCStubBase\n" \
198
"Stub"#n"__14nsXPTCStubBase:\n\t" \
199
    ".frame $30,0,$26,0\n\t" \
200
    "ldgp $29,0($27)\n" \
201
"$Stub"#n"__14nsXPTCStubBase..ng:\n\t" \
202
    ".prologue 1\n\t" \
203
    "lda $1,"#n"\n\t" \
204
    "br $31,$SharedStub..ng\n\t" \
205
    ".end Stub"#n"__14nsXPTCStubBase" \
206
    );
225
    );
207
226
227
#endif /* G++ V3 ABI */
228
208
#define SENTINEL_ENTRY(n) \
229
#define SENTINEL_ENTRY(n) \
209
nsresult nsXPTCStubBase::Sentinel##n() \
230
nsresult nsXPTCStubBase::Sentinel##n() \
210
{ \
231
{ \
Lines 213-216 Link Here
213
}
234
}
214
235
215
#include "xptcstubsdef.inc"
236
#include "xptcstubsdef.inc"
216
237
++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s
217
-- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s
Line 0 Link Here
0
-- xpcom/reflect/xptcall/src/md/unix/Makefile.in
1
/* -*- Mode: asm; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
 * Version: MPL 1.1
3
 *
4
 * The contents of this file are subject to the Mozilla Public License Version
5
 * 1.1 (the "License"); you may not use this file except in compliance with
6
 * the License. You may obtain a copy of the License at
7
 * http://www.mozilla.org/MPL/
8
 *
9
 * Software distributed under the License is distributed on an "AS IS" basis,
10
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11
 * for the specific language governing rights and limitations under the
12
 * License.
13
 *
14
 * The Original Code is mozilla.org code.
15
 *
16
 * The Initial Developer of the Original Code is
17
 * Netscape Communications Corp, Inc.
18
 * Portions created by the Initial Developer are Copyright (C) 2001
19
 * the Initial Developer. All Rights Reserved.
20
 *
21
 * Contributor(s):
22
 *   Stuart Parmenter <pavlov@netscape.com>
23
 *   Chris Waterson   <waterson@netscape.com>
24
 *   Thiemo Seufer    <seufer@csv.ica.uni-stuttgart.de>
25
 */
26
27
/* This code is for MIPS using the O32 ABI. */
28
29
#include <sys/regdef.h>
30
#include <sys/asm.h>
31
32
# NARGSAVE is the argument space in the callers frame, including extra
33
# 'shadowed' space for the argument registers. The minimum of 4
34
# argument slots is sometimes predefined in the header files.
35
#ifndef NARGSAVE
36
#define NARGSAVE 4
37
#endif
38
39
#define LOCALSZ 2	/* gp, ra */
40
#define FRAMESZ ((((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK)
41
42
#define RAOFF (FRAMESZ - (1*SZREG))
43
#define GPOFF (FRAMESZ - (2*SZREG))
44
45
#define A0OFF (FRAMESZ + (0*SZREG))
46
#define A1OFF (FRAMESZ + (1*SZREG))
47
#define A2OFF (FRAMESZ + (2*SZREG))
48
#define A3OFF (FRAMESZ + (3*SZREG))
49
50
	.text
51
52
#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
53
#define STUB_ENTRY(x)						\
54
	.if x < 10;						\
55
	.globl	_ZN14nsXPTCStubBase5Stub ##x ##Ev;		\
56
	.type	_ZN14nsXPTCStubBase5Stub ##x ##Ev,@function;	\
57
	.aent	_ZN14nsXPTCStubBase5Stub ##x ##Ev,0;		\
58
_ZN14nsXPTCStubBase5Stub ##x ##Ev:;				\
59
	SETUP_GP;						\
60
	li	t0,x;						\
61
	b	sharedstub;					\
62
	.elseif x < 100;					\
63
	.globl	_ZN14nsXPTCStubBase6Stub ##x ##Ev;		\
64
	.type	_ZN14nsXPTCStubBase6Stub ##x ##Ev,@function;	\
65
	.aent	_ZN14nsXPTCStubBase6Stub ##x ##Ev,0;		\
66
_ZN14nsXPTCStubBase6Stub ##x ##Ev:;				\
67
	SETUP_GP;						\
68
	li	t0,x;						\
69
	b	sharedstub;					\
70
	.elseif x < 1000;					\
71
	.globl	_ZN14nsXPTCStubBase7Stub ##x ##Ev;		\
72
	.type	_ZN14nsXPTCStubBase7Stub ##x ##Ev,@function;	\
73
	.aent	_ZN14nsXPTCStubBase7Stub ##x ##Ev,0;		\
74
_ZN14nsXPTCStubBase7Stub ##x ##Ev:;				\
75
	SETUP_GP;						\
76
	li	t0,x;						\
77
	b	sharedstub;					\
78
	.else;							\
79
	.err;							\
80
	.endif
81
#else /* not G++ V3 ABI */
82
#define STUB_ENTRY(x)						\
83
	.globl	Stub ##x ##__14nsXPTCStubBase;			\
84
	.type	Stub ##x ##__14nsXPTCStubBase,@function;	\
85
	.aent	Stub ##x ##__14nsXPTCStubBase,0;		\
86
Stub ##x ##__14nsXPTCStubBase:;					\
87
	SETUP_GP;						\
88
	li	t0,x;						\
89
	b	sharedstub
90
#endif /* G++ V3 ABI */
91
92
# SENTINEL_ENTRY is handled in the cpp file.
93
#define SENTINEL_ENTRY(x)
94
95
#
96
# open a dummy frame for the function entries
97
#
98
	.align	2
99
	.type	dummy,@function
100
	.ent	dummy, 0
101
	.frame	sp, FRAMESZ, ra 
102
dummy:
103
	SETUP_GP
104
105
#include "xptcstubsdef.inc"
106
107
sharedstub:
108
	subu	sp, FRAMESZ
109
110
	# specify the save register mask for gp, ra, a0-a3
111
	.mask 0x900000F0, RAOFF-FRAMESZ
112
113
	sw	ra, RAOFF(sp)
114
	SAVE_GP(GPOFF)
115
116
	# Micro-optimization: a0 is already loaded, and its slot gets
117
	# ignored by PrepareAndDispatch, so no need to save it here.
118
	# sw	a0, A0OFF(sp)
119
	sw	a1, A1OFF(sp)
120
	sw	a2, A2OFF(sp)
121
	sw	a3, A3OFF(sp)
122
123
	la	t9, PrepareAndDispatch
124
125
	# t0 is methodIndex
126
	move	a1, t0
127
	# have a2 point to the begin of the argument space on stack
128
	addiu	a2, sp, FRAMESZ
129
130
	# PrepareAndDispatch(that, methodIndex, args)
131
	jalr	t9
132
133
	# Micro-optimization: Using jalr explicitly has the side-effect
134
	# of not triggering .cprestore. This is ok because we have no
135
	# gp reference below this point. It also allows better
136
	# instruction sscheduling.
137
	# lw	gp, GPOFF(fp)
138
 
139
 	lw	ra, RAOFF(sp)
140
	addiu	sp, FRAMESZ
141
	j	ra
142
	END(dummy)
143
++ xpcom/reflect/xptcall/src/md/unix/Makefile.in
Lines 210-220 Link Here
210
ifneq (,$(findstring mips, $(OS_TEST)))
210
ifneq (,$(findstring mips, $(OS_TEST)))
211
CPPSRCS		:= xptcinvoke_mips.cpp xptcstubs_mips.cpp
211
CPPSRCS		:= xptcinvoke_mips.cpp xptcstubs_mips.cpp
212
ASFILES		:= xptcinvoke_asm_mips.s xptcstubs_asm_mips.s
212
ASFILES		:= xptcinvoke_asm_mips.s xptcstubs_asm_mips.s
213
#xptcstubs_mips.cpp
213
AS		:= $(CC) $(CFLAGS) $(INCLUDES) -c -x assembler-with-cpp
214
# xptcstubs_asm_mips.s
215
ifdef GNU_CC
216
ASFLAGS		+= $(INCLUDES) -x assembler-with-cpp -D__GNUC__
217
endif
218
endif
214
endif
219
endif
215
endif
220
216
Lines 359-368 Link Here
359
355
360
ifeq ($(OS_ARCH),Linux)
356
ifeq ($(OS_ARCH),Linux)
361
ifneq (,$(findstring mips, $(OS_TEST)))
357
ifneq (,$(findstring mips, $(OS_TEST)))
362
xptcstubs_asm_mips.o: xptcstubs_asm_mips.s.m4 $(PUBLIC)/xptcstubsdef.inc
358
xptcstubs_asm_mips.o: xptcstubs_asm_mips.s $(PUBLIC)/xptcstubsdef.inc
363
	m4 $(INCLUDES) $< > ./xptcstubs_asm_mips.s && \
359
	$(AS) -o $@ $<
364
	$(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) ./xptcstubs_asm_mips.s
365
	$(RM) -f ./xptcstubs_asm_mips.s
366
endif
360
endif
367
endif
361
endif
368
362
369
-- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s
363
++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s
Lines 21-26 Link Here
21
 * Contributor(s):
21
 * Contributor(s):
22
 *   Brendan Eich     <brendan@mozilla.org>
22
 *   Brendan Eich     <brendan@mozilla.org>
23
 *   Stuart Parmenter <pavlov@netscape.com>
23
 *   Stuart Parmenter <pavlov@netscape.com>
24
 *   Thiemo Seufer    <seufer@csv.ica.uni-stuttgart.de>
24
 */
25
 */
25
26
26
/* This code is for MIPS using the O32 ABI. */
27
/* This code is for MIPS using the O32 ABI. */
Lines 28-166 Link Here
28
#include <sys/regdef.h>
29
#include <sys/regdef.h>
29
#include <sys/asm.h>
30
#include <sys/asm.h>
30
31
31
.text
32
# NARGSAVE is the argument space in the callers frame, including extra
32
.globl  invoke_count_words
33
# 'shadowed' space for the argument registers. The minimum of 4
33
.globl	invoke_copy_to_stack 
34
# argument slots is sometimes predefined in the header files.
34
35
#ifndef NARGSAVE
35
# We need a variable number of words allocated from the stack for copies of
36
#define NARGSAVE 4
36
# the params, and this space must come between the high frame (where ra, gp,
37
#endif
37
# and s0 are saved) and the low frame (where a0-a3 are saved by the callee
38
38
# functions we invoke). 
39
#define LOCALSZ 3	/* gp, fp, ra */
39
40
#define FRAMESZ ((((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK)
40
LOCALSZ=4		# s0, s1, ra, gp
41
41
NARGSAVE=4		# a0, a1, a2, a3
42
#define RAOFF (FRAMESZ - (1*SZREG))
42
HIFRAMESZ=(LOCALSZ*SZREG)
43
#define FPOFF (FRAMESZ - (2*SZREG))
43
LOFRAMESZ=(NARGSAVE*SZREG)
44
#define GPOFF (FRAMESZ - (3*SZREG))
44
FRAMESZ=(HIFRAMESZ+LOFRAMESZ+ALSZ)&ALMASK
45
45
46
#define A0OFF (FRAMESZ + (0*SZREG))
46
# XXX these 2*SZREG, etc. are very magic -- we *know* that ALSZ&ALMASK cause
47
#define A1OFF (FRAMESZ + (1*SZREG))
47
# FRAMESZ to be 0 mod 8, in this case to be 16 and not 12.
48
#define A2OFF (FRAMESZ + (2*SZREG))
48
RAOFF=FRAMESZ - (2*SZREG)
49
#define A3OFF (FRAMESZ + (3*SZREG))
49
GPOFF=FRAMESZ - (3*SZREG)
50
50
S0OFF=FRAMESZ - (4*SZREG)
51
	.text
51
S1OFF=FRAMESZ - (5*SZREG)
52
52
53
#	
53
# These are not magic -- they are just our argsave slots in the caller frame.
54
# _XPTC_InvokeByIndex(that, methodIndex, paramCount, params)
54
A0OFF=FRAMESZ
55
#                      a0       a1          a2         a3
55
A1OFF=FRAMESZ + (1*SZREG)
56
56
A2OFF=FRAMESZ + (2*SZREG)
57
	.globl	_XPTC_InvokeByIndex
57
A3OFF=FRAMESZ + (3*SZREG)
58
	.align	2
58
59
	.type	_XPTC_InvokeByIndex,@function
59
	#	
60
	.ent	_XPTC_InvokeByIndex,0
60
	# _XPTC_InvokeByIndex(that, methodIndex, paramCount, params)
61
	.frame	fp, FRAMESZ, ra
61
	#                      a0       a1          a2         a3
62
_XPTC_InvokeByIndex:
62
63
	SETUP_GP
63
NESTED(_XPTC_InvokeByIndex, FRAMESZ, ra)
64
65
	.set	noreorder
66
	.cpload	t9
67
	.set	reorder
68
69
	subu	sp, FRAMESZ
64
	subu	sp, FRAMESZ
70
65
71
	# specify the save register mask -- XXX do we want the a0-a3 here, given
66
	# specify the save register mask for gp, fp, ra, a3 - a0
72
	# our "split" frame where the args are saved below a dynamicly allocated
67
	.mask 0xD00000F0, RAOFF-FRAMESZ
73
	# region under the high frame?
74
	#
75
	# 10010000000000010000000011110000
76
	.mask 0x900100F0, -((NARGSAVE+LOCALSZ)*SZREG)
77
78
	# thou shalt not use .cprestore if yer frame has variable size...
79
	# .cprestore GPOFF
80
81
	REG_S	ra, RAOFF(sp)
82
83
	# this happens automatically with .cprestore, but we cannot use that op...
84
	REG_S	gp, GPOFF(sp)
85
	REG_S	s0, S0OFF(sp)
86
	REG_S	s1, S1OFF(sp)
87
88
	REG_S	a0, A0OFF(sp)
89
	REG_S	a1, A1OFF(sp)
90
	REG_S	a2, A2OFF(sp)
91
	REG_S	a3, A3OFF(sp)
92
68
93
	# invoke_count_words(paramCount, params)
69
	sw	ra, RAOFF(sp)
94
	move	a0, a2
70
	sw	fp, FPOFF(sp)
95
	move	a1, a3
96
71
97
	jal	invoke_count_words
72
	# we can't use .cprestore in a variable stack frame
98
	lw	gp, GPOFF(sp)
73
	sw	gp, GPOFF(sp)
99
74
100
	# save the old sp so we can pop the param area and any "low frame"
75
	sw	a0, A0OFF(sp)
101
	# needed as an argsave area below the param block for callees that
76
	sw	a1, A1OFF(sp)
102
	# we invoke.
77
	sw	a2, A2OFF(sp)
103
	move	s0, sp
78
	sw	a3, A3OFF(sp)
104
79
105
	REG_L	a1, A2OFF(sp)	# a1 = paramCount
80
	# save bottom of fixed frame
106
	REG_L	a2, A3OFF(sp)	# a2 = params
81
	move	fp, sp
107
82
108
	# we define a word as 4 bytes, period end of story!
83
	# extern "C" uint32
109
	sll	v0, 2		# 4 bytes * result of invoke_copy_words
84
	# invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s);
110
	subu	v0, LOFRAMESZ	# but we take back the argsave area built into
85
	la	t9, invoke_count_words
111
				# our stack frame -- SWEET!
86
	move	a0, a2
112
	subu	sp, sp, v0	# make room
87
	move	a1, a3
113
	move	a0, sp		# a0 = param stack address
88
	jalr	t9
114
	move	s1, a0		# save it for later -- it should be safe here
89
	lw  	gp, GPOFF(fp)
115
116
	# the old sp is still saved in s0, but we now need another argsave
117
	# area ("low frame") for the invoke_copy_to_stack call.
118
	subu	sp, sp, LOFRAMESZ
119
90
120
	# copy the param into the stack areas
91
	# allocate variable stack, with a size of:
92
	# wordsize (of 4 bytes) * result (already aligned to dword)
93
	# but a minimum of 16 byte
94
	sll	v0, 2
95
	slt	t0, v0, 16
96
	beqz	t0, 1f
97
	li	v0, 16
98
1:	subu	sp, v0
99
100
	# let a0 point to the bottom of the variable stack, allocate
101
	# another fixed stack for:
102
	# extern "C" void
121
	# invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount,
103
	# invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount,
122
	#                      nsXPTCVariant* s)
104
	#		       nsXPTCVariant* s);
123
	jal     invoke_copy_to_stack
105
	la	t9, invoke_copy_to_stack
124
	lw  	gp, GPOFF(s0)
106
	move	a0, sp
125
107
	lw	a1, A2OFF(fp)
126
	move	sp, s0		# get orig sp back, popping params and argsave
108
	lw	a2, A3OFF(fp)
127
109
	subu	sp, 16
128
	REG_L	a0, A0OFF(sp)	# a0 = set "that" to be "this"
110
	jalr	t9
129
	REG_L	a1, A1OFF(sp)	# a1 = methodIndex
111
	lw  	gp, GPOFF(fp)
130
112
131
	# t1 = methodIndex * 4
113
	# back to the variable stack frame
132
	# (use shift instead of mult)
114
	addu	sp, 16
133
	sll	t1, a1, 2
115
134
116
	# calculate the function we need to jump to, which must then be
135
	# calculate the function we need to jump to,
117
	# stored in t9
136
	# which must then be saved in t9
118
	lw	a0, A0OFF(fp)	# a0 = set "that" to be "this"
119
	lw	t0, A1OFF(fp)	# a1 = methodIndex
137
	lw	t9, 0(a0)
120
	lw	t9, 0(a0)
138
	addu	t9, t9, t1
121
	# t0 = methodIndex << PTRLOG
139
	lw	t9, 8(t9)
122
	sll	t0, t0, PTRLOG
140
123
	addu	t9, t0
141
	# a1..a3 and f13..f14 should now be set to what
124
#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
142
	# invoke_copy_to_stack told us. skip a0 and f12
125
	lw	t9, (t9)
143
	# because that is the "this" pointer
126
#else /* not G++ V3 ABI */
144
127
	lw	t9, 2*PTRSIZE(t9)
145
	REG_L	a1, 1*SZREG(s1)
128
#endif /* G++ V3 ABI */
146
	REG_L	a2, 2*SZREG(s1)
129
147
	REG_L	a3, 3*SZREG(s1)
130
	# Set a1-a3 to what invoke_copy_to_stack told us. a0 is already
148
131
	# the "this" pointer. We don't have to care about floating
149
	l.d	$f13, 8(s1)
132
	# point arguments, the non-FP "this" pointer as first argument
150
	l.d	$f14, 16(s1)
133
	# means they'll never be used.
151
134
	lw	a1, 1*SZREG(sp)
152
	# Create the stack pointer for the function, which must have 4 words
135
	lw	a2, 2*SZREG(sp)
153
	# of space for callee-saved args.  invoke_count_words allocated space
136
	lw	a3, 3*SZREG(sp)
154
        # for a0 starting at s1, so we just move s1 into sp.
137
155
	move	sp, s1
138
	jalr	t9
139
	# Micro-optimization: There's no gp usage below this point, so
140
	# we don't reload.
141
	# lw	gp, GPOFF(fp)
156
142
157
	jalr	ra, t9
143
	# leave variable stack frame
158
	lw	gp, GPOFF(s0)
144
	move	sp, fp
159
145
160
	move	sp, s0
146
	lw	ra, RAOFF(sp)
147
	lw	fp, FPOFF(sp)
161
148
162
	REG_L	ra, RAOFF(sp)
149
	addiu	sp, FRAMESZ
163
	REG_L	s0, S0OFF(sp)
164
	addu	sp, FRAMESZ
165
	j	ra
150
	j	ra
166
.end _XPTC_InvokeByIndex
151
END(_XPTC_InvokeByIndex)
167
-- xpcom/xpcom-private.h
152
++ xpcom/xpcom-private.h
Line 0 Link Here
0
-- xpcom/xpcom-config.h
1
/* xpcom/xpcom-private.h.  Generated automatically by configure.  */
2
/* The following defines are only used by the xpcom implementation */
3
4
#ifndef _XPCOM_PRIVATE_H_
5
#define _XPCOM_PRIVATE_H_
6
7
/* Define to build the static component loader */
8
#define ENABLE_STATIC_COMPONENT_LOADER 1
9
10
/* Define if getpagesize() is available */
11
#define HAVE_GETPAGESIZE 1
12
13
/* Define if iconv() is available */
14
#define HAVE_ICONV 1
15
16
/* Define if iconv() supports const input */
17
/* #undef HAVE_ICONV_WITH_CONST_INPUT */
18
19
/* Define if mbrtowc() is available */
20
#define HAVE_MBRTOWC 1
21
22
/* Define if <sys/mount.h> is present */
23
#define HAVE_SYS_MOUNT_H 1
24
25
/* Define if <sys/vfs.h> is present */
26
#define HAVE_SYS_VFS_H 1
27
28
/* Define if wcrtomb() is available */
29
#define HAVE_WCRTOMB 1
30
31
#endif /* _XPCOM_PRIVATE_H_ */
32
33
++ xpcom/xpcom-config.h
Line 0 Link Here
0
-- xpinstall/packager/unix/browser.jst
1
/* xpcom/xpcom-config.h.  Generated automatically by configure.  */
2
/* Global defines needed by xpcom clients */
3
4
#ifndef _XPCOM_CONFIG_H_
5
#define _XPCOM_CONFIG_H_
6
7
/* Define this to throw() if the compiler complains about 
8
 * constructors returning NULL
9
 */
10
#define CPP_THROW_NEW throw()
11
12
/* Define if the c++ compiler supports a 2-byte wchar_t */
13
#define HAVE_CPP_2BYTE_WCHAR_T 1
14
15
/* Define if the c++ compiler supports changing access with |using| */
16
#define HAVE_CPP_ACCESS_CHANGING_USING 1
17
18
/* Define if the c++ compiler can resolve ambiguity with |using| */
19
#define HAVE_CPP_AMBIGUITY_RESOLVING_USING 1
20
21
/* Define if the c++ compiler has builtin Bool type */
22
/* #undef HAVE_CPP_BOOL */
23
24
/* Define if a dyanmic_cast to void* gives the most derived object */
25
#define HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR 1
26
27
/* Define if the c++ compiler supports the |explicit| keyword */
28
#define HAVE_CPP_EXPLICIT 1
29
30
/* Define if the c++ compiler supports the modern template 
31
 * specialization syntax 
32
 */
33
#define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX 1
34
35
/* Define if the c++ compiler supports the |std| namespace */
36
#define HAVE_CPP_NAMESPACE_STD 1
37
38
/* Define if the c++ compiler supports reinterpret_cast */
39
#define HAVE_CPP_NEW_CASTS 1
40
41
/* Define if the c++ compiler supports partial template specialization */
42
#define HAVE_CPP_PARTIAL_SPECIALIZATION 1
43
44
/* Define if the c++ compiler has trouble comparing a constant
45
 * reference to a templatized class to zero
46
 */
47
/* #undef HAVE_CPP_TROUBLE_COMPARING_TO_ZERO */
48
49
/* Define if the c++ compiler supports the |typename| keyword */
50
#define HAVE_CPP_TYPENAME 1
51
52
/* Define if the stanard template operator!=() is ambiguous */
53
#define HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL 1
54
55
/* Define if statvfs() is available */
56
#define HAVE_STATVFS 1
57
58
/* Define if the c++ compiler requires implementations of 
59
 * unused virtual methods
60
 */
61
#define NEED_CPP_UNUSED_IMPLEMENTATIONS 1
62
63
/* Define to either <new> or <new.h> */
64
#define NEW_H <new>
65
66
#endif /* _XPCOM_CONFIG_H_ */
67
++ xpinstall/packager/unix/browser.jst
Lines 77-111 Link Here
77
    logComment("dirCreate() returned: " + ignoreErr);
77
    logComment("dirCreate() returned: " + ignoreErr);
78
78
79
    var cf = getFolder("Chrome");
79
    var cf = getFolder("Chrome");
80
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"toolkit.jar"),"content/global-platform/");
81
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/communicator-platform/");
82
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/navigator-platform/");
83
84
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"toolkit.jar"),"content/global-region/");
85
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/communicator-region/");
86
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/editor-region/");
87
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/navigator-region/");
88
89
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"toolkit.jar"),"content/global/");
80
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"toolkit.jar"),"content/global/");
90
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/autoconfig/");
81
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/autoconfig/");
91
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/cookie/");
82
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/cookie/");
92
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/wallet/");
83
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/wallet/");
93
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"content-packs.jar"),"content/content-packs/");
84
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"content-packs.jar"),"content/content-packs/");
94
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/communicator/");
85
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/communicator/");
95
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/editor/");
96
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/navigator/");
86
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/navigator/");
97
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/necko/");
87
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/necko/");
98
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/mozldap/");
88
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/mozldap/");
99
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"classic.jar"),"skin/classic/communicator/");
89
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"classic.jar"),"skin/classic/communicator/");
100
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"classic.jar"),"skin/classic/editor/");
101
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"classic.jar"),"skin/classic/global/");
90
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"classic.jar"),"skin/classic/global/");
102
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"classic.jar"),"skin/classic/messenger/");
103
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"classic.jar"),"skin/classic/navigator/");
91
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"classic.jar"),"skin/classic/navigator/");
104
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"modern.jar"),"skin/modern/communicator/");
105
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"modern.jar"),"skin/modern/editor/");
106
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"modern.jar"),"skin/modern/global/");
107
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"modern.jar"),"skin/modern/messenger/");
108
    registerChrome(SKIN | DELAYED_CHROME, getFolder(cf,"modern.jar"),"skin/modern/navigator/");
109
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"help.jar"),"content/help/");
92
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"help.jar"),"content/help/");
110
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/xbl-marquee/");
93
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/xbl-marquee/");
111
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/p3p/");
94
    registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/p3p/");
112
-- content/events/src/nsEventStateManager.cpp
95
++ content/events/src/nsEventStateManager.cpp
Lines 22-27 Link Here
22
 * Contributor(s):
22
 * Contributor(s):
23
 *   Makoto Kato  <m_kato@ga2.so-net.ne.jp>
23
 *   Makoto Kato  <m_kato@ga2.so-net.ne.jp>
24
 *   Dean Tessman <dean_tessman@hotmail.com>
24
 *   Dean Tessman <dean_tessman@hotmail.com>
25
 *   Andrew Wellington <proton@wiretapped.net>
26
 *   Graham Dennis <u3952328@anu.edu.au>
27
 *   Thomas Kleffel <thomas.kleffel@maintech.de>
25
 *
28
 *
26
 * Alternatively, the contents of this file may be used under the terms of
29
 * Alternatively, the contents of this file may be used under the terms of
27
 * either the GNU General Public License Version 2 or later (the "GPL"), or
30
 * either the GNU General Public License Version 2 or later (the "GPL"), or
Lines 1981-1986 Link Here
1981
      }
1984
      }
1982
    }
1985
    }
1983
    break;
1986
    break;
1987
  case NS_USER_DEFINED_EVENT: // In reality an extended mouse event
1988
    {
1989
      nsExtendedMouseEventStatus *eMEStatus;
1990
      nsMouseEvent *mEvent = (nsMouseEvent* )aEvent;
1991
      eMEStatus = (nsExtendedMouseEventStatus *)&mEvent->clickCount;
1992
      nsresult rv;
1993
      char ourbutton=0;
1994
      char *string, *suffix, *straction, *strnumlines;
1995
      PRInt32 action;
1996
      PRInt32 numLines;
1997
1998
      rv = getPrefBranch();
1999
      if (NS_FAILED(rv)) return rv;
2000
      
2001
      // adding 2 below so the maximum number of mouse buttons we can
2002
      // support is 99 but to represent the buttons in buttonlist
2003
      // we're going to map 10->35 onto 'a'->'z'
2004
      // the storage actually supports 256
2005
      if(eMEStatus->button > 35) break;
2006
      if(eMEStatus->button > 9)
2007
        ourbutton = 'a' + eMEStatus->button -9;
2008
      else
2009
        ourbutton = '0' + eMEStatus->button;
2010
      mPrefBranch->GetCharPref("mousebuttonsextended.buttonlist", &string);
2011
      if(!string) break;
2012
      if(!strchr(string, ourbutton)) {
2013
          free(string);
2014
          break;
2015
      }
2016
      free(string);
2017
      switch(eMEStatus->event)
2018
        {
2019
        case nsExtendedMouseEventStatus_up:
2020
          suffix=strdup(".up");
2021
          break;
2022
2023
        case nsExtendedMouseEventStatus_down:
2024
          suffix=strdup(".down");
2025
          break;
2026
        default:
2027
          return NS_OK;
2028
        }
2029
      straction= (char *)memset(malloc(100), 0, 100);
2030
      strnumlines=(char *)memset(malloc(100), 0, 100);
2031
2032
      strcpy(straction, "mousebuttonsextended.buttons.X.action");
2033
      strcpy(strnumlines, "mousebuttonsextended.buttons.X.numlines");
2034
      strcpy(straction+strlen(straction), suffix);
2035
      strcpy(strnumlines+strlen(strnumlines), suffix); 
2036
2037
      string = strchr(straction, 'X');  *string = ourbutton;
2038
      string = strchr(strnumlines, 'X'); *string = ourbutton;
2039
2040
      mPrefBranch->GetIntPref(straction, &action);
2041
      mPrefBranch->GetIntPref(strnumlines, &numLines);
2042
2043
      switch (action) {
2044
2045
#if 0   // Because we would have to create a msEvent
2046
      case MOUSE_SCROLL_N_LINES:
2047
      case MOUSE_SCROLL_PAGE:
2048
        {
2049
          DoWheelScroll(aPresContext, aTargetFrame, msEvent, numLines,
2050
                        (msEvent->scrollFlags & nsMouseScrollEvent::kIsHorizontal),
2051
                        (action == MOUSE_SCROLL_PAGE), PR_FALSE);
2052
2053
        }
2054
        break;
2055
#endif 
2056
      case MOUSE_SCROLL_HISTORY:
2057
        {
2058
          nsCOMPtr<nsISupports> pcContainer;
2059
          pcContainer = mPresContext->GetContainer();
2060
          if (pcContainer) {
2061
            nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(pcContainer));
2062
            if (webNav) {
2063
              if (numLines < 0)
2064
                 webNav->GoBack();
2065
              else
2066
                 webNav->GoForward();
2067
            }
2068
          }
2069
        }
2070
        break;
2071
2072
      case MOUSE_SCROLL_TEXTSIZE:
2073
        {
2074
          // Exclude form controls and XUL content.
2075
          nsIContent* content = aTargetFrame->GetContent();
2076
          if (content &&
2077
              !content->IsContentOfType(nsIContent::eHTML_FORM_CONTROL) &&
2078
              !content->IsContentOfType(nsIContent::eXUL))
2079
            {
2080
              ChangeTextSize((numLines > 0) ? 1 : -1);
2081
            }
2082
        }
2083
        break;
2084
2085
      default:  // Including -1 (do nothing)
2086
        break;
2087
      }          
2088
    }
2089
    break;
1984
  case NS_MOUSE_SCROLL:
2090
  case NS_MOUSE_SCROLL:
1985
    if (nsEventStatus_eConsumeNoDefault != *aStatus) {
2091
    if (nsEventStatus_eConsumeNoDefault != *aStatus) {
1986
      nsresult rv;
2092
      nsresult rv;
1987
-- dom/src/base/nsJSEnvironment.cpp
2093
++ dom/src/base/nsJSEnvironment.cpp
Lines 459-465 Link Here
459
459
460
  NS_NAMED_LITERAL_STRING(title, "Script warning");
460
  NS_NAMED_LITERAL_STRING(title, "Script warning");
461
  NS_NAMED_MULTILINE_LITERAL_STRING(msg,
461
  NS_NAMED_MULTILINE_LITERAL_STRING(msg,
462
      NS_L("A script on this page is causing mozilla to ")
462
      NS_L("A script on this page is causing Firefox to ")
463
      NS_L("run slowly. If it continues to run, your ")
463
      NS_L("run slowly. If it continues to run, your ")
464
      NS_L("computer may become unresponsive.\n\nDo you ")
464
      NS_L("computer may become unresponsive.\n\nDo you ")
465
      NS_L("want to abort the script?"));
465
      NS_L("want to abort the script?"));
466
-- gfx/idl/Makefile.in
466
++ gfx/idl/Makefile.in
Lines 39-52 Link Here
39
		nsIPrintOptions.idl \
39
		nsIPrintOptions.idl \
40
		nsIPrintSettings.idl \
40
		nsIPrintSettings.idl \
41
		nsIPrintSettingsService.idl \
41
		nsIPrintSettingsService.idl \
42
		nsIFontCatalogService.idl \
43
		nsIFreeType2.idl \
44
		nsIPrintSession.idl \
42
		nsIPrintSession.idl \
45
		gfxIFormats.idl \
43
		gfxIFormats.idl \
46
		gfxIImageFrame.idl \
44
		gfxIImageFrame.idl \
47
		gfxtypes.idl \
45
		gfxtypes.idl \
48
		$(NULL)
46
		$(NULL)
49
47
48
ifdef MOZ_ENABLE_FREETYPE2
49
XPIDLSRCS	+= \
50
		nsIFontCatalogService.idl \
51
		nsIFreeType2.idl \
52
		$(NULL)
53
endif
54
50
ifneq (,$(filter mac cocoa,$(MOZ_GFX_TOOLKIT)))
55
ifneq (,$(filter mac cocoa,$(MOZ_GFX_TOOLKIT)))
51
XPIDLSRCS += nsIPrintSettingsX.idl \
56
XPIDLSRCS += nsIPrintSettingsX.idl \
52
		nsIPrintSessionX.idl \
57
		nsIPrintSessionX.idl \
53
-- gfx/public/nsIRenderingContext.h
58
++ gfx/public/nsIRenderingContext.h
Lines 824-829 Link Here
824
  NS_IMETHOD DrawTile(imgIContainer *aImage,
824
  NS_IMETHOD DrawTile(imgIContainer *aImage,
825
                      nscoord aXImageStart, nscoord aYImageStart,
825
                      nscoord aXImageStart, nscoord aYImageStart,
826
                      const nsRect * aTargetRect) = 0;
826
                      const nsRect * aTargetRect) = 0;
827
828
  /**
829
   * Get cluster details for a chunk of text.
830
   *
831
   * This will fill in the aClusterStarts array with information about
832
   * what characters are the start of clusters for display.
833
   *
834
   * @param aText Text on which to get details.
835
   * @param aLength Length of the text.
836
   * @param aClusterStarts Array of ints that will be populated
837
   *        with information about which characters are the starts
838
   *        of clusters.
839
   *
840
   */
841
  NS_IMETHOD GetClusterInfo(const PRUnichar *aText,
842
                            PRUint32 aLength,
843
                            PRUint32 *aClusterStarts) = 0;
844
845
  /**
846
   * Find the closest cursor position for a given x coordinate.
847
   *
848
   * This will find the closest byte index for a given x coordinate.
849
   * This takes into account grapheme clusters and bidi text.
850
   *
851
   * @param aText Text on which to operate.
852
   * @param aLength Length of the text.
853
   * @param aCoord The distance into the string to check.
854
   * @param aInx Index of character where the cursor falls - note that
855
   *   this can be after the last character if the cursor happens to
856
   *   the right of the last character in the text!
857
   *
858
   */
859
  NS_IMETHOD GetPosition(const PRUnichar *aText,
860
                         PRUint32 aLength,
861
                         nscoord aCoord,
862
                         PRUint32 &aInx) = 0;
863
864
  /**
865
   * Get the width for the specific range of a given string.
866
   *
867
   * This function is similar to other GetWidth functions, except that
868
   * it gets the width for a part of the string instead of the entire
869
   * string.  This is useful when you're interested in finding out the
870
   * length of a chunk in the middle of the string.  Lots of languages
871
   * require you to include surrounding information to accurately
872
   * determine the length of a substring.
873
   *
874
   * @param aText Text on which to operate
875
   * @param aLength Length of the text
876
   * @param aStart Start index into the string
877
   * @param aEnd End index into the string (inclusive)
878
   * @param aWidth Returned with in app coordinates
879
   *
880
   */
881
  NS_IMETHOD GetRangeWidth(const PRUnichar *aText,
882
                           PRUint32 aLength,
883
                           PRUint32 aStart,
884
                           PRUint32 aEnd,
885
                           PRUint32 &aWidth) = 0;
886
                      
827
};
887
};
828
888
829
//modifiers for text rendering
889
//modifiers for text rendering
Lines 866-871 Link Here
866
 */
926
 */
867
#define NS_RENDERING_HINT_FAST_MEASURE 0x10
927
#define NS_RENDERING_HINT_FAST_MEASURE 0x10
868
928
929
/**
930
 * This bit, when set, indicates that the gfx supports describing
931
 * cluster information in a string
932
 */
933
#define NS_RENDERING_HINT_TEXT_CLUSTERS 0x20
934
935
/**
936
 * This bit, when set, indicates that gfx renders runs with character or word
937
 * spacing in a single operation, not character by character
938
 */
939
#define NS_RENDERING_HINT_SPACING_RUNS 0x40
940
869
//flags for copy CopyOffScreenBits
941
//flags for copy CopyOffScreenBits
870
942
871
//when performing the blit, use the region, if any,
943
//when performing the blit, use the region, if any,
872
-- gfx/src/gtk/Makefile.in
944
++ gfx/src/gtk/Makefile.in
Lines 66-78 Link Here
66
# Code shared between GTK+, Xlib and Xprint gfx modules
66
# Code shared between GTK+, Xlib and Xprint gfx modules
67
X11SHARED_LCPPSRCS = \
67
X11SHARED_LCPPSRCS = \
68
		nsAntiAliasedGlyph.cpp \
68
		nsAntiAliasedGlyph.cpp \
69
		nsFontFreeType.cpp \
70
		nsFT2FontNode.cpp \
71
		nsFT2FontCatalog.cpp \
72
		nsX11AlphaBlend.cpp \
69
		nsX11AlphaBlend.cpp \
73
		nsXFontAAScaledBitmap.cpp \
70
		nsXFontAAScaledBitmap.cpp \
74
		nsXFontNormal.cpp \
71
		nsXFontNormal.cpp \
75
		$(NULL)
72
		$(NULL)
73
74
ifdef MOZ_ENABLE_FREETYPE2
75
X11SHARED_LCPPSRCS += \
76
		nsFontFreeType.cpp \
77
		nsFT2FontNode.cpp \
78
		nsFT2FontCatalog.cpp \
79
		$(NULL)
80
endif
76
                
81
                
77
CPPSRCS		= \
82
CPPSRCS		= \
78
		nsDeviceContextGTK.cpp \
83
		nsDeviceContextGTK.cpp \
Lines 102-107 Link Here
102
		nsFontMetricsXft.cpp
107
		nsFontMetricsXft.cpp
103
endif
108
endif
104
109
110
ifdef MOZ_ENABLE_PANGO
111
CPPSRCS		+= \
112
		nsFontMetricsPango.cpp \
113
		mozilla-decoder.cpp
114
endif
115
105
ifdef MOZ_ENABLE_GTK
116
ifdef MOZ_ENABLE_GTK
106
CPPSRCS 	+= \
117
CPPSRCS 	+= \
107
		nsRegionGTK.cpp \
118
		nsRegionGTK.cpp \
Lines 155-164 Link Here
155
endif
166
endif
156
167
157
ifdef MOZ_ENABLE_XFT
168
ifdef MOZ_ENABLE_XFT
158
libs:: fontEncoding.properties
169
libs:: fontEncoding.properties pangoFontEncoding.properties
159
	$(INSTALL) $^ $(DIST)/bin/res/fonts
170
	$(INSTALL) $^ $(DIST)/bin/res/fonts
160
 
171
 
161
install:: fontEncoding.properties
172
install:: fontEncoding.properties pangoFontEncoding.properties
162
	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/res/fonts
173
	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/res/fonts
163
endif
174
endif
164
175
Lines 208-220 Link Here
208
		-I$(srcdir)/. \
219
		-I$(srcdir)/. \
209
		-I$(srcdir)/.. \
220
		-I$(srcdir)/.. \
210
		-I$(srcdir)/../shared \
221
		-I$(srcdir)/../shared \
211
		-I$(srcdir)/../freetype \
212
		-I$(srcdir)/../x11shared \
222
		-I$(srcdir)/../x11shared \
213
		$(MOZ_XFT_CFLAGS) \
223
		$(MOZ_XFT_CFLAGS) \
214
		$(NULL)
224
		$(NULL)
215
225
216
ifdef MOZ_ENABLE_FREETYPE2
226
ifdef MOZ_ENABLE_FREETYPE2
217
INCLUDES        += $(FT2_CFLAGS)
227
INCLUDES        += $(FT2_CFLAGS)
228
LOCAL_INCLUDES        += -I$(srcdir)/../freetype
218
endif
229
endif
219
230
220
ifdef MOZ_ENABLE_XPRINT
231
ifdef MOZ_ENABLE_XPRINT
221
-- gfx/src/gtk/fontEncoding.properties
232
++ gfx/src/gtk/fontEncoding.properties
Lines 54-61 Link Here
54
# font,  you do need them. 
54
# font,  you do need them. 
55
55
56
# Symbol font
56
# Symbol font
57
#encoding.symbol.ttf = Adobe-Symbol-Encoding
57
encoding.symbol.ttf = Adobe-Symbol-Encoding
58
#encoding.symbol.ftcmap = mac_roman
58
encoding.symbol.ftcmap = mac_roman
59
59
60
# TeX's Computer Modern fonts (Roman, Math Italic, Symbol and Extension)
60
# TeX's Computer Modern fonts (Roman, Math Italic, Symbol and Extension)
61
61
62
-- gfx/src/gtk/gfxgtk.pkg
62
++ gfx/src/gtk/gfxgtk.pkg
Lines 7-9 Link Here
7
#if MOZ_ENABLE_XFT
7
#if MOZ_ENABLE_XFT
8
dist/bin/res/fonts/fontEncoding.properties
8
dist/bin/res/fonts/fontEncoding.properties
9
#endif
9
#endif
10
-- gfx/src/gtk/nsFontMetricsGTK.cpp
10
#if MOZ_ENABLE_PANGO
11
dist/bin/res/fonts/pangoFontEncoding.properties
12
#endif
13
++ gfx/src/gtk/nsFontMetricsGTK.cpp
Lines 62-69 Link Here
62
#include "nsAString.h"
62
#include "nsAString.h"
63
#include "nsXPIDLString.h"
63
#include "nsXPIDLString.h"
64
#include "nsFontDebug.h"
64
#include "nsFontDebug.h"
65
#ifdef MOZ_ENABLE_FREETYPE2
65
#include "nsFT2FontNode.h"
66
#include "nsFT2FontNode.h"
66
#include "nsFontFreeType.h"
67
#include "nsFontFreeType.h"
68
#endif
67
#include "nsXFontNormal.h"
69
#include "nsXFontNormal.h"
68
#include "nsX11AlphaBlend.h"
70
#include "nsX11AlphaBlend.h"
69
#include "nsXFontAAScaledBitmap.h"
71
#include "nsXFontAAScaledBitmap.h"
Lines 102-107 Link Here
102
#undef NOISY_FONTS
104
#undef NOISY_FONTS
103
#undef REALLY_NOISY_FONTS
105
#undef REALLY_NOISY_FONTS
104
106
107
#ifndef MOZ_ENABLE_FREETYPE2
108
static PRUint32 gFontDebug = 0 | NS_FONT_DEBUG_FONT_SCAN;
109
#endif
110
105
struct nsFontCharSetMap;
111
struct nsFontCharSetMap;
106
struct nsFontFamilyName;
112
struct nsFontFamilyName;
107
struct nsFontPropertyName;
113
struct nsFontPropertyName;
Lines 114-121 Link Here
114
  const char*            mCharSet;
120
  const char*            mCharSet;
115
  nsFontCharSetConverter Convert;
121
  nsFontCharSetConverter Convert;
116
  PRUint8                mSpecialUnderline;
122
  PRUint8                mSpecialUnderline;
123
#ifdef MOZ_ENABLE_FREETYPE2
117
  PRInt32                mCodeRange1Bits;
124
  PRInt32                mCodeRange1Bits;
118
  PRInt32                mCodeRange2Bits;
125
  PRInt32                mCodeRange2Bits;
126
#endif
119
  PRUint16*              mCCMap;
127
  PRUint16*              mCCMap;
120
  nsIUnicodeEncoder*     mConverter;
128
  nsIUnicodeEncoder*     mConverter;
121
  nsIAtom*               mLangGroup;
129
  nsIAtom*               mLangGroup;
Lines 220-225 Link Here
220
static nsFontCharSetInfo Unknown = { nsnull };
228
static nsFontCharSetInfo Unknown = { nsnull };
221
static nsFontCharSetInfo Special = { nsnull };
229
static nsFontCharSetInfo Special = { nsnull };
222
230
231
#ifdef MOZ_ENABLE_FREETYPE2
223
static nsFontCharSetInfo USASCII =
232
static nsFontCharSetInfo USASCII =
224
  { "us-ascii", SingleByteConvert, 0,
233
  { "us-ascii", SingleByteConvert, 0,
225
    TT_OS2_CPR1_LATIN1 | TT_OS2_CPR1_MAC_ROMAN,
234
    TT_OS2_CPR1_LATIN1 | TT_OS2_CPR1_MAC_ROMAN,
Lines 425-431 Link Here
425
   { "x-mathematica4", SingleByteConvert, 0, TT_OS2_CPR1_SYMBOL, 0};
434
   { "x-mathematica4", SingleByteConvert, 0, TT_OS2_CPR1_SYMBOL, 0};
426
static nsFontCharSetInfo Mathematica5 =
435
static nsFontCharSetInfo Mathematica5 =
427
   { "x-mathematica5", SingleByteConvert, 0, TT_OS2_CPR1_SYMBOL, 0};
436
   { "x-mathematica5", SingleByteConvert, 0, TT_OS2_CPR1_SYMBOL, 0};
428
#endif
437
#endif /* MATHML */
438
439
#else
440
441
static nsFontCharSetInfo USASCII =
442
  { "us-ascii", SingleByteConvert, 0 };
443
static nsFontCharSetInfo ISO88591 =
444
  { "ISO-8859-1", SingleByteConvert, 0 };
445
static nsFontCharSetInfo ISO88592 =
446
  { "ISO-8859-2", SingleByteConvert, 0 };
447
static nsFontCharSetInfo ISO88593 =
448
  { "ISO-8859-3", SingleByteConvert, 0 };
449
static nsFontCharSetInfo ISO88594 =
450
  { "ISO-8859-4", SingleByteConvert, 0 };
451
static nsFontCharSetInfo ISO88595 =
452
  { "ISO-8859-5", SingleByteConvert, 0 };
453
static nsFontCharSetInfo ISO88596 =
454
  { "ISO-8859-6", SingleByteConvert, 0 };
455
static nsFontCharSetInfo ISO885968x =
456
  { "x-iso-8859-6-8-x", SingleByteConvert, 0 };
457
static nsFontCharSetInfo ISO8859616 =
458
  { "x-iso-8859-6-16", SingleByteConvert, 0 };
459
static nsFontCharSetInfo IBM1046 =
460
  { "x-IBM1046", SingleByteConvert, 0 };
461
static nsFontCharSetInfo ISO88597 =
462
  { "ISO-8859-7", SingleByteConvert, 0 };
463
static nsFontCharSetInfo ISO88598 =
464
  { "ISO-8859-8", SingleByteConvert, 0 };
465
// change from  
466
// { "ISO-8859-8", SingleByteConvertReverse, 0, 0, 0 };
467
// untill we fix the layout and ensure we only call this with pure RTL text
468
static nsFontCharSetInfo ISO88599 =
469
  { "ISO-8859-9", SingleByteConvert, 0 };
470
// no support for iso-8859-10 (Nordic/Icelandic) currently
471
// static nsFontCharSetInfo ISO885910 =
472
// { "ISO-8859-10", SingleByteConvert, 0,
473
//   0, TT_OS2_CPR2_NORDIC | TT_OS2_CPR2_ICELANDIC };
474
// no support for iso-8859-12 (Vietnamese) currently
475
// static nsFontCharSetInfo ISO885912 =
476
// { "ISO-8859-12", SingleByteConvert, 0,
477
//   TT_OS2_CPR1_VIETNAMESE, 0 };
478
static nsFontCharSetInfo ISO885913 =
479
  { "ISO-8859-13", SingleByteConvert, 0 };
480
static nsFontCharSetInfo ISO885915 =
481
  { "ISO-8859-15", SingleByteConvert, 0 };
482
static nsFontCharSetInfo JISX0201 =
483
  { "jis_0201", SingleByteConvert, 1 };
484
static nsFontCharSetInfo KOI8R =
485
  { "KOI8-R", SingleByteConvert, 0 };
486
static nsFontCharSetInfo KOI8U =
487
  { "KOI8-U", SingleByteConvert, 0 };
488
static nsFontCharSetInfo TIS6202 =
489
/* Added to support thai context sensitive shaping if
490
 * CTL extension is is in force */
491
#ifdef SUNCTL
492
  { "tis620-2", SingleByteConvert, 0 };
493
#else
494
  { "windows-874", SingleByteConvert, 0 };
495
#endif /* SUNCTL */
496
static nsFontCharSetInfo TIS620 =
497
  { "TIS-620", SingleByteConvert, 0 };
498
static nsFontCharSetInfo ISO885911 =
499
  { "ISO-8859-11", SingleByteConvert, 0 };
500
static nsFontCharSetInfo Big5 =
501
  { "x-x-big5", DoubleByteConvert, 1 };
502
// a kludge to distinguish zh-TW only fonts in Big5 (such as hpbig5-)
503
// from zh-TW/zh-HK common fonts in Big5 (such as big5-1)
504
static nsFontCharSetInfo Big5TWHK =
505
  { "x-x-big5", DoubleByteConvert, 1 };
506
static nsFontCharSetInfo CNS116431 =
507
  { "x-cns-11643-1", DoubleByteConvert, 1 };
508
static nsFontCharSetInfo CNS116432 =
509
  { "x-cns-11643-2", DoubleByteConvert, 1 };
510
static nsFontCharSetInfo CNS116433 =
511
  { "x-cns-11643-3", DoubleByteConvert, 1 };
512
static nsFontCharSetInfo CNS116434 =
513
  { "x-cns-11643-4", DoubleByteConvert, 1 };
514
static nsFontCharSetInfo CNS116435 =
515
  { "x-cns-11643-5", DoubleByteConvert, 1 };
516
static nsFontCharSetInfo CNS116436 =
517
  { "x-cns-11643-6", DoubleByteConvert, 1 };
518
static nsFontCharSetInfo CNS116437 =
519
  { "x-cns-11643-7", DoubleByteConvert, 1 };
520
static nsFontCharSetInfo GB2312 =
521
  { "gb_2312-80", DoubleByteConvert, 1 };
522
static nsFontCharSetInfo GB18030_0 =
523
  { "gb18030.2000-0", DoubleByteConvert, 1 };
524
static nsFontCharSetInfo GB18030_1 =
525
  { "gb18030.2000-1", DoubleByteConvert, 1 };
526
static nsFontCharSetInfo GBK =
527
  { "x-gbk-noascii", DoubleByteConvert, 1 };
528
static nsFontCharSetInfo HKSCS =
529
  { "hkscs-1", DoubleByteConvert, 1 };
530
static nsFontCharSetInfo JISX0208 =
531
  { "jis_0208-1983", DoubleByteConvert, 1 };
532
static nsFontCharSetInfo JISX0212 =
533
  { "jis_0212-1990", DoubleByteConvert, 1 };
534
static nsFontCharSetInfo KSC5601 =
535
  { "ks_c_5601-1987", DoubleByteConvert, 1 };
536
static nsFontCharSetInfo X11Johab =
537
  { "x-x11johab", DoubleByteConvert, 1 };
538
static nsFontCharSetInfo JohabNoAscii =
539
  { "x-johab-noascii", DoubleByteConvert, 1 };
540
static nsFontCharSetInfo JamoTTF =
541
  { "x-koreanjamo-0", DoubleByteConvert, 1 };
542
static nsFontCharSetInfo TamilTTF =
543
  { "x-tamilttf-0", DoubleByteConvert, 0 };
544
static nsFontCharSetInfo CP1250 =
545
  { "windows-1250", SingleByteConvert, 0 };
546
static nsFontCharSetInfo CP1251 =
547
  { "windows-1251", SingleByteConvert, 0 };
548
static nsFontCharSetInfo CP1252 =
549
  { "windows-1252", SingleByteConvert, 0 };
550
static nsFontCharSetInfo CP1253 =
551
  { "windows-1253", SingleByteConvert, 0 };
552
static nsFontCharSetInfo CP1257 =
553
  { "windows-1257", SingleByteConvert, 0 };
554
555
#ifdef SUNCTL
556
/* Hindi range currently unsupported in FT2 range. Change TT* once we 
557
   arrive at a way to identify hindi */
558
static nsFontCharSetInfo SunIndic =
559
  { "x-sun-unicode-india-0", DoubleByteConvert, 0 };
560
#endif /* SUNCTL */
561
562
static nsFontCharSetInfo ISO106461 =
563
  { nsnull, ISO10646Convert, 1};
564
565
static nsFontCharSetInfo AdobeSymbol =
566
   { "Adobe-Symbol-Encoding", SingleByteConvert, 0 };
567
static nsFontCharSetInfo AdobeEuro =
568
  { "x-adobe-euro", SingleByteConvert, 0 };
569
         
570
#ifdef MOZ_MATHML
571
static nsFontCharSetInfo CMCMEX =
572
   { "x-t1-cmex", SingleByteConvert, 0};
573
static nsFontCharSetInfo CMCMSY =
574
   { "x-t1-cmsy", SingleByteConvert, 0};
575
static nsFontCharSetInfo CMCMR =
576
   { "x-t1-cmr", SingleByteConvert, 0};
577
static nsFontCharSetInfo CMCMMI =
578
   { "x-t1-cmmi", SingleByteConvert, 0};
579
static nsFontCharSetInfo Mathematica1 =
580
   { "x-mathematica1", SingleByteConvert, 0};
581
static nsFontCharSetInfo Mathematica2 =
582
   { "x-mathematica2", SingleByteConvert, 0}; 
583
static nsFontCharSetInfo Mathematica3 =
584
   { "x-mathematica3", SingleByteConvert, 0};
585
static nsFontCharSetInfo Mathematica4 =
586
   { "x-mathematica4", SingleByteConvert, 0}; 
587
static nsFontCharSetInfo Mathematica5 =
588
   { "x-mathematica5", SingleByteConvert, 0};
589
#endif /* MATHML */
590
#endif /* FREETYPE2 */
429
591
430
static nsFontLangGroup FLG_WESTERN = { "x-western",     nsnull };
592
static nsFontLangGroup FLG_WESTERN = { "x-western",     nsnull };
431
static nsFontLangGroup FLG_RUSSIAN = { "x-cyrillic",    nsnull };
593
static nsFontLangGroup FLG_RUSSIAN = { "x-cyrillic",    nsnull };
Lines 821-827 Link Here
821
983
822
  gInitialized = 0;
984
  gInitialized = 0;
823
985
986
#ifdef MOZ_ENABLE_FREETYPE2
824
  nsFT2FontNode::FreeGlobals();
987
  nsFT2FontNode::FreeGlobals();
988
#endif
825
989
826
#ifdef ENABLE_X_FONT_BANNING
990
#ifdef ENABLE_X_FONT_BANNING
827
  if (gFontRejectRegEx) {
991
  if (gFontRejectRegEx) {
Lines 1221-1231 Link Here
1221
  }
1385
  }
1222
#endif /* ENABLE_X_FONT_BANNING */
1386
#endif /* ENABLE_X_FONT_BANNING */
1223
1387
1388
#ifdef MOZ_ENABLE_FREETYPE2
1224
  rv = nsFT2FontNode::InitGlobals();
1389
  rv = nsFT2FontNode::InitGlobals();
1225
  if (NS_FAILED(rv)) {
1390
  if (NS_FAILED(rv)) {
1226
    FreeGlobals();
1391
    FreeGlobals();
1227
    return NS_ERROR_OUT_OF_MEMORY;
1392
    return NS_ERROR_OUT_OF_MEMORY;
1228
  }
1393
  }
1394
#endif
1229
1395
1230
  gInitialized = 1;
1396
  gInitialized = 1;
1231
1397
Lines 1557-1562 Link Here
1557
  float f;
1723
  float f;
1558
  f = mDeviceContext->DevUnitsToAppUnits();
1724
  f = mDeviceContext->DevUnitsToAppUnits();
1559
1725
1726
#ifdef MOZ_ENABLE_FREETYPE2
1560
  if (mWesternFont->IsFreeTypeFont()) {
1727
  if (mWesternFont->IsFreeTypeFont()) {
1561
    nsFreeTypeFont *ft = (nsFreeTypeFont *)mWesternFont;
1728
    nsFreeTypeFont *ft = (nsFreeTypeFont *)mWesternFont;
1562
    if (!ft)
1729
    if (!ft)
Lines 1565-1571 Link Here
1565
    // and TrueType fonts) there should be a common set of methods 
1732
    // and TrueType fonts) there should be a common set of methods 
1566
    // to get the metrics info from the font object. These methods
1733
    // to get the metrics info from the font object. These methods
1567
    // probably should be virtual functions defined in nsFontGTK.
1734
    // probably should be virtual functions defined in nsFontGTK.
1568
#if (defined(MOZ_ENABLE_FREETYPE2))
1569
    int lineSpacing = ft->ascent() + ft->descent();
1735
    int lineSpacing = ft->ascent() + ft->descent();
1570
    if (lineSpacing > mWesternFont->mSize) {
1736
    if (lineSpacing > mWesternFont->mSize) {
1571
      mLeading = nscoord((lineSpacing - mWesternFont->mSize) * f);
1737
      mLeading = nscoord((lineSpacing - mWesternFont->mSize) * f);
Lines 1637-1644 Link Here
1637
    mStrikeoutSize = mUnderlineSize;
1803
    mStrikeoutSize = mUnderlineSize;
1638
1804
1639
    return;
1805
    return;
1640
#endif /* (defined(MOZ_ENABLE_FREETYPE2)) */
1641
  }
1806
  }
1807
#endif
1642
  nsXFont *xFont = mWesternFont->GetXFont();
1808
  nsXFont *xFont = mWesternFont->GetXFont();
1643
  XFontStruct *fontInfo = xFont->GetXFontStruct();
1809
  XFontStruct *fontInfo = xFont->GetXFontStruct();
1644
  f = mDeviceContext->DevUnitsToAppUnits();
1810
  f = mDeviceContext->DevUnitsToAppUnits();
Lines 3255-3260 Link Here
3255
nsFontMetricsGTK::PickASizeAndLoad(nsFontStretch* aStretch,
3421
nsFontMetricsGTK::PickASizeAndLoad(nsFontStretch* aStretch,
3256
  nsFontCharSetInfo* aCharSet, PRUint32 aChar, const char *aName)
3422
  nsFontCharSetInfo* aCharSet, PRUint32 aChar, const char *aName)
3257
{
3423
{
3424
3425
#ifdef MOZ_ENABLE_FREETYPE2
3258
  if (aStretch->mFreeTypeFaceID) {
3426
  if (aStretch->mFreeTypeFaceID) {
3259
    //FREETYPE_FONT_PRINTF(("mFreeTypeFaceID = 0x%p", aStretch->mFreeTypeFaceID));
3427
    //FREETYPE_FONT_PRINTF(("mFreeTypeFaceID = 0x%p", aStretch->mFreeTypeFaceID));
3260
    nsFreeTypeFont *ftfont = nsFreeTypeFont::NewFont(aStretch->mFreeTypeFaceID,
3428
    nsFreeTypeFont *ftfont = nsFreeTypeFont::NewFont(aStretch->mFreeTypeFaceID,
Lines 3287-3292 Link Here
3287
    // SURROGATE is only supported by FreeType
3455
    // SURROGATE is only supported by FreeType
3288
    return nsnull;
3456
    return nsnull;
3289
  }
3457
  }
3458
#endif
3290
3459
3291
  PRBool use_scaled_font = PR_FALSE;
3460
  PRBool use_scaled_font = PR_FALSE;
3292
  PRBool have_nearly_rightsized_bitmap = PR_FALSE;
3461
  PRBool have_nearly_rightsized_bitmap = PR_FALSE;
Lines 4600-4605 Link Here
4600
  return mCurrentFont->GetGDKFont();
4769
  return mCurrentFont->GetGDKFont();
4601
}
4770
}
4602
4771
4772
nsresult
4773
nsFontMetricsGTK::SetRightToLeftText(PRBool aIsRTL)
4774
{
4775
    return NS_OK;
4776
}
4777
4778
nsresult
4779
nsFontMetricsGTK::GetClusterInfo(const PRUnichar *aText,
4780
                                 PRUint32 aLength,
4781
                                 PRUint32 *aClusterStarts)
4782
{
4783
    return NS_ERROR_NOT_IMPLEMENTED;
4784
}
4785
4786
nsresult
4787
nsFontMetricsGTK::GetPosition(const PRUnichar *aText,
4788
                              PRUint32 aLength,
4789
                              nscoord aCoord,
4790
                              PRUint32 &aInx)
4791
{
4792
    return NS_ERROR_NOT_IMPLEMENTED;
4793
}
4794
4795
4796
nsresult
4797
nsFontMetricsGTK::GetRangeWidth(const PRUnichar *aText,
4798
                                PRUint32 aLength,
4799
                                 PRUint32 aStart,
4800
                                PRUint32 aEnd,
4801
                                PRUint32 &aWidth)
4802
{
4803
    return NS_ERROR_NOT_IMPLEMENTED;
4804
}
4805
4603
PR_BEGIN_EXTERN_C
4806
PR_BEGIN_EXTERN_C
4604
static int
4807
static int
4605
CompareSizes(const void* aArg1, const void* aArg2, void *data)
4808
CompareSizes(const void* aArg1, const void* aArg2, void *data)
Lines 5195-5202 Link Here
5195
  }
5398
  }
5196
#endif
5399
#endif
5197
5400
5401
#ifdef MOZ_ENABLE_FREETYPE2
5198
  // get FreeType fonts
5402
  // get FreeType fonts
5199
  nsFT2FontNode::GetFontNames(aPattern, aNodes);
5403
  nsFT2FontNode::GetFontNames(aPattern, aNodes);
5404
#endif
5200
5405
5201
  nsCAutoString previousNodeName;
5406
  nsCAutoString previousNodeName;
5202
  nsHashtable* node_hash;
5407
  nsHashtable* node_hash;
Lines 6569-6574 Link Here
6569
  return charSetMap;
6774
  return charSetMap;
6570
}
6775
}
6571
6776
6777
#ifdef MOZ_ENABLE_FREETYPE2
6572
void
6778
void
6573
CharSetNameToCodeRangeBits(const char *aCharset,
6779
CharSetNameToCodeRangeBits(const char *aCharset,
6574
                           PRUint32 *aCodeRange1, PRUint32 *aCodeRange2)
6780
                           PRUint32 *aCodeRange1, PRUint32 *aCodeRange2)
Lines 6579-6582 Link Here
6579
  *aCodeRange1 = charSetInfo->mCodeRange1Bits;
6785
  *aCodeRange1 = charSetInfo->mCodeRange1Bits;
6580
  *aCodeRange2 = charSetInfo->mCodeRange2Bits;
6786
  *aCodeRange2 = charSetInfo->mCodeRange2Bits;
6581
}
6787
}
6788
#endif
6582
6789
6583
-- gfx/src/gtk/nsFontMetricsGTK.h
6790
++ gfx/src/gtk/nsFontMetricsGTK.h
Lines 52-58 Link Here
52
#include "nsICharRepresentable.h"
52
#include "nsICharRepresentable.h"
53
#include "nsCompressedCharMap.h"
53
#include "nsCompressedCharMap.h"
54
#include "nsIFontMetricsGTK.h"
54
#include "nsIFontMetricsGTK.h"
55
#ifdef MOZ_ENABLE_FREETYPE2
55
#include "nsIFontCatalogService.h"
56
#include "nsIFontCatalogService.h"
57
#endif
56
58
57
#include <gdk/gdk.h>
59
#include <gdk/gdk.h>
58
#include <gdk/gdkx.h>
60
#include <gdk/gdkx.h>
Lines 92-98 Link Here
92
  char*              mScalable;
94
  char*              mScalable;
93
  PRBool             mOutlineScaled;
95
  PRBool             mOutlineScaled;
94
  nsVoidArray        mScaledFonts;
96
  nsVoidArray        mScaledFonts;
97
#ifdef MOZ_ENABLE_FREETYPE2
95
  nsITrueTypeFontCatalogEntry*   mFreeTypeFaceID;
98
  nsITrueTypeFontCatalogEntry*   mFreeTypeFaceID;
99
#endif
96
};
100
};
97
101
98
struct nsFontStyle
102
struct nsFontStyle
Lines 344-349 Link Here
344
348
345
  virtual GdkFont* GetCurrentGDKFont(void);
349
  virtual GdkFont* GetCurrentGDKFont(void);
346
350
351
  virtual nsresult SetRightToLeftText(PRBool aIsRTL);
352
353
  virtual nsresult GetClusterInfo(const PRUnichar *aText,
354
                                  PRUint32 aLength,
355
                                  PRUint32 *aClusterStarts);
356
357
  virtual nsresult GetPosition(const PRUnichar *aText,
358
                               PRUint32 aLength,
359
                               nscoord aCoord,
360
                               PRUint32 &aInx);
361
362
  virtual nsresult GetRangeWidth(const PRUnichar *aText,
363
                                 PRUint32 aLength,
364
                                 PRUint32 aStart,
365
                                 PRUint32 aEnd,
366
                                 PRUint32 &aWidth);
367
347
  static nsresult FamilyExists(nsIDeviceContext *aDevice, const nsString& aName);
368
  static nsresult FamilyExists(nsIDeviceContext *aDevice, const nsString& aName);
348
  static PRUint32 GetHints(void);
369
  static PRUint32 GetHints(void);
349
370
Lines 411-417 Link Here
411
class nsHashKey;
432
class nsHashKey;
412
PRBool FreeNode(nsHashKey* aKey, void* aData, void* aClosure);
433
PRBool FreeNode(nsHashKey* aKey, void* aData, void* aClosure);
413
nsFontCharSetInfo *GetCharSetInfo(const char *aCharSetName);
434
nsFontCharSetInfo *GetCharSetInfo(const char *aCharSetName);
435
#ifdef MOZ_ENABLE_FREETYPE2
414
void CharSetNameToCodeRangeBits(const char*, PRUint32*, PRUint32*);
436
void CharSetNameToCodeRangeBits(const char*, PRUint32*, PRUint32*);
437
#endif
415
nsFontCharSetMap *GetCharSetMap(const char *aCharSetName);
438
nsFontCharSetMap *GetCharSetMap(const char *aCharSetName);
416
439
417
440
418
-- gfx/src/gtk/nsFontMetricsUtils.cpp
441
++ gfx/src/gtk/nsFontMetricsUtils.cpp
Lines 50-60 Link Here
50
#include "nsFontMetricsGTK.h"
50
#include "nsFontMetricsGTK.h"
51
#endif
51
#endif
52
52
53
#ifdef MOZ_ENABLE_PANGO
54
#include "nsFontMetricsPango.h"
55
#endif
56
53
#include "nsFontMetricsUtils.h"
57
#include "nsFontMetricsUtils.h"
54
58
55
PRUint32
59
PRUint32
56
NS_FontMetricsGetHints(void)
60
NS_FontMetricsGetHints(void)
57
{
61
{
62
#ifdef MOZ_ENABLE_PANGO
63
    if (NS_IsPangoEnabled()) {
64
        return nsFontMetricsPango::GetHints();
65
    }
66
#endif
58
#ifdef MOZ_ENABLE_XFT
67
#ifdef MOZ_ENABLE_XFT
59
    if (NS_IsXftEnabled()) {
68
    if (NS_IsXftEnabled()) {
60
        return nsFontMetricsXft::GetHints();
69
        return nsFontMetricsXft::GetHints();
Lines 69-74 Link Here
69
nsresult
78
nsresult
70
NS_FontMetricsFamilyExists(nsIDeviceContext *aDevice, const nsString &aName)
79
NS_FontMetricsFamilyExists(nsIDeviceContext *aDevice, const nsString &aName)
71
{
80
{
81
#ifdef MOZ_ENABLE_PANGO
82
    if (NS_IsPangoEnabled()) {
83
        return nsFontMetricsPango::FamilyExists(aDevice, aName);
84
    }
85
#endif
72
#ifdef MOZ_ENABLE_XFT
86
#ifdef MOZ_ENABLE_XFT
73
    // try to fall through to the core fonts if xft fails
87
    // try to fall through to the core fonts if xft fails
74
    if (NS_IsXftEnabled()) {
88
    if (NS_IsXftEnabled()) {
Lines 121-123 Link Here
121
}
135
}
122
136
123
#endif /* MOZ_ENABLE_XFT */
137
#endif /* MOZ_ENABLE_XFT */
124
-- gfx/src/gtk/nsFontMetricsUtils.h
138
139
#ifdef MOZ_ENABLE_PANGO
140
141
PRBool
142
NS_IsPangoEnabled(void)
143
{
144
    char *val = PR_GetEnv("MOZ_ENABLE_PANGO");
145
    if (val)
146
        return TRUE;
147
148
    return FALSE;
149
}
150
151
#endif
152
++ gfx/src/gtk/nsFontMetricsUtils.h
Lines 42-50 Link Here
42
extern PRUint32 NS_FontMetricsGetHints    (void);
42
extern PRUint32 NS_FontMetricsGetHints    (void);
43
extern nsresult NS_FontMetricsFamilyExists(nsIDeviceContext *aDevice,
43
extern nsresult NS_FontMetricsFamilyExists(nsIDeviceContext *aDevice,
44
                                           const nsString &aName);
44
                                           const nsString &aName);
45
46
#ifdef MOZ_ENABLE_XFT
45
#ifdef MOZ_ENABLE_XFT
47
extern PRBool   NS_IsXftEnabled(void);
46
extern PRBool   NS_IsXftEnabled(void);
48
#endif
47
#endif
49
48
49
#ifdef MOZ_ENABLE_PANGO
50
extern PRBool   NS_IsPangoEnabled(void);
51
#endif
52
50
#endif /* __nsFontMetricsUtils_h */
53
#endif /* __nsFontMetricsUtils_h */
51
-- gfx/src/gtk/nsFontMetricsXft.h
54
++ gfx/src/gtk/nsFontMetricsXft.h
Lines 202-207 Link Here
202
202
203
    virtual GdkFont* GetCurrentGDKFont(void);
203
    virtual GdkFont* GetCurrentGDKFont(void);
204
204
205
    virtual nsresult SetRightToLeftText(PRBool aIsRTL);
206
207
    virtual nsresult GetClusterInfo(const PRUnichar *aText,
208
                                    PRUint32 aLength,
209
                                    PRUint32 *aClusterStarts);
210
211
    virtual nsresult GetPosition(const PRUnichar *aText,
212
                                 PRUint32 aLength,
213
                                 nscoord aCoord,
214
                                 PRUint32 &aInx);
215
216
    virtual nsresult GetRangeWidth(const PRUnichar *aText,
217
                                   PRUint32 aLength,
218
                                   PRUint32 aStart,
219
                                   PRUint32 aEnd,
220
                                   PRUint32 &aWidth);
221
205
    // get hints for the font
222
    // get hints for the font
206
    static PRUint32    GetHints  (void);
223
    static PRUint32    GetHints  (void);
207
224
208
-- gfx/src/gtk/nsGCCache.cpp
225
++ gfx/src/gtk/nsGCCache.cpp
Lines 232-329 Link Here
232
  // We have old GC, reuse it and check what
232
  // We have old GC, reuse it and check what
233
  // we have to change
233
  // we have to change
234
234
235
  XGCValues xvalues;
235
  GdkGCValues xvalues;
236
  unsigned long xvalues_mask=0;
236
  int xvalues_mask = 0;
237
237
238
  if (entry->clipRegion) {
238
  if (entry->clipRegion) {
239
    // set it to none here and then set the clip region with
239
    // set it to none here and then set the clip region with
240
    // gdk_gc_set_clip_region in GetGC()
240
    // gdk_gc_set_clip_region in GetGC()
241
    xvalues.clip_mask = None;
241
    xvalues.clip_mask = None;
242
    xvalues_mask |= GCClipMask;
242
    xvalues_mask |= GDK_GC_CLIP_MASK;
243
    gdk_region_destroy(entry->clipRegion);
243
    gdk_region_destroy(entry->clipRegion);
244
    entry->clipRegion = NULL;
244
    entry->clipRegion = NULL;
245
  }
245
  }
246
246
247
  if (entry->gcv.foreground.pixel != gcv->foreground.pixel) {
247
  if (entry->gcv.foreground.pixel != gcv->foreground.pixel) {
248
    xvalues.foreground = gcv->foreground.pixel;
248
    xvalues.foreground.pixel = gcv->foreground.pixel;
249
    xvalues_mask |= GCForeground;
249
    xvalues_mask |= GDK_GC_FOREGROUND;
250
  }
250
  }
251
251
252
  if (entry->gcv.function != gcv->function) {
252
  if (entry->gcv.function != gcv->function) {
253
    switch (gcv->function) {
253
    xvalues.function = gcv->function;
254
    case GDK_COPY:
254
    xvalues_mask |= GDK_GC_FUNCTION;
255
      xvalues.function = GXcopy;
256
      break;
257
    case GDK_INVERT:
258
      xvalues.function = GXinvert;
259
      break;
260
    case GDK_XOR:
261
      xvalues.function = GXxor;
262
      break;
263
    case GDK_CLEAR:
264
      xvalues.function = GXclear;
265
      break;
266
    case GDK_AND:
267
      xvalues.function = GXand;
268
      break;
269
    case GDK_AND_REVERSE:
270
      xvalues.function = GXandReverse;
271
      break;
272
    case GDK_AND_INVERT:
273
      xvalues.function = GXandInverted;
274
      break;
275
    case GDK_NOOP:
276
      xvalues.function = GXnoop;
277
      break;
278
    case GDK_OR:
279
      xvalues.function = GXor;
280
      break;
281
    case GDK_EQUIV:
282
      xvalues.function = GXequiv;
283
      break;
284
    case GDK_OR_REVERSE:
285
      xvalues.function = GXorReverse;
286
      break;
287
    case GDK_COPY_INVERT:
288
      xvalues.function = GXcopyInverted;
289
      break;
290
    case GDK_OR_INVERT:
291
      xvalues.function = GXorInverted;
292
      break;
293
    case GDK_NAND:
294
      xvalues.function = GXnand;
295
      break;
296
    case GDK_SET:
297
      xvalues.function = GXset;
298
      break;
299
    }
300
    xvalues_mask |= GCFunction;
301
  }
255
  }
302
256
303
  if(entry->gcv.font != gcv->font && flags & GDK_GC_FONT) {
257
  if(entry->gcv.font != gcv->font && flags & GDK_GC_FONT) {
304
    xvalues.font =  ((XFontStruct *)GDK_FONT_XFONT(gcv->font))->fid;
258
    xvalues.font = gcv->font;
305
    xvalues_mask |= GCFont;
259
    xvalues_mask |= GDK_GC_FONT;
306
  }
260
  }
307
261
308
  if (entry->gcv.line_style != gcv->line_style) {
262
  if (entry->gcv.line_style != gcv->line_style) {
309
    switch (gcv->line_style) {
263
    xvalues.line_style = gcv->line_style;
310
    case GDK_LINE_SOLID:
264
    xvalues_mask |= GDK_GC_LINE_STYLE;
311
      xvalues.line_style = LineSolid;
312
      break;
313
    case GDK_LINE_ON_OFF_DASH:
314
      xvalues.line_style = LineOnOffDash;
315
      break;
316
    case GDK_LINE_DOUBLE_DASH:
317
      xvalues.line_style = LineDoubleDash;
318
      break;
319
    }
320
    xvalues_mask |= GCLineStyle;
321
  }
265
  }
322
266
323
  if (xvalues_mask != 0) {
267
  if (xvalues_mask != 0) {
324
    XChangeGC(GDK_GC_XDISPLAY(entry->gc), GDK_GC_XGC(entry->gc),
268
    gdk_gc_set_values(entry->gc, &xvalues, (GdkGCValuesMask)xvalues_mask);
325
              xvalues_mask, &xvalues);
326
  }
269
  }
270
327
  entry->flags = flags;
271
  entry->flags = flags;
328
  entry->gcv = *gcv;
272
  entry->gcv = *gcv;
329
}
273
}
330
-- gfx/src/gtk/nsGfxFactoryGTK.cpp
274
++ gfx/src/gtk/nsGfxFactoryGTK.cpp
Lines 62-67 Link Here
62
#ifdef NATIVE_THEME_SUPPORT
62
#ifdef NATIVE_THEME_SUPPORT
63
#include "nsNativeThemeGTK.h"
63
#include "nsNativeThemeGTK.h"
64
#endif
64
#endif
65
#ifdef MOZ_ENABLE_PANGO
66
#include "nsFontMetricsPango.h"
67
#endif
65
#ifdef MOZ_ENABLE_XFT
68
#ifdef MOZ_ENABLE_XFT
66
#include "nsFontMetricsXft.h"
69
#include "nsFontMetricsXft.h"
67
#endif
70
#endif
Lines 71-78 Link Here
71
#include "nsFontMetricsUtils.h"
74
#include "nsFontMetricsUtils.h"
72
#include "nsPrintSession.h"
75
#include "nsPrintSession.h"
73
#include "gfxImageFrame.h"
76
#include "gfxImageFrame.h"
77
#ifdef MOZ_ENABLE_FREETYPE2
74
#include "nsFT2FontCatalog.h"
78
#include "nsFT2FontCatalog.h"
75
#include "nsFreeType.h"
79
#include "nsFreeType.h"
80
#endif
76
81
77
// objects that just require generic constructors
82
// objects that just require generic constructors
78
83
Lines 92-99 Link Here
92
#endif
97
#endif
93
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrintSession, Init)
98
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrintSession, Init)
94
NS_GENERIC_FACTORY_CONSTRUCTOR(gfxImageFrame)
99
NS_GENERIC_FACTORY_CONSTRUCTOR(gfxImageFrame)
95
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFT2FontCatalog)
96
#ifdef MOZ_ENABLE_FREETYPE2
100
#ifdef MOZ_ENABLE_FREETYPE2
101
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFT2FontCatalog)
97
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsFreeType2, Init)
102
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsFreeType2, Init)
98
#endif
103
#endif
99
104
Lines 112-117 Link Here
112
  if (aOuter)
117
  if (aOuter)
113
    return NS_ERROR_NO_AGGREGATION;
118
    return NS_ERROR_NO_AGGREGATION;
114
119
120
#ifdef MOZ_ENABLE_PANGO
121
  if (NS_IsPangoEnabled()) {
122
    result = new nsFontMetricsPango();
123
    if (!result)
124
      return NS_ERROR_OUT_OF_MEMORY;
125
  } else {
126
#endif
115
#ifdef MOZ_ENABLE_XFT
127
#ifdef MOZ_ENABLE_XFT
116
  if (NS_IsXftEnabled()) {
128
  if (NS_IsXftEnabled()) {
117
    result = new nsFontMetricsXft();
129
    result = new nsFontMetricsXft();
Lines 127-132 Link Here
127
#ifdef MOZ_ENABLE_XFT
139
#ifdef MOZ_ENABLE_XFT
128
  }
140
  }
129
#endif
141
#endif
142
#ifdef MOZ_ENABLE_PANGO
143
  }
144
#endif
130
145
131
  NS_ADDREF(result);
146
  NS_ADDREF(result);
132
  nsresult rv = result->QueryInterface(aIID, aResult);
147
  nsresult rv = result->QueryInterface(aIID, aResult);
Lines 148-153 Link Here
148
  if (aOuter)
163
  if (aOuter)
149
    return NS_ERROR_NO_AGGREGATION;
164
    return NS_ERROR_NO_AGGREGATION;
150
165
166
#ifdef MOZ_ENABLE_PANGO
167
  if (NS_IsPangoEnabled()) {
168
    result = new nsFontEnumeratorPango();
169
    if (!result)
170
      return NS_ERROR_OUT_OF_MEMORY;
171
  } else {
172
#endif
151
#ifdef MOZ_ENABLE_XFT
173
#ifdef MOZ_ENABLE_XFT
152
  if (NS_IsXftEnabled()) {
174
  if (NS_IsXftEnabled()) {
153
    result = new nsFontEnumeratorXft();
175
    result = new nsFontEnumeratorXft();
Lines 163-168 Link Here
163
#ifdef MOZ_ENABLE_XFT
185
#ifdef MOZ_ENABLE_XFT
164
  }
186
  }
165
#endif
187
#endif
188
#ifdef MOZ_ENABLE_PANGO
189
  }
190
#endif
166
191
167
  NS_ADDREF(result);
192
  NS_ADDREF(result);
168
  nsresult rv = result->QueryInterface(aIID, aResult);
193
  nsresult rv = result->QueryInterface(aIID, aResult);
Lines 291-301 Link Here
291
    NS_PRINTSESSION_CID,
316
    NS_PRINTSESSION_CID,
292
    "@mozilla.org/gfx/printsession;1",
317
    "@mozilla.org/gfx/printsession;1",
293
    nsPrintSessionConstructor },
318
    nsPrintSessionConstructor },
319
#ifdef MOZ_ENABLE_FREETYPE2
294
  { "TrueType Font Catalog Service",
320
  { "TrueType Font Catalog Service",
295
    NS_FONTCATALOGSERVICE_CID,
321
    NS_FONTCATALOGSERVICE_CID,
296
    "@mozilla.org/gfx/xfontcatalogservice;1",
322
    "@mozilla.org/gfx/xfontcatalogservice;1",
297
    nsFT2FontCatalogConstructor },
323
    nsFT2FontCatalogConstructor },
298
#ifdef MOZ_ENABLE_FREETYPE2
299
  { "FreeType2 routines",
324
  { "FreeType2 routines",
300
    NS_FREETYPE2_CID,
325
    NS_FREETYPE2_CID,
301
    NS_FREETYPE2_CONTRACTID,
326
    NS_FREETYPE2_CONTRACTID,
302
-- gfx/src/gtk/nsIFontMetricsGTK.h
327
++ gfx/src/gtk/nsIFontMetricsGTK.h
Lines 121-126 Link Here
121
    // particular handle.
121
    // particular handle.
122
    virtual GdkFont* GetCurrentGDKFont(void) = 0;
122
    virtual GdkFont* GetCurrentGDKFont(void) = 0;
123
123
124
    // Set the direction of the text rendering
125
    virtual nsresult SetRightToLeftText(PRBool aIsRTL) = 0;
126
127
    virtual nsresult GetClusterInfo(const PRUnichar *aText,
128
                                    PRUint32 aLength,
129
                                    PRUint32 *aClusterStarts) = 0;
130
131
    virtual nsresult GetPosition(const PRUnichar *aText,
132
                                 PRUint32 aLength,
133
                                 nscoord aCoord,
134
                                 PRUint32 &aInx) = 0;
135
136
    virtual nsresult GetRangeWidth(const PRUnichar *aText,
137
                                   PRUint32 aLength,
138
                                   PRUint32 aStart,
139
                                   PRUint32 aEnd,
140
                                   PRUint32 &aWidth) = 0;
141
124
};
142
};
125
143
126
#endif /* __nsIFontMetricsGTK_h */
144
#endif /* __nsIFontMetricsGTK_h */
127
-- gfx/src/gtk/nsRenderingContextGTK.cpp
145
++ gfx/src/gtk/nsRenderingContextGTK.cpp
Lines 524-529 Link Here
524
524
525
  values.foreground.pixel =
525
  values.foreground.pixel =
526
    gdk_rgb_xpixel_from_rgb(NS_TO_GDK_RGB(mCurrentColor));
526
    gdk_rgb_xpixel_from_rgb(NS_TO_GDK_RGB(mCurrentColor));
527
  values.foreground.red = (NS_GET_R(mCurrentColor) << 8) | NS_GET_R(mCurrentColor);
528
  values.foreground.green = (NS_GET_G(mCurrentColor) << 8) | NS_GET_G(mCurrentColor);
529
  values.foreground.blue = (NS_GET_B(mCurrentColor) << 8) | NS_GET_B(mCurrentColor);
527
  valuesMask = GDK_GC_FOREGROUND;
530
  valuesMask = GDK_GC_FOREGROUND;
528
531
529
#ifdef MOZ_ENABLE_COREXFONTS
532
#ifdef MOZ_ENABLE_COREXFONTS
Lines 1438-1443 Link Here
1438
1441
1439
#endif /* MOZ_MATHML */
1442
#endif /* MOZ_MATHML */
1440
1443
1444
NS_IMETHODIMP nsRenderingContextGTK::SetRightToLeftText(PRBool aIsRTL)
1445
{
1446
  return mFontMetrics->SetRightToLeftText(aIsRTL);
1447
}
1448
1449
NS_IMETHODIMP nsRenderingContextGTK::GetClusterInfo(const PRUnichar *aText,
1450
                                                    PRUint32 aLength,
1451
                                                    PRUint32 *aClusterStarts)
1452
{
1453
  return mFontMetrics->GetClusterInfo(aText, aLength, aClusterStarts);
1454
}
1455
1456
NS_IMETHODIMP nsRenderingContextGTK::GetPosition(const PRUnichar *aText, PRUint32 aLength,
1457
                                                 nscoord aCoord, PRUint32 &aInx)
1458
{
1459
  return mFontMetrics->GetPosition(aText, aLength, aCoord, aInx);
1460
}
1461
1462
NS_IMETHODIMP nsRenderingContextGTK::GetRangeWidth(const PRUnichar *aText, PRUint32 aLength,
1463
                                                   PRUint32 aStart, PRUint32 aEnd,
1464
                                                   PRUint32 &aWidth)
1465
{
1466
  return mFontMetrics->GetRangeWidth(aText, aLength, aStart, aEnd, aWidth);
1467
}
1468
1441
NS_IMETHODIMP nsRenderingContextGTK::DrawImage(imgIContainer *aImage, const nsRect * aSrcRect, const nsPoint * aDestPoint)
1469
NS_IMETHODIMP nsRenderingContextGTK::DrawImage(imgIContainer *aImage, const nsRect * aSrcRect, const nsPoint * aDestPoint)
1442
{
1470
{
1443
  UpdateGC();
1471
  UpdateGC();
1444
-- gfx/src/gtk/nsRenderingContextGTK.h
1472
++ gfx/src/gtk/nsRenderingContextGTK.h
Lines 194-199 Link Here
194
                               const nsRect &aDestBounds, PRUint32 aCopyFlags);
194
                               const nsRect &aDestBounds, PRUint32 aCopyFlags);
195
  NS_IMETHOD RetrieveCurrentNativeGraphicData(PRUint32 * ngd);
195
  NS_IMETHOD RetrieveCurrentNativeGraphicData(PRUint32 * ngd);
196
196
197
  NS_IMETHOD SetRightToLeftText(PRBool aIsRTL);
198
  NS_IMETHOD GetClusterInfo(const PRUnichar *aText, PRUint32 aLength,
199
                            PRUint32 *aClusterStarts);
200
  NS_IMETHOD GetPosition(const PRUnichar *aText, PRUint32 aLength,
201
                         nscoord aCoord, PRUint32 &aInx);
202
  NS_IMETHOD GetRangeWidth(const PRUnichar *aText,
203
                           PRUint32 aLength,
204
                           PRUint32 aStart,
205
                           PRUint32 aEnd,
206
                           PRUint32 &aWidth);
207
197
  NS_IMETHOD DrawImage(imgIContainer *aImage, const nsRect * aSrcRect, const nsPoint * aDestPoint);
208
  NS_IMETHOD DrawImage(imgIContainer *aImage, const nsRect * aSrcRect, const nsPoint * aDestPoint);
198
  NS_IMETHOD DrawScaledImage(imgIContainer *aImage, const nsRect * aSrcRect, const nsRect * aDestRect);
209
  NS_IMETHOD DrawScaledImage(imgIContainer *aImage, const nsRect * aSrcRect, const nsRect * aDestRect);
199
210
200
-- gfx/src/gtk/nsFontMetricsPango.h
211
++ gfx/src/gtk/nsFontMetricsPango.h
Line 0 Link Here
0
-- gfx/src/gtk/nsFontMetricsXft.cpp
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* vim:expandtab:shiftwidth=4:tabstop=4:
3
 */
4
/* ***** BEGIN LICENSE BLOCK *****
5
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6
 *
7
 * The contents of this file are subject to the Mozilla Public License Version
8
 * 1.1 (the "License"); you may not use this file except in compliance with
9
 * the License. You may obtain a copy of the License at
10
 * http://www.mozilla.org/MPL/
11
 *
12
 * Software distributed under the License is distributed on an "AS IS" basis,
13
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14
 * for the specific language governing rights and limitations under the
15
 * License.
16
 *
17
 * The Original Code is mozilla.org code.
18
 *
19
 * The Initial Developer of the Original Code Christopher Blizzard
20
 * <blizzard@mozilla.org>.  Portions created by the Initial Developer
21
 * are Copyright (C) 2002 the Initial Developer. All Rights Reserved.
22
 *
23
 * Contributor(s):
24
 *
25
 * Alternatively, the contents of this file may be used under the terms of
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or
27
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
 * in which case the provisions of the GPL or the LGPL are applicable instead
29
 * of those above. If you wish to allow use of your version of this file only
30
 * under the terms of either the GPL or the LGPL, and not to allow others to
31
 * use your version of this file under the terms of the MPL, indicate your
32
 * decision by deleting the provisions above and replace them with the notice
33
 * and other provisions required by the GPL or the LGPL. If you do not delete
34
 * the provisions above, a recipient may use your version of this file under
35
 * the terms of any one of the MPL, the GPL or the LGPL.
36
 *
37
 * ***** END LICENSE BLOCK ***** */
38
39
#include "nsIFontMetrics.h"
40
#include "nsIFontEnumerator.h"
41
#include "nsCRT.h"
42
#include "nsIAtom.h"
43
#include "nsString.h"
44
#include "nsVoidArray.h"
45
#include "nsIFontMetricsGTK.h"
46
47
#include <pango/pango.h>
48
49
class nsFontMetricsPango : public nsIFontMetricsGTK
50
{
51
public:
52
    nsFontMetricsPango();
53
    virtual ~nsFontMetricsPango();
54
55
    NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW
56
57
    // nsISupports
58
    NS_DECL_ISUPPORTS
59
60
    // nsIFontMetrics
61
    NS_IMETHOD  Init                 (const nsFont& aFont, nsIAtom* aLangGroup,
62
                                      nsIDeviceContext *aContext);
63
    NS_IMETHOD  Destroy();
64
    NS_IMETHOD  GetFont              (const nsFont *&aFont);
65
    NS_IMETHOD  GetLangGroup         (nsIAtom** aLangGroup);
66
    NS_IMETHOD  GetFontHandle        (nsFontHandle &aHandle);
67
68
    NS_IMETHOD  GetXHeight           (nscoord& aResult)
69
                                     { aResult = mXHeight; return NS_OK; };
70
71
    NS_IMETHOD GetSuperscriptOffset  (nscoord& aResult)
72
                                     { aResult = mSuperscriptOffset;
73
                                       return NS_OK; };
74
75
    NS_IMETHOD GetSubscriptOffset    (nscoord& aResult)
76
                                     { aResult = mSubscriptOffset;
77
                                       return NS_OK; };
78
                              
79
    NS_IMETHOD GetStrikeout          (nscoord& aOffset, nscoord& aSize)
80
                                     { aOffset = mStrikeoutOffset;
81
                                       aSize = mStrikeoutSize; 
82
                                       return NS_OK; };
83
84
    NS_IMETHOD GetUnderline          (nscoord& aOffset, nscoord& aSize)
85
                                     { aOffset = mUnderlineOffset;
86
                                       aSize = mUnderlineSize; 
87
                                       return NS_OK; };
88
89
    NS_IMETHOD GetHeight             (nscoord &aHeight)
90
                                     { aHeight = mMaxHeight; 
91
                                       return NS_OK; };
92
93
    NS_IMETHOD GetNormalLineHeight   (nscoord &aHeight)
94
                                     { aHeight = mEmHeight + mLeading;
95
                                       return NS_OK; };
96
97
    NS_IMETHOD GetLeading            (nscoord &aLeading)
98
                                     { aLeading = mLeading; 
99
                                       return NS_OK; };
100
101
    NS_IMETHOD GetEmHeight           (nscoord &aHeight)
102
                                     { aHeight = mEmHeight; 
103
                                       return NS_OK; };
104
105
    NS_IMETHOD GetEmAscent           (nscoord &aAscent)
106
                                     { aAscent = mEmAscent;
107
                                       return NS_OK; };
108
109
    NS_IMETHOD GetEmDescent          (nscoord &aDescent)
110
                                     { aDescent = mEmDescent;
111
                                       return NS_OK; };
112
113
    NS_IMETHOD GetMaxHeight          (nscoord &aHeight)
114
                                     { aHeight = mMaxHeight;
115
                                       return NS_OK; };
116
117
    NS_IMETHOD GetMaxAscent          (nscoord &aAscent)
118
                                     { aAscent = mMaxAscent;
119
                                       return NS_OK; };
120
121
    NS_IMETHOD GetMaxDescent         (nscoord &aDescent)
122
                                     { aDescent = mMaxDescent;
123
                                       return NS_OK; };
124
125
    NS_IMETHOD GetMaxAdvance         (nscoord &aAdvance)
126
                                     { aAdvance = mMaxAdvance;
127
                                       return NS_OK; };
128
129
    NS_IMETHOD GetSpaceWidth         (nscoord &aSpaceCharWidth)
130
                                     { aSpaceCharWidth = mSpaceWidth;
131
                                       return NS_OK; };
132
133
    NS_IMETHOD GetAveCharWidth       (nscoord &aAveCharWidth)
134
                                     { aAveCharWidth = mAveCharWidth;
135
                                       return NS_OK; };
136
137
    // nsIFontMetricsGTK (calls from the font rendering layer)
138
    virtual nsresult GetWidth(const char* aString, PRUint32 aLength,
139
                              nscoord& aWidth,
140
                              nsRenderingContextGTK *aContext);
141
    virtual nsresult GetWidth(const PRUnichar* aString, PRUint32 aLength,
142
                              nscoord& aWidth, PRInt32 *aFontID,
143
                              nsRenderingContextGTK *aContext);
144
145
    virtual nsresult GetTextDimensions(const PRUnichar* aString,
146
                                       PRUint32 aLength,
147
                                       nsTextDimensions& aDimensions, 
148
                                       PRInt32* aFontID,
149
                                       nsRenderingContextGTK *aContext);
150
    virtual nsresult GetTextDimensions(const char*         aString,
151
                                       PRInt32             aLength,
152
                                       PRInt32             aAvailWidth,
153
                                       PRInt32*            aBreaks,
154
                                       PRInt32             aNumBreaks,
155
                                       nsTextDimensions&   aDimensions,
156
                                       PRInt32&            aNumCharsFit,
157
                                       nsTextDimensions&   aLastWordDimensions,
158
                                       PRInt32*            aFontID,
159
                                       nsRenderingContextGTK *aContext);
160
    virtual nsresult GetTextDimensions(const PRUnichar*    aString,
161
                                       PRInt32             aLength,
162
                                       PRInt32             aAvailWidth,
163
                                       PRInt32*            aBreaks,
164
                                       PRInt32             aNumBreaks,
165
                                       nsTextDimensions&   aDimensions,
166
                                       PRInt32&            aNumCharsFit,
167
                                       nsTextDimensions&   aLastWordDimensions,
168
                                       PRInt32*            aFontID,
169
                                       nsRenderingContextGTK *aContext);
170
171
    virtual nsresult DrawString(const char *aString, PRUint32 aLength,
172
                                nscoord aX, nscoord aY,
173
                                const nscoord* aSpacing,
174
                                nsRenderingContextGTK *aContext,
175
                                nsDrawingSurfaceGTK *aSurface);
176
    virtual nsresult DrawString(const PRUnichar* aString, PRUint32 aLength,
177
                                nscoord aX, nscoord aY,
178
                                PRInt32 aFontID,
179
                                const nscoord* aSpacing,
180
                                nsRenderingContextGTK *aContext,
181
                                nsDrawingSurfaceGTK *aSurface);
182
183
#ifdef MOZ_MATHML
184
    virtual nsresult GetBoundingMetrics(const char *aString, PRUint32 aLength,
185
                                        nsBoundingMetrics &aBoundingMetrics,
186
                                        nsRenderingContextGTK *aContext);
187
    virtual nsresult GetBoundingMetrics(const PRUnichar *aString,
188
                                        PRUint32 aLength,
189
                                        nsBoundingMetrics &aBoundingMetrics,
190
                                        PRInt32 *aFontID,
191
                                        nsRenderingContextGTK *aContext);
192
#endif /* MOZ_MATHML */
193
194
    virtual GdkFont* GetCurrentGDKFont(void);
195
196
    virtual nsresult SetRightToLeftText(PRBool aIsRTL);
197
198
    virtual nsresult GetClusterInfo(const PRUnichar *aText,
199
                                    PRUint32 aLength,
200
                                    PRUint32 *aClusterStarts);
201
202
    virtual nsresult GetPosition(const PRUnichar *aText,
203
                                 PRUint32 aLength,
204
                                 nscoord aCoord,
205
                                 PRUint32 &aInx);
206
207
    virtual nsresult GetRangeWidth(const PRUnichar *aText,
208
                                   PRUint32 aLength,
209
                                   PRUint32 aStart,
210
                                   PRUint32 aEnd,
211
                                   PRUint32 &aWidth);
212
    
213
    // get hints for the font
214
    static PRUint32    GetHints     (void);
215
216
    // drawing surface methods
217
    static nsresult FamilyExists    (nsIDeviceContext *aDevice,
218
                                     const nsString &aName);
219
220
private:
221
222
    // generic font metrics class bits
223
    nsCStringArray       mFontList;
224
    nsAutoVoidArray      mFontIsGeneric;
225
226
    nsIDeviceContext    *mDeviceContext;
227
    nsCOMPtr<nsIAtom>    mLangGroup;
228
    nsCString           *mGenericFont;
229
    nsFont              *mFont;
230
    float                mPointSize;
231
232
    nsCAutoString        mDefaultFont;
233
234
    // Pango-related items
235
    PangoFontDescription *mPangoFontDesc;
236
    PangoContext         *mPangoContext;
237
    PangoContext         *mLTRPangoContext;
238
    PangoContext         *mRTLPangoContext;
239
    PangoAttrList        *mPangoAttrList;
240
    PRBool                mIsRTL;
241
242
    // Cached font metrics
243
    nscoord                  mXHeight;
244
    nscoord                  mSuperscriptOffset;
245
    nscoord                  mSubscriptOffset;
246
    nscoord                  mStrikeoutOffset;
247
    nscoord                  mStrikeoutSize;
248
    nscoord                  mUnderlineOffset;
249
    nscoord                  mUnderlineSize;
250
    nscoord                  mMaxHeight;
251
    nscoord                  mLeading;
252
    nscoord                  mEmHeight;
253
    nscoord                  mEmAscent;
254
    nscoord                  mEmDescent;
255
    nscoord                  mMaxAscent;
256
    nscoord                  mMaxDescent;
257
    nscoord                  mMaxAdvance;
258
    nscoord                  mSpaceWidth;
259
    nscoord                  mPangoSpaceWidth;
260
    nscoord                  mAveCharWidth;
261
262
    // Private methods
263
    nsresult RealizeFont(void);
264
    nsresult CacheFontMetrics(void);
265
266
    static PRBool EnumFontCallback(const nsString &aFamily,
267
                                   PRBool aIsGeneric, void *aData);
268
269
    void     DrawStringSlowly(const gchar *aText,
270
                              const PRUnichar *aOrigString,
271
                              PRUint32 aLength,
272
                              GdkDrawable *aDrawable,
273
                              GdkGC *aGC, gint aX, gint aY,
274
                              PangoLayoutLine *aLine,
275
                              const nscoord *aSpacing);
276
277
    nsresult GetTextDimensionsInternal(const gchar*        aString,
278
                                       PRInt32             aLength,
279
                                       PRInt32             aAvailWidth,
280
                                       PRInt32*            aBreaks,
281
                                       PRInt32             aNumBreaks,
282
                                       nsTextDimensions&   aDimensions,
283
                                       PRInt32&            aNumCharsFit,
284
                                       nsTextDimensions&   aLastWordDimensions,
285
                                       nsRenderingContextGTK *aContext);
286
287
    void FixupSpaceWidths (PangoLayout *aLayout, const char *aString);
288
};
289
290
class nsFontEnumeratorPango : public nsIFontEnumerator
291
{
292
public:
293
    nsFontEnumeratorPango();
294
    NS_DECL_ISUPPORTS
295
    NS_DECL_NSIFONTENUMERATOR
296
};
297
++ gfx/src/gtk/nsFontMetricsXft.cpp
Lines 64-69 Link Here
64
#include "nsNetUtil.h"
64
#include "nsNetUtil.h"
65
#include "nsClassHashtable.h"
65
#include "nsClassHashtable.h"
66
#include "nsAutoBuffer.h"
66
#include "nsAutoBuffer.h"
67
#include "nsFontConfigUtils.h"
67
68
68
#include <gdk/gdkx.h>
69
#include <gdk/gdkx.h>
69
#include <freetype/tttables.h>
70
#include <freetype/tttables.h>
Lines 197-222 Link Here
197
    FT_Encoding                 mFT_Encoding;
198
    FT_Encoding                 mFT_Encoding;
198
};
199
};
199
200
200
struct MozXftLangGroup {
201
    const char    *mozLangGroup;
202
    FcChar32       character;
203
    const FcChar8 *XftLang;
204
};
205
206
static const MozXftLangGroup MozXftLangGroups[] = {
207
    { "x-western",      0x0041, (const FcChar8 *)"en" },
208
    { "x-central-euro", 0x0100, (const FcChar8 *)"pl" },
209
    { "x-cyrillic",     0x0411, (const FcChar8 *)"ru" },
210
    { "x-baltic",       0x0104, (const FcChar8 *)"lv" },
211
    { "x-devanagari",   0x0905, (const FcChar8 *)"hi" },
212
    { "x-tamil",        0x0B85, (const FcChar8 *)"ta" },
213
    { "x-unicode",      0x0000,                  0    },
214
    { "x-user-def",     0x0000,                  0    },
215
};
216
217
#define NUM_XFT_LANG_GROUPS (sizeof (MozXftLangGroups) / \
218
                             sizeof (MozXftLangGroups[0]))
219
220
struct DrawStringData {
201
struct DrawStringData {
221
    nscoord                x;
202
    nscoord                x;
222
    nscoord                y;
203
    nscoord                y;
Lines 239-259 Link Here
239
#define AUTO_BUFFER_SIZE 3000
220
#define AUTO_BUFFER_SIZE 3000
240
typedef nsAutoBuffer<FcChar32, AUTO_BUFFER_SIZE> nsAutoFcChar32Buffer;
221
typedef nsAutoBuffer<FcChar32, AUTO_BUFFER_SIZE> nsAutoFcChar32Buffer;
241
222
242
static int      CalculateSlant   (PRUint8  aStyle);
243
static int      CalculateWeight  (PRUint16 aWeight);
244
static void     AddLangGroup     (FcPattern *aPattern, nsIAtom *aLangGroup);
245
static void     AddFFRE          (FcPattern *aPattern, nsCString *aFamily,
246
                                  PRBool aWeak);
247
static void     FFREToFamily     (nsACString &aFFREName, nsACString &oFamily);
248
static int      FFRECountHyphens (nsACString &aFFREName);
249
static int      CompareFontNames (const void* aArg1, const void* aArg2,
223
static int      CompareFontNames (const void* aArg1, const void* aArg2,
250
                                  void* aClosure);
224
                                  void* aClosure);
251
static PRBool   IsASCIIFontName  (const nsString& aName);
252
static nsresult EnumFontsXft     (nsIAtom* aLangGroup, const char* aGeneric,
225
static nsresult EnumFontsXft     (nsIAtom* aLangGroup, const char* aGeneric,
253
                                  PRUint32* aCount, PRUnichar*** aResult);
226
                                  PRUint32* aCount, PRUnichar*** aResult);
254
227
255
static const MozXftLangGroup* FindFCLangGroup (nsACString &aLangGroup);
256
257
static        void ConvertCharToUCS4    (const char *aString,
228
static        void ConvertCharToUCS4    (const char *aString,
258
                                         PRUint32 aLength,
229
                                         PRUint32 aLength,
259
                                         nsAutoFcChar32Buffer &aOutBuffer,
230
                                         nsAutoFcChar32Buffer &aOutBuffer,
Lines 452-458 Link Here
452
    // Make sure that the pixel size is at least greater than zero
423
    // Make sure that the pixel size is at least greater than zero
453
    if (mPixelSize < 1) {
424
    if (mPixelSize < 1) {
454
#ifdef DEBUG
425
#ifdef DEBUG
455
        printf("*** Warning: nsFontMetricsXft was passed a pixel size of %d\n",
426
        printf("*** Warning: nsFontMetricsXft was passed a pixel size of %f\n",
456
               mPixelSize);
427
               mPixelSize);
457
#endif
428
#endif
458
        mPixelSize = 1;
429
        mPixelSize = 1;
Lines 477-482 Link Here
477
    if (NS_FAILED(RealizeFont()))
448
    if (NS_FAILED(RealizeFont()))
478
        return NS_ERROR_FAILURE;
449
        return NS_ERROR_FAILURE;
479
450
451
#ifdef DEBUG_foo
452
    printf("%i\n", mXHeight);
453
    printf("%i\n", mSuperscriptOffset);
454
    printf("%i\n", mSubscriptOffset);
455
    printf("%i\n", mStrikeoutOffset);
456
    printf("%i\n", mStrikeoutSize);
457
    printf("%i\n", mUnderlineOffset);
458
    printf("%i\n", mUnderlineSize);
459
    printf("%i\n", mMaxHeight);
460
    printf("%i\n", mLeading);
461
    printf("%i\n", mEmHeight);
462
    printf("%i\n", mEmAscent);
463
    printf("%i\n", mEmDescent);
464
    printf("%i\n", mMaxAscent);
465
    printf("%i\n", mMaxDescent);
466
    printf("%i\n", mMaxAdvance);
467
    printf("%i\n", mSpaceWidth);
468
    printf("%i\n", mAveCharWidth);
469
#endif /* DEBUG_foo */
470
480
    return NS_OK;
471
    return NS_OK;
481
}
472
}
482
473
Lines 532-537 Link Here
532
    f = mDeviceContext->DevUnitsToAppUnits();
523
    f = mDeviceContext->DevUnitsToAppUnits();
533
    aWidth = NSToCoordRound(glyphInfo.xOff * f);
524
    aWidth = NSToCoordRound(glyphInfo.xOff * f);
534
525
526
#ifdef DEBUG_foo
527
    printf("GetWidth (char *) %d\n", aWidth);
528
#endif
529
535
    return NS_OK;
530
    return NS_OK;
536
}
531
}
537
532
Lines 555-560 Link Here
555
    if (aFontID)
550
    if (aFontID)
556
        *aFontID = 0;
551
        *aFontID = 0;
557
552
553
#ifdef DEBUG_foo
554
    printf("GetWidth %d\n", aWidth);
555
#endif
556
558
    return NS_OK;
557
    return NS_OK;
559
}
558
}
560
559
Lines 588-593 Link Here
588
    if (nsnull != aFontID)
587
    if (nsnull != aFontID)
589
        *aFontID = 0;
588
        *aFontID = 0;
590
589
590
#ifdef DEBUG_foo
591
    printf("GetTextDimensions %d %d %d\n", aDimensions.width,
592
           aDimensions.ascent, aDimensions.descent);
593
#endif
594
591
    return NS_OK;
595
    return NS_OK;
592
}
596
}
593
597
Lines 647-652 Link Here
647
    nsAutoDrawSpecBuffer drawBuffer(data.draw, &data.color);
651
    nsAutoDrawSpecBuffer drawBuffer(data.draw, &data.color);
648
    data.drawBuffer = &drawBuffer;
652
    data.drawBuffer = &drawBuffer;
649
653
654
#ifdef DEBUG_foo
655
    printf("DrawString (char *)\n");
656
#endif
657
650
    return EnumerateGlyphs(aString, aLength,
658
    return EnumerateGlyphs(aString, aLength,
651
                           &nsFontMetricsXft::DrawStringCallback, &data);
659
                           &nsFontMetricsXft::DrawStringCallback, &data);
652
}
660
}
Lines 677-682 Link Here
677
    nsAutoDrawSpecBuffer drawBuffer(data.draw, &data.color);
685
    nsAutoDrawSpecBuffer drawBuffer(data.draw, &data.color);
678
    data.drawBuffer = &drawBuffer;
686
    data.drawBuffer = &drawBuffer;
679
687
688
#ifdef DEBUG_foo
689
    printf("DrawString\n");
690
#endif
691
680
    return EnumerateGlyphs(aString, aLength,
692
    return EnumerateGlyphs(aString, aLength,
681
                           &nsFontMetricsXft::DrawStringCallback, &data);
693
                           &nsFontMetricsXft::DrawStringCallback, &data);
682
}
694
}
Lines 716-721 Link Here
716
    aBoundingMetrics.ascent = NSToCoordRound(aBoundingMetrics.ascent * P2T);
728
    aBoundingMetrics.ascent = NSToCoordRound(aBoundingMetrics.ascent * P2T);
717
    aBoundingMetrics.descent = NSToCoordRound(aBoundingMetrics.descent * P2T);
729
    aBoundingMetrics.descent = NSToCoordRound(aBoundingMetrics.descent * P2T);
718
730
731
#ifdef DEBUG_foo
732
    printf("GetBoundingMetrics (char *)%d %d %d %d %d\n",
733
           aBoundingMetrics.leftBearing,
734
           aBoundingMetrics.rightBearing,
735
           aBoundingMetrics.width,
736
           aBoundingMetrics.ascent,
737
           aBoundingMetrics.descent);
738
#endif
739
719
    return NS_OK;
740
    return NS_OK;
720
}
741
}
721
742
Lines 757-762 Link Here
757
    if (nsnull != aFontID)
778
    if (nsnull != aFontID)
758
        *aFontID = 0;
779
        *aFontID = 0;
759
780
781
#ifdef DEBUG_foo
782
    printf("GetBoundingMetrics %d %d %d %d %d\n",
783
           aBoundingMetrics.leftBearing,
784
           aBoundingMetrics.rightBearing,
785
           aBoundingMetrics.width,
786
           aBoundingMetrics.ascent,
787
           aBoundingMetrics.descent);
788
#endif
789
760
    return NS_OK;
790
    return NS_OK;
761
}
791
}
762
792
Lines 768-773 Link Here
768
    return nsnull;
798
    return nsnull;
769
}
799
}
770
800
801
nsresult
802
nsFontMetricsXft::SetRightToLeftText(PRBool aIsRTL)
803
{
804
    return NS_OK;
805
}
806
807
nsresult
808
nsFontMetricsXft::GetClusterInfo(const PRUnichar *aText,
809
                                 PRUint32 aLength,
810
                                 PRUint32 *aClusterStarts)
811
{
812
    return NS_ERROR_NOT_IMPLEMENTED;
813
}
814
815
nsresult
816
nsFontMetricsXft::GetPosition(const PRUnichar *aText,
817
                              PRUint32 aLength,
818
                              nscoord aCoord,
819
                              PRUint32 &aInx)
820
{
821
    return NS_ERROR_NOT_IMPLEMENTED;
822
}
823
824
nsresult
825
nsFontMetricsXft::GetRangeWidth(const PRUnichar *aText,
826
                                PRUint32 aLength,
827
                                PRUint32 aStart,
828
                                PRUint32 aEnd,
829
                                PRUint32 &aWidth)
830
{
831
    return NS_ERROR_NOT_IMPLEMENTED;
832
}
833
771
PRUint32
834
PRUint32
772
nsFontMetricsXft::GetHints(void)
835
nsFontMetricsXft::GetHints(void)
773
{
836
{
Lines 1041-1053 Link Here
1041
            break;;
1104
            break;;
1042
1105
1043
        nsCString *familyName = mFontList.CStringAt(i);
1106
        nsCString *familyName = mFontList.CStringAt(i);
1044
        AddFFRE(mPattern, familyName, PR_FALSE);
1107
        NS_AddFFRE(mPattern, familyName, PR_FALSE);
1045
    }
1108
    }
1046
1109
1047
    // Add the language group.  Note that we do this before adding any
1110
    // Add the language group.  Note that we do this before adding any
1048
    // generics.  That's because the language is more important than
1111
    // generics.  That's because the language is more important than
1049
    // any generic font.
1112
    // any generic font.
1050
    AddLangGroup (mPattern, mLangGroup);
1113
    NS_AddLangGroup (mPattern, mLangGroup);
1051
1114
1052
    // If there's a generic add a pref for the generic if there's one
1115
    // If there's a generic add a pref for the generic if there's one
1053
    // set.
1116
    // set.
Lines 1071-1077 Link Here
1071
1134
1072
            // we ignore prefs that have three hypens since they are X
1135
            // we ignore prefs that have three hypens since they are X
1073
            // style prefs.
1136
            // style prefs.
1074
            if (FFRECountHyphens(value) < 3) {
1137
            if (NS_FFRECountHyphens(value) < 3) {
1075
                nsCString tmpstr;
1138
                nsCString tmpstr;
1076
                tmpstr.Append(value);
1139
                tmpstr.Append(value);
1077
1140
Lines 1080-1093 Link Here
1080
                           tmpstr.get());
1143
                           tmpstr.get());
1081
                }
1144
                }
1082
1145
1083
                AddFFRE(mPattern, &tmpstr, PR_FALSE);
1146
                NS_AddFFRE(mPattern, &tmpstr, PR_FALSE);
1084
            }
1147
            }
1085
        }
1148
        }
1086
    }
1149
    }
1087
1150
1088
    // Add the generic if there is one.
1151
    // Add the generic if there is one.
1089
    if (mGenericFont && !mFont->systemFont)
1152
    if (mGenericFont && !mFont->systemFont)
1090
        AddFFRE(mPattern, mGenericFont, PR_FALSE);
1153
        NS_AddFFRE(mPattern, mGenericFont, PR_FALSE);
1091
1154
1092
    if (PR_LOG_TEST(gXftFontLoad, PR_LOG_DEBUG)) {
1155
    if (PR_LOG_TEST(gXftFontLoad, PR_LOG_DEBUG)) {
1093
        // generic font
1156
        // generic font
Lines 1114-1120 Link Here
1114
1177
1115
        // weight
1178
        // weight
1116
        printf("\tweight: (orig,calc) %d,%d\n",
1179
        printf("\tweight: (orig,calc) %d,%d\n",
1117
               mFont->weight, CalculateWeight(mFont->weight));
1180
               mFont->weight, NS_CalculateWeight(mFont->weight));
1118
1181
1119
    }        
1182
    }        
1120
1183
Lines 1126-1136 Link Here
1126
1189
1127
    // Add the slant type
1190
    // Add the slant type
1128
    FcPatternAddInteger(mPattern, FC_SLANT,
1191
    FcPatternAddInteger(mPattern, FC_SLANT,
1129
                        CalculateSlant(mFont->style));
1192
                        NS_CalculateSlant(mFont->style));
1130
1193
1131
    // Add the weight
1194
    // Add the weight
1132
    FcPatternAddInteger(mPattern, FC_WEIGHT,
1195
    FcPatternAddInteger(mPattern, FC_WEIGHT,
1133
                        CalculateWeight(mFont->weight));
1196
                        NS_CalculateWeight(mFont->weight));
1134
1197
1135
    // Set up the default substitutions for this font
1198
    // Set up the default substitutions for this font
1136
    FcConfigSubstitute(0, mPattern, FcMatchPattern);
1199
    FcConfigSubstitute(0, mPattern, FcMatchPattern);
Lines 1292-1298 Link Here
1292
    FcPatternAddInteger(pattern, FC_PIXEL_SIZE, int(0.5 * mPixelSize));
1355
    FcPatternAddInteger(pattern, FC_PIXEL_SIZE, int(0.5 * mPixelSize));
1293
1356
1294
    FcPatternAddInteger(pattern, FC_WEIGHT,
1357
    FcPatternAddInteger(pattern, FC_WEIGHT,
1295
                        CalculateWeight(mFont->weight));
1358
                        NS_CalculateWeight(mFont->weight));
1296
1359
1297
    FcConfigSubstitute(0, pattern, FcMatchPattern);
1360
    FcConfigSubstitute(0, pattern, FcMatchPattern);
1298
    XftDefaultSubstitute(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY()),
1361
    XftDefaultSubstitute(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY()),
Lines 1708-1714 Link Here
1708
nsFontMetricsXft::FamilyExists(nsIDeviceContext *aDevice,
1771
nsFontMetricsXft::FamilyExists(nsIDeviceContext *aDevice,
1709
                               const nsString &aName)
1772
                               const nsString &aName)
1710
{
1773
{
1711
    if (!IsASCIIFontName(aName))
1774
    if (!NS_IsASCIIFontName(aName))
1712
        return NS_ERROR_FAILURE;
1775
        return NS_ERROR_FAILURE;
1713
1776
1714
    NS_ConvertUCS2toUTF8 name(aName);
1777
    NS_ConvertUCS2toUTF8 name(aName);
Lines 1766-1772 Link Here
1766
{
1829
{
1767
    // make sure it's an ascii name, if not then return and continue
1830
    // make sure it's an ascii name, if not then return and continue
1768
    // enumerating
1831
    // enumerating
1769
    if (!IsASCIIFontName(aFamily))
1832
    if (!NS_IsASCIIFontName(aFamily))
1770
        return PR_TRUE;
1833
        return PR_TRUE;
1771
1834
1772
    nsCAutoString name;
1835
    nsCAutoString name;
Lines 1864-1870 Link Here
1864
1927
1865
  if (aLangGroup && *aLangGroup) {
1928
  if (aLangGroup && *aLangGroup) {
1866
    nsCOMPtr<nsIAtom> langGroup = do_GetAtom(aLangGroup);
1929
    nsCOMPtr<nsIAtom> langGroup = do_GetAtom(aLangGroup);
1867
    AddLangGroup(match_pattern, langGroup);
1930
    NS_AddLangGroup(match_pattern, langGroup);
1868
  }
1931
  }
1869
1932
1870
  FcConfigSubstitute(0, match_pattern, FcMatchPattern); 
1933
  FcConfigSubstitute(0, match_pattern, FcMatchPattern); 
Lines 2239-2387 Link Here
2239
2302
2240
/* static */
2303
/* static */
2241
int
2304
int
2242
CalculateSlant(PRUint8 aStyle)
2243
{
2244
    int fcSlant;
2245
2246
    switch(aStyle) {
2247
    case NS_FONT_STYLE_ITALIC:
2248
        fcSlant = FC_SLANT_ITALIC;
2249
        break;
2250
    case NS_FONT_STYLE_OBLIQUE:
2251
        fcSlant = FC_SLANT_OBLIQUE;
2252
        break;
2253
    default:
2254
        fcSlant = FC_SLANT_ROMAN;
2255
        break;
2256
    }
2257
2258
    return fcSlant;
2259
}
2260
2261
/* static */
2262
int
2263
CalculateWeight (PRUint16 aWeight)
2264
{
2265
    /*
2266
     * weights come in two parts crammed into one
2267
     * integer -- the "base" weight is weight / 100,
2268
     * the rest of the value is the "offset" from that
2269
     * weight -- the number of steps to move to adjust
2270
     * the weight in the list of supported font weights,
2271
     * this value can be negative or positive.
2272
     */
2273
    PRInt32 baseWeight = (aWeight + 50) / 100;
2274
    PRInt32 offset = aWeight - baseWeight * 100;
2275
2276
    /* clip weights to range 0 to 9 */
2277
    if (baseWeight < 0)
2278
        baseWeight = 0;
2279
    if (baseWeight > 9)
2280
        baseWeight = 9;
2281
2282
    /* Map from weight value to fcWeights index */
2283
    static int fcWeightLookup[10] = {
2284
        0, 0, 0, 0, 1, 1, 2, 3, 3, 4,
2285
    };
2286
2287
    PRInt32 fcWeight = fcWeightLookup[baseWeight];
2288
2289
    /*
2290
     * adjust by the offset value, make sure we stay inside the 
2291
     * fcWeights table
2292
     */
2293
    fcWeight += offset;
2294
2295
    if (fcWeight < 0)
2296
        fcWeight = 0;
2297
    if (fcWeight > 4)
2298
        fcWeight = 4;
2299
2300
    /* Map to final FC_WEIGHT value */
2301
    static int fcWeights[5] = {
2302
        FC_WEIGHT_LIGHT,      /* 0 */
2303
        FC_WEIGHT_MEDIUM,     /* 1 */
2304
        FC_WEIGHT_DEMIBOLD,   /* 2 */
2305
        FC_WEIGHT_BOLD,       /* 3 */
2306
        FC_WEIGHT_BLACK,      /* 4 */
2307
    };
2308
2309
    return fcWeights[fcWeight];
2310
2311
}
2312
2313
/* static */
2314
void
2315
AddLangGroup(FcPattern *aPattern, nsIAtom *aLangGroup)
2316
{
2317
    // Find the FC lang group for this lang group
2318
    nsCAutoString cname;
2319
    aLangGroup->ToUTF8String(cname);
2320
2321
    // see if the lang group needs to be translated from mozilla's
2322
    // internal mapping into fontconfig's
2323
    const struct MozXftLangGroup *langGroup;
2324
    langGroup = FindFCLangGroup(cname);
2325
2326
    // if there's no lang group, just use the lang group as it was
2327
    // passed to us
2328
    //
2329
    // we're casting away the const here for the strings - should be
2330
    // safe.
2331
    if (!langGroup)
2332
        FcPatternAddString(aPattern, FC_LANG, (FcChar8 *)cname.get());
2333
    else if (langGroup->XftLang) 
2334
        FcPatternAddString(aPattern, FC_LANG, (FcChar8 *)langGroup->XftLang);
2335
}
2336
2337
/* static */
2338
void
2339
AddFFRE(FcPattern *aPattern, nsCString *aFamily, PRBool aWeak)
2340
{
2341
    nsCAutoString family;
2342
    FFREToFamily(*aFamily, family);
2343
2344
    FcValue v;
2345
    v.type = FcTypeString;
2346
    // casting away the const here, should be safe
2347
    v.u.s = (FcChar8 *)family.get();
2348
2349
    if (aWeak)
2350
        FcPatternAddWeak(aPattern, FC_FAMILY, v, FcTrue);
2351
    else
2352
        FcPatternAdd(aPattern, FC_FAMILY, v, FcTrue);
2353
}
2354
2355
/* static */
2356
void
2357
FFREToFamily(nsACString &aFFREName, nsACString &oFamily)
2358
{
2359
  if (FFRECountHyphens(aFFREName) == 3) {
2360
      PRInt32 familyHyphen = aFFREName.FindChar('-') + 1;
2361
      PRInt32 registryHyphen = aFFREName.FindChar('-',familyHyphen);
2362
      oFamily.Append(Substring(aFFREName, familyHyphen,
2363
                               registryHyphen-familyHyphen));
2364
  }
2365
  else {
2366
      oFamily.Append(aFFREName);
2367
  }
2368
}
2369
2370
/* static */
2371
int
2372
FFRECountHyphens (nsACString &aFFREName)
2373
{
2374
    int h = 0;
2375
    PRInt32 hyphen = 0;
2376
    while ((hyphen = aFFREName.FindChar('-', hyphen)) >= 0) {
2377
        ++h;
2378
        ++hyphen;
2379
    }
2380
    return h;
2381
}
2382
2383
/* static */
2384
int
2385
CompareFontNames (const void* aArg1, const void* aArg2, void* aClosure)
2305
CompareFontNames (const void* aArg1, const void* aArg2, void* aClosure)
2386
{
2306
{
2387
    const PRUnichar* str1 = *((const PRUnichar**) aArg1);
2307
    const PRUnichar* str1 = *((const PRUnichar**) aArg1);
Lines 2390-2412 Link Here
2390
    return nsCRT::strcmp(str1, str2);
2310
    return nsCRT::strcmp(str1, str2);
2391
}
2311
}
2392
2312
2393
PRBool
2394
IsASCIIFontName(const nsString& aName)
2395
{
2396
    PRUint32 len = aName.Length();
2397
    const PRUnichar* str = aName.get();
2398
    for (PRUint32 i = 0; i < len; i++) {
2399
        /*
2400
         * X font names are printable ASCII, ignore others (for now)
2401
         */
2402
        if ((str[i] < 0x20) || (str[i] > 0x7E)) {
2403
            return PR_FALSE;
2404
        }
2405
    }
2406
  
2407
    return PR_TRUE;
2408
}
2409
2410
/* static */
2313
/* static */
2411
nsresult
2314
nsresult
2412
EnumFontsXft(nsIAtom* aLangGroup, const char* aGeneric,
2315
EnumFontsXft(nsIAtom* aLangGroup, const char* aGeneric,
Lines 2434-2440 Link Here
2434
2337
2435
    // take the pattern and add the lang group to it
2338
    // take the pattern and add the lang group to it
2436
    if (aLangGroup)
2339
    if (aLangGroup)
2437
        AddLangGroup(pat, aLangGroup);
2340
        NS_AddLangGroup(pat, aLangGroup);
2438
2341
2439
    // get the font list
2342
    // get the font list
2440
    fs = FcFontList(0, pat, os);
2343
    fs = FcFontList(0, pat, os);
Lines 2542-2561 Link Here
2542
}
2445
}
2543
2446
2544
/* static */
2447
/* static */
2545
const MozXftLangGroup*
2546
FindFCLangGroup (nsACString &aLangGroup)
2547
{
2548
    for (unsigned int i=0; i < NUM_XFT_LANG_GROUPS; ++i) {
2549
        if (aLangGroup.Equals(MozXftLangGroups[i].mozLangGroup,
2550
                              nsCaseInsensitiveCStringComparator())) {
2551
            return &MozXftLangGroups[i];
2552
        }
2553
    }
2554
2555
    return nsnull;
2556
}
2557
2558
/* static */
2559
void
2448
void
2560
ConvertCharToUCS4(const char *aString, PRUint32 aLength, 
2449
ConvertCharToUCS4(const char *aString, PRUint32 aLength, 
2561
                  nsAutoFcChar32Buffer &aOutBuffer, PRUint32 *aOutLen)
2450
                  nsAutoFcChar32Buffer &aOutBuffer, PRUint32 *aOutLen)
2562
-- gfx/src/gtk/mozilla-decoder.cpp
2451
++ gfx/src/gtk/mozilla-decoder.cpp
Line 0 Link Here
0
-- gfx/src/gtk/mozilla-decoder.h
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* vim:expandtab:shiftwidth=4:tabstop=4:
3
 */
4
/* ***** BEGIN LICENSE BLOCK *****
5
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6
 *
7
 * The contents of this file are subject to the Mozilla Public License Version
8
 * 1.1 (the "License"); you may not use this file except in compliance with
9
 * the License. You may obtain a copy of the License at
10
 * http://www.mozilla.org/MPL/
11
 *
12
 * Software distributed under the License is distributed on an "AS IS" basis,
13
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14
 * for the specific language governing rights and limitations under the
15
 * License.
16
 *
17
 * The Original Code is mozilla.org code.
18
 *
19
 * The Initial Developer of the Original Code is Christopher Blizzard
20
 * <blizzard@mozilla.org>.  Portions created by the Initial Developer
21
 * are Copyright (C) 2004 the Initial Developer. All Rights Reserved.
22
 *
23
 * Contributor(s):
24
 *
25
 * Alternatively, the contents of this file may be used under the terms of
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or
27
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
 * in which case the provisions of the GPL or the LGPL are applicable instead
29
 * of those above. If you wish to allow use of your version of this file only
30
 * under the terms of either the GPL or the LGPL, and not to allow others to
31
 * use your version of this file under the terms of the MPL, indicate your
32
 * decision by deleting the provisions above and replace them with the notice
33
 * and other provisions required by the GPL or the LGPL. If you do not delete
34
 * the provisions above, a recipient may use your version of this file under
35
 * the terms of any one of the MPL, the GPL or the LGPL.
36
 *
37
 * ***** END LICENSE BLOCK ***** */
38
39
#define PANGO_ENABLE_BACKEND
40
#define PANGO_ENABLE_ENGINE
41
42
#include "mozilla-decoder.h"
43
#include <pango/pangoxft.h>
44
#include <pango/pangofc-fontmap.h>
45
#include <pango/pangofc-font.h>
46
#include <gdk/gdkx.h>
47
48
#include "nsString.h"
49
#include "nsIPersistentProperties2.h"
50
#include "nsNetUtil.h"
51
#include "nsReadableUtils.h"
52
#include "nsICharsetConverterManager.h"
53
#include "nsICharRepresentable.h"
54
#include "nsCompressedCharMap.h"
55
56
#undef DEBUG_CUSTOM_ENCODER
57
58
G_DEFINE_TYPE (MozillaDecoder, mozilla_decoder, PANGO_TYPE_FC_DECODER)
59
60
MozillaDecoder *mozilla_decoder_new      (void);
61
62
static FcCharSet  *mozilla_decoder_get_charset (PangoFcDecoder *decoder,
63
                                                PangoFcFont    *fcfont);
64
static PangoGlyph  mozilla_decoder_get_glyph   (PangoFcDecoder *decoder,
65
                                                PangoFcFont    *fcfont,
66
                                                guint32         wc);
67
68
static PangoFcDecoder *mozilla_find_decoder    (FcPattern *pattern,
69
                                                gpointer   user_data);
70
71
typedef struct _MozillaDecoderPrivate MozillaDecoderPrivate;
72
73
#define MOZILLA_DECODER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MOZILLA_TYPE_DECODER, MozillaDecoderPrivate))
74
75
struct _MozillaDecoderPrivate {
76
    char *family;
77
    char *encoder;
78
    char *cmap;
79
    gboolean is_wide;
80
    FcCharSet *charset;
81
    nsCOMPtr<nsIUnicodeEncoder> uEncoder;
82
};
83
84
static nsICharsetConverterManager *gCharsetManager = NULL;
85
86
static NS_DEFINE_CID(kCharsetConverterManagerCID,
87
                     NS_ICHARSETCONVERTERMANAGER_CID);
88
89
// Hash tables that hold the custom encodings and custom cmaps used in
90
// various fonts.
91
GHashTable *encoder_hash = NULL;
92
GHashTable *cmap_hash = NULL;
93
GHashTable *wide_hash = NULL;
94
95
void
96
mozilla_decoder_init (MozillaDecoder *decoder)
97
{
98
}
99
100
void
101
mozilla_decoder_class_init (MozillaDecoderClass *klass)
102
{
103
    GObjectClass *object_class = G_OBJECT_CLASS(klass);
104
    PangoFcDecoderClass *parent_class = PANGO_FC_DECODER_CLASS (klass);
105
106
    /*   object_class->finalize = test_finalize; */
107
108
    parent_class->get_charset = mozilla_decoder_get_charset;
109
    parent_class->get_glyph = mozilla_decoder_get_glyph;
110
111
    g_type_class_add_private (object_class, sizeof (MozillaDecoderPrivate));
112
}
113
114
MozillaDecoder *
115
mozilla_decoder_new(void)
116
{
117
    return (MozillaDecoder *)g_object_new(MOZILLA_TYPE_DECODER, NULL);
118
}
119
120
#ifdef DEBUG_CUSTOM_ENCODER
121
void
122
dump_hash(char *key, char *val, void *arg)
123
{
124
    printf("%s -> %s\n", key, val);
125
}
126
#endif
127
128
/**
129
 * mozilla_decoders_init:
130
 *
131
 * #mozilla_decoders_init:
132
 *
133
 * This initializes all of the application-specific custom decoders
134
 * that Mozilla uses.  This should only be called once during the
135
 * lifetime of the application.
136
 *
137
 * Return value: zero on success, not zero on failure.
138
 *
139
 **/
140
141
int
142
mozilla_decoders_init(void)
143
{
144
    static PRBool initialized = PR_FALSE;
145
    if (initialized)
146
        return 0;
147
148
    encoder_hash = g_hash_table_new(g_str_hash, g_str_equal);
149
    cmap_hash = g_hash_table_new(g_str_hash, g_str_equal);
150
    wide_hash = g_hash_table_new(g_str_hash, g_str_equal);
151
152
    PRBool dumb = PR_FALSE;
153
    nsCOMPtr<nsIPersistentProperties> props;
154
    nsCOMPtr<nsISimpleEnumerator> encodeEnum;
155
156
    NS_LoadPersistentPropertiesFromURISpec(getter_AddRefs(props),
157
        NS_LITERAL_CSTRING("resource://gre/res/fonts/pangoFontEncoding.properties"));
158
159
    if (!props)
160
        goto loser;
161
162
    // Enumerate the properties in this file and figure out all of the
163
    // fonts for which we have custom encodings.
164
    props->Enumerate(getter_AddRefs(encodeEnum));
165
    if (!encodeEnum)
166
        goto loser;
167
168
    while (encodeEnum->HasMoreElements(&dumb), dumb) {
169
        nsCOMPtr<nsIPropertyElement> prop;
170
        encodeEnum->GetNext(getter_AddRefs(prop));
171
        if (!prop)
172
            goto loser;
173
174
        nsCAutoString name;
175
        prop->GetKey(name);
176
        nsAutoString value;
177
        prop->GetValue(value);
178
179
        if (!StringBeginsWith(name, NS_LITERAL_CSTRING("encoding."))) {
180
            printf("string doesn't begin with encoding?\n");
181
            continue;
182
        }
183
184
        name = Substring(name, 9);
185
186
        if (StringEndsWith(name, NS_LITERAL_CSTRING(".ttf"))) {
187
            name = Substring(name, 0, name.Length() - 4);
188
189
            // Strip off a .wide if it's there.
190
            if (StringEndsWith(value, NS_LITERAL_STRING(".wide"))) {
191
                g_hash_table_insert(wide_hash, g_strdup(name.get()),
192
                                    g_strdup("wide"));
193
                value = Substring(value, 0, name.Length() - 5);
194
            }
195
196
            g_hash_table_insert(encoder_hash,
197
                                g_strdup(name.get()),
198
                                g_strdup(NS_ConvertUTF16toUTF8(value).get()));
199
        }
200
        else if (StringEndsWith(name, NS_LITERAL_CSTRING(".ftcmap"))) {
201
            name = Substring(name, 0, name.Length() - 7);
202
            g_hash_table_insert(cmap_hash,
203
                                g_strdup(name.get()),
204
                                g_strdup(NS_ConvertUTF16toUTF8(value).get()));
205
        }
206
        else {
207
            printf("unknown suffix used for mapping\n");
208
        }
209
    }
210
211
    pango_fc_font_map_add_decoder_find_func(PANGO_FC_FONT_MAP(pango_xft_get_font_map(GDK_DISPLAY(),gdk_x11_get_default_screen())),
212
                                            mozilla_find_decoder,
213
                                            NULL,
214
                                            NULL);
215
216
    initialized = PR_TRUE;
217
218
#ifdef DEBUG_CUSTOM_ENCODER
219
    printf("*** encoders\n");
220
    g_hash_table_foreach(encoder_hash, (GHFunc)dump_hash, NULL);
221
222
    printf("*** cmaps\n");
223
    g_hash_table_foreach(cmap_hash, (GHFunc)dump_hash, NULL);
224
#endif
225
226
    return 0;
227
228
 loser:
229
    return -1;
230
}
231
232
FcCharSet *
233
mozilla_decoder_get_charset (PangoFcDecoder *decoder,
234
                             PangoFcFont    *fcfont)
235
{
236
    MozillaDecoderPrivate *priv = MOZILLA_DECODER_GET_PRIVATE(decoder);
237
238
    if (priv->charset)
239
        return priv->charset;
240
241
    // First time this has been accessed.  Populate the charset.
242
    priv->charset = FcCharSetCreate();
243
244
    if (!gCharsetManager) {
245
        nsServiceManager::GetService(kCharsetConverterManagerCID,
246
        NS_GET_IID(nsICharsetConverterManager), (nsISupports**)&gCharsetManager);
247
    }
248
249
    nsCOMPtr<nsIUnicodeEncoder> encoder;
250
    nsCOMPtr<nsICharRepresentable> represent;
251
252
    if (!gCharsetManager)
253
        goto end;
254
255
    gCharsetManager->GetUnicodeEncoderRaw(priv->encoder, getter_AddRefs(encoder));
256
    if (!encoder)
257
        goto end;
258
    
259
    encoder->SetOutputErrorBehavior(encoder->kOnError_Replace, nsnull, '?');
260
261
    priv->uEncoder = encoder;
262
263
    represent = do_QueryInterface(encoder);
264
    if (!represent)
265
        goto end;
266
267
    PRUint32 map[UCS2_MAP_LEN];
268
    memset(map, 0, sizeof(map));
269
270
    represent->FillInfo(map);
271
272
    for (int i = 0; i < NUM_UNICODE_CHARS; i++) {
273
        if (IS_REPRESENTABLE(map, i))
274
            FcCharSetAddChar(priv->charset, i);
275
    }
276
277
 end:
278
    return priv->charset;
279
}
280
281
PangoGlyph
282
mozilla_decoder_get_glyph   (PangoFcDecoder *decoder,
283
                             PangoFcFont    *fcfont,
284
                             guint32         wc)
285
{
286
    MozillaDecoderPrivate *priv = MOZILLA_DECODER_GET_PRIVATE(decoder);
287
288
    PangoGlyph retval = 0;
289
    PRUnichar inchar = wc;
290
    PRInt32 inlen = 1;
291
    char outchar[2] = {0,0};
292
    PRInt32 outlen = 2;
293
294
    priv->uEncoder->Convert(&inchar, &inlen, outchar, &outlen);
295
    if (outlen != 1) {
296
        printf("Warning: mozilla_decoder_get_glyph doesn't support more than one character conversions.\n");
297
        return 0;
298
    }
299
300
    FT_Face face = pango_fc_font_lock_face(fcfont);
301
302
#ifdef DEBUG_CUSTOM_ENCODER
303
    char *filename;
304
    FcPatternGetString(fcfont->font_pattern, FC_FILE, 0, (FcChar8 **)&filename);
305
    printf("filename is %s\n", filename);
306
#endif
307
308
    // Make sure to set the right charmap before trying to get the
309
    // glyph
310
    if (priv->cmap) {
311
        if (!strcmp(priv->cmap, "mac_roman")) {
312
            FT_Select_Charmap(face, ft_encoding_apple_roman);
313
        }
314
        else if (!strcmp(priv->cmap, "unicode")) {
315
            FT_Select_Charmap(face, ft_encoding_unicode);
316
        }
317
        else {
318
            printf("Warning: Invalid charmap entry for family %s\n",
319
                   priv->family);
320
        }
321
    }
322
323
    // Standard 8 bit to glyph translation
324
    if (!priv->is_wide) {
325
        FcChar32 blah = PRUint8(outchar[0]);
326
        retval = FT_Get_Char_Index(face, blah);
327
#ifdef DEBUG_CUSTOM_ENCODER
328
        printf("wc 0x%x outchar[0] 0x%x index 0x%x retval 0x%x face %p\n",
329
               wc, outchar[0], blah, retval, (void *)face);
330
#endif
331
    }
332
    else {
333
        printf("Warning: We don't support .wide fonts!\n");
334
        retval = 0;
335
    }
336
337
    pango_fc_font_unlock_face(fcfont);
338
339
    return retval;
340
}
341
342
PangoFcDecoder *
343
mozilla_find_decoder (FcPattern *pattern, gpointer user_data)
344
{
345
    // Compare the family name of the font that's been opened to see
346
    // if we have a custom decoder.
347
    const char *orig = NULL;
348
    FcPatternGetString(pattern, FC_FAMILY, 0, (FcChar8 **)&orig);
349
350
    nsCAutoString family;
351
    family.Assign(orig);
352
353
    family.StripWhitespace();
354
    ToLowerCase(family);
355
356
    char *encoder = (char *)g_hash_table_lookup(encoder_hash, family.get());
357
    if (!encoder)
358
        return NULL;
359
360
    MozillaDecoder *decoder = mozilla_decoder_new();
361
362
    MozillaDecoderPrivate *priv = MOZILLA_DECODER_GET_PRIVATE(decoder);
363
364
    priv->family = g_strdup(family.get());
365
    priv->encoder = g_strdup(encoder);
366
367
    char *cmap = (char *)g_hash_table_lookup(cmap_hash, family.get());
368
    if (cmap)
369
        priv->cmap = g_strdup(cmap);
370
371
    char *wide = (char *)g_hash_table_lookup(wide_hash, family.get());
372
    if (wide)
373
        priv->is_wide = TRUE;
374
375
    return PANGO_FC_DECODER(decoder);
376
}
377
++ gfx/src/gtk/mozilla-decoder.h
Line 0 Link Here
0
-- gfx/src/gtk/pangoFontEncoding.properties
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* vim:expandtab:shiftwidth=4:tabstop=4:
3
 */
4
/* ***** BEGIN LICENSE BLOCK *****
5
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6
 *
7
 * The contents of this file are subject to the Mozilla Public License Version
8
 * 1.1 (the "License"); you may not use this file except in compliance with
9
 * the License. You may obtain a copy of the License at
10
 * http://www.mozilla.org/MPL/
11
 *
12
 * Software distributed under the License is distributed on an "AS IS" basis,
13
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14
 * for the specific language governing rights and limitations under the
15
 * License.
16
 *
17
 * The Original Code is mozilla.org code.
18
 *
19
 * The Initial Developer of the Original Code is Christopher Blizzard
20
 * <blizzard@mozilla.org>.  Portions created by the Initial Developer
21
 * are Copyright (C) 2004 the Initial Developer. All Rights Reserved.
22
 *
23
 * Contributor(s):
24
 *
25
 * Alternatively, the contents of this file may be used under the terms of
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or
27
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
 * in which case the provisions of the GPL or the LGPL are applicable instead
29
 * of those above. If you wish to allow use of your version of this file only
30
 * under the terms of either the GPL or the LGPL, and not to allow others to
31
 * use your version of this file under the terms of the MPL, indicate your
32
 * decision by deleting the provisions above and replace them with the notice
33
 * and other provisions required by the GPL or the LGPL. If you do not delete
34
 * the provisions above, a recipient may use your version of this file under
35
 * the terms of any one of the MPL, the GPL or the LGPL.
36
 *
37
 * ***** END LICENSE BLOCK ***** */
38
39
#ifndef _MOZILLA_DECODER_H
40
#define _MOZILLA_DECODER_H
41
42
#include <pango/pangofc-decoder.h>
43
44
G_BEGIN_DECLS
45
46
#define MOZILLA_TYPE_DECODER (mozilla_decoder_get_type())
47
#define MOZILLA_DECODER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), MOZILLA_TYPE_DECODER, MozillaDecoder))
48
#define MOZILLA_IS_DECODER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), MOZILLA_TYPE_DECODER))
49
50
typedef struct _MozillaDecoder      MozillaDecoder;
51
typedef struct _MozillaDecoderClass MozillaDecoderClass;
52
53
#define MOZILLA_DECODER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOZILLA_TYPE_DECODER, MozillaDecoderClass))
54
#define MOZILLA_IS_DECODER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOZILLA_TYPE_DECODER))
55
#define MOZILLA_DECODER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOZILLA_TYPE_DECODER, MozillaDecoderClass))
56
57
struct _MozillaDecoder
58
{
59
  PangoFcDecoder parent_instance;
60
};
61
62
struct _MozillaDecoderClass
63
{
64
  PangoFcDecoderClass parent_class;
65
};
66
67
GType           mozilla_decoder_get_type (void);
68
int             mozilla_decoders_init    (void);
69
70
G_END_DECLS
71
72
#endif /*_MOZILLA_DECODER_H */
73
++ gfx/src/gtk/pangoFontEncoding.properties
Line 0 Link Here
0
-- gfx/src/gtk/nsFontMetricsPango.cpp
1
# ***** BEGIN LICENSE BLOCK *****
2
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
3
#
4
# The contents of this file are subject to the Mozilla Public License Version
5
# 1.1 (the "License"); you may not use this file except in compliance with
6
# the License. You may obtain a copy of the License at
7
# http://www.mozilla.org/MPL/
8
#
9
# Software distributed under the License is distributed on an "AS IS" basis,
10
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11
# for the specific language governing rights and limitations under the
12
# License.
13
#
14
# The Original Code is Mozilla MathML Project.
15
#
16
# The Initial Developer of the Original Code is
17
# The University of Queensland.
18
# Portions created by the Initial Developer are Copyright (C) 2001
19
# the Initial Developer. All Rights Reserved.
20
#
21
# Contributor(s):
22
#   Roger B. Sidje <rbs@maths.uq.edu.au>
23
#   Jungshik Shin <jshin@mailaps.org>
24
#   Christopher Blizzard <blizzard@mozilla.org>
25
#
26
# Alternatively, the contents of this file may be used under the terms of
27
# either the GNU General Public License Version 2 or later (the "GPL"), or
28
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
# in which case the provisions of the GPL or the LGPL are applicable instead
30
# of those above. If you wish to allow use of your version of this file only
31
# under the terms of either the GPL or the LGPL, and not to allow others to
32
# use your version of this file under the terms of the MPL, indicate your
33
# decision by deleting the provisions above and replace them with the notice
34
# and other provisions required by the GPL or the LGPL. If you do not delete
35
# the provisions above, a recipient may use your version of this file under
36
# the terms of any one of the MPL, the GPL or the LGPL.
37
#
38
# ***** END LICENSE BLOCK *****
39
40
#  LOCALIZATION NOTE: FILE
41
#  Do not translate anything in this file
42
43
# This file contains supported custom encodings for pango font
44
# rendering.  For information about the specific encodings, look at
45
# fontEncoding.properties.  It contains a lot more verbiage than you
46
# will find here.  There are a lot of encodings supported in the old
47
# encoding file that pango supports directly, so there should be
48
# little reason to use those custom encodings.  The pango custom code
49
# doesn't support .wide fonts, so consider yourself warned!
50
#
51
52
# To be honest, we basically support mathml and that's about it.
53
54
encoding.cmr10.ttf  = x-ttf-cmr
55
encoding.cmmi10.ttf = x-ttf-cmmi
56
encoding.cmsy10.ttf = x-ttf-cmsy
57
encoding.cmex10.ttf = x-ttf-cmex
58
59
encoding.cmr10.ftcmap  = unicode
60
encoding.cmmi10.ftcmap = unicode
61
encoding.cmsy10.ftcmap = unicode
62
encoding.cmex10.ftcmap = unicode
63
64
encoding.math1.ttf          = x-mathematica1
65
encoding.math1-bold.ttf     = x-mathematica1
66
encoding.math1mono.ttf      = x-mathematica1
67
encoding.math1mono-bold.ttf = x-mathematica1
68
69
encoding.math2.ttf          = x-mathematica2
70
encoding.math2-bold.ttf     = x-mathematica2
71
encoding.math2mono.ttf      = x-mathematica2
72
encoding.math2mono-bold.ttf = x-mathematica2
73
74
encoding.math3.ttf          = x-mathematica3
75
encoding.math3-bold.ttf     = x-mathematica3
76
encoding.math3mono.ttf      = x-mathematica3
77
encoding.math3mono-bold.ttf = x-mathematica3
78
79
encoding.math4.ttf          = x-mathematica4
80
encoding.math4-bold.ttf     = x-mathematica4
81
encoding.math4mono.ttf      = x-mathematica4
82
encoding.math4mono-bold.ttf = x-mathematica4
83
84
encoding.math5.ttf          = x-mathematica5
85
encoding.math5-bold.ttf     = x-mathematica5
86
encoding.math5bold.ttf      = x-mathematica5
87
encoding.math5mono.ttf      = x-mathematica5
88
encoding.math5mono-bold.ttf = x-mathematica5
89
encoding.math5monobold.ttf  = x-mathematica5
90
91
encoding.math1.ftcmap          = mac_roman
92
encoding.math1-bold.ftcmap     = mac_roman
93
encoding.math1mono.ftcmap      = mac_roman
94
encoding.math1mono-bold.ftcmap = mac_roman
95
96
encoding.math2.ftcmap          = mac_roman
97
encoding.math2-bold.ftcmap     = mac_roman
98
encoding.math2mono.ftcmap      = mac_roman
99
encoding.math2mono-bold.ftcmap = mac_roman
100
101
encoding.math3.ftcmap          = mac_roman
102
encoding.math3-bold.ftcmap     = mac_roman
103
encoding.math3mono.ftcmap      = mac_roman
104
encoding.math3mono-bold.ftcmap = mac_roman
105
106
encoding.math4.ftcmap          = mac_roman
107
encoding.math4-bold.ftcmap     = mac_roman
108
encoding.math4mono.ftcmap      = mac_roman
109
encoding.math4mono-bold.ftcmap = mac_roman
110
111
encoding.math5.ftcmap          = mac_roman
112
encoding.math5-bold.ftcmap     = mac_roman
113
encoding.math5bold.ftcmap      = mac_roman
114
encoding.math5mono.ftcmap      = mac_roman
115
encoding.math5mono-bold.ftcmap = mac_roman
116
encoding.math5monobold.ftcmap  = mac_roman
117
118
encoding.mtextra.ttf = x-mtextra
119
encoding.mtextra.ftcmap = mac_roman
120
121
++ gfx/src/gtk/nsFontMetricsPango.cpp
Line 0 Link Here
0
-- gfx/src/ps/Makefile.in
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* vim:expandtab:shiftwidth=4:tabstop=4:
3
 */
4
/* ***** BEGIN LICENSE BLOCK *****
5
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6
 *
7
 * The contents of this file are subject to the Mozilla Public License Version
8
 * 1.1 (the "License"); you may not use this file except in compliance with
9
 * the License. You may obtain a copy of the License at
10
 * http://www.mozilla.org/MPL/
11
 *
12
 * Software distributed under the License is distributed on an "AS IS" basis,
13
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14
 * for the specific language governing rights and limitations under the
15
 * License.
16
 *
17
 * The Original Code is mozilla.org code.
18
 *
19
 * The Initial Developer of the Original Code is Christopher Blizzard
20
 * <blizzard@mozilla.org>.  Portions created by the Initial Developer
21
 * are Copyright (C) 2004 the Initial Developer. All Rights Reserved.
22
 *
23
 * Contributor(s):
24
 *
25
 * Alternatively, the contents of this file may be used under the terms of
26
 * either the GNU General Public License Version 2 or later (the "GPL"), or
27
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
 * in which case the provisions of the GPL or the LGPL are applicable instead
29
 * of those above. If you wish to allow use of your version of this file only
30
 * under the terms of either the GPL or the LGPL, and not to allow others to
31
 * use your version of this file under the terms of the MPL, indicate your
32
 * decision by deleting the provisions above and replace them with the notice
33
 * and other provisions required by the GPL or the LGPL. If you do not delete
34
 * the provisions above, a recipient may use your version of this file under
35
 * the terms of any one of the MPL, the GPL or the LGPL.
36
 *
37
 * ***** END LICENSE BLOCK ***** */
38
39
#include "nsFont.h"
40
#include "nsIDeviceContext.h"
41
#include "nsICharsetConverterManager.h"
42
#include "nsIPref.h"
43
#include "nsIServiceManagerUtils.h"
44
45
#define PANGO_ENABLE_BACKEND
46
#define PANGO_ENABLE_ENGINE
47
48
#include "nsFontMetricsPango.h"
49
#include "nsRenderingContextGTK.h"
50
#include "nsDeviceContextGTK.h"
51
52
#include "nsUnicharUtils.h"
53
#include "nsQuickSort.h"
54
55
#include <pango/pangoxft.h>
56
#include <fontconfig/fontconfig.h>
57
#include <gdk/gdk.h>
58
#include <gdk/gdkx.h>
59
#include <freetype/tttables.h>
60
61
#include "mozilla-decoder.h"
62
63
#define FORCE_PR_LOG
64
#include "prlog.h"
65
66
// Globals
67
68
static PRLogModuleInfo            *gPangoFontLog;
69
static int                         gNumInstances;
70
71
// Defines
72
73
// This is the scaling factor that we keep fonts limited to against
74
// the display size.  If a pixel size is requested that is more than
75
// this factor larger than the height of the display, it's clamped to
76
// that value instead of the requested size.
77
#define FONT_MAX_FONT_SCALE 2
78
79
static NS_DEFINE_CID(kCharsetConverterManagerCID,
80
                     NS_ICHARSETCONVERTERMANAGER_CID);
81
82
struct MozPangoLangGroup {
83
    const char *mozLangGroup;
84
    const char *PangoLang;
85
};
86
87
static const MozPangoLangGroup MozPangoLangGroups[] = {
88
    { "x-western",      "en" },
89
    { "x-central-euro", "pl" },
90
    { "x-cyrillic",     "ru" },
91
    { "x-baltic",       "lv" },
92
    { "x-devanagari",   "hi" },
93
    { "x-tamil",        "ta" },
94
    { "x-unicode",      0    },
95
    { "x-user-def",     0    },
96
};
97
98
#define NUM_PANGO_LANG_GROUPS (sizeof (MozPangoLangGroups) / \
99
                               sizeof (MozPangoLangGroups[0]))
100
101
#ifdef DEBUG
102
#define DUMP_PRUNICHAR(ustr, ulen) for (PRUint32 llen=0;llen<ulen;llen++) \
103
                                      printf("0x%x ", ustr[llen]); \
104
                                   printf("\n");
105
#endif
106
107
// rounding and truncation functions for a Freetype floating point number 
108
// (FT26Dot6) stored in a 32bit integer with high 26 bits for the integer
109
// part and low 6 bits for the fractional part. 
110
#define MOZ_FT_ROUND(x) (((x) + 32) & ~63) // 63 = 2^6 - 1
111
#define MOZ_FT_TRUNC(x) ((x) >> 6)
112
#define CONVERT_DESIGN_UNITS_TO_PIXELS(v, s) \
113
        MOZ_FT_TRUNC(MOZ_FT_ROUND(FT_MulFix((v) , (s))))
114
115
// Static function decls
116
117
static PRBool IsASCIIFontName  (const nsString& aName);
118
static int    FFRECountHyphens (nsACString &aFFREName);
119
120
static PangoLanguage *GetPangoLanguage(nsIAtom *aLangGroup);
121
static const MozPangoLangGroup* FindPangoLangGroup (nsACString &aLangGroup);
122
123
static void   FreeGlobals    (void);
124
125
static PangoStyle  CalculateStyle  (PRUint8 aStyle);
126
static PangoWeight CalculateWeight (PRUint16 aWeight);
127
128
static nsresult    EnumFontsPango   (nsIAtom* aLangGroup, const char* aGeneric,
129
                                     PRUint32* aCount, PRUnichar*** aResult);
130
static int         CompareFontNames (const void* aArg1, const void* aArg2,
131
                                     void* aClosure);
132
133
extern void     NS_AddLangGroup     (FcPattern *aPattern, nsIAtom *aLangGroup);
134
135
nsFontMetricsPango::nsFontMetricsPango()
136
{
137
    if (!gPangoFontLog)
138
        gPangoFontLog = PR_NewLogModule("PangoFont");
139
140
    gNumInstances++;
141
142
    mPangoFontDesc = nsnull;
143
    mPangoContext = nsnull;
144
    mLTRPangoContext = nsnull;
145
    mRTLPangoContext = nsnull;
146
    mPangoAttrList = nsnull;
147
    mIsRTL = PR_FALSE;
148
    mPangoSpaceWidth = 0;
149
150
    static PRBool initialized = PR_FALSE;
151
    if (initialized)
152
        return;
153
154
    // Initialized the custom decoders
155
    if (!mozilla_decoders_init())
156
        initialized = PR_TRUE;
157
}
158
159
nsFontMetricsPango::~nsFontMetricsPango()
160
{
161
    delete mFont;
162
163
    if (mDeviceContext)
164
        mDeviceContext->FontMetricsDeleted(this);
165
166
    if (mPangoFontDesc)
167
        pango_font_description_free(mPangoFontDesc);
168
169
    if (mLTRPangoContext)
170
        g_object_unref(mLTRPangoContext);
171
172
    if (mRTLPangoContext)
173
        g_object_unref(mRTLPangoContext);
174
175
    if (mPangoAttrList)
176
        pango_attr_list_unref(mPangoAttrList);
177
178
    // XXX clean up all the pango objects
179
180
    if (--gNumInstances == 0)
181
        FreeGlobals();
182
}
183
184
185
NS_IMPL_ISUPPORTS1(nsFontMetricsPango, nsIFontMetrics)
186
187
// nsIFontMetrics impl
188
189
NS_IMETHODIMP
190
nsFontMetricsPango::Init(const nsFont& aFont, nsIAtom* aLangGroup,
191
                         nsIDeviceContext *aContext)
192
{
193
    mFont = new nsFont(aFont);
194
    mLangGroup = aLangGroup;
195
196
    // Hang on to the device context
197
    mDeviceContext = aContext;
198
    
199
    mPointSize = NSTwipsToFloatPoints(mFont->size);
200
201
    // Make sure to clamp the pixel size to something reasonable so we
202
    // don't make the X server blow up.
203
    nscoord screenPixels = gdk_screen_height();
204
    mPointSize = PR_MIN(screenPixels * FONT_MAX_FONT_SCALE, mPointSize);
205
206
    // enumerate over the font names passed in
207
    mFont->EnumerateFamilies(nsFontMetricsPango::EnumFontCallback, this);
208
209
    nsCOMPtr<nsIPref> prefService;
210
    prefService = do_GetService(NS_PREF_CONTRACTID);
211
    if (!prefService)
212
        return NS_ERROR_FAILURE;
213
        
214
    nsXPIDLCString value;
215
216
    // Set up the default font name if it's not set
217
    if (!mGenericFont) {
218
        prefService->CopyCharPref("font.default", getter_Copies(value));
219
220
        if (value.get())
221
            mDefaultFont = value.get();
222
        else
223
            mDefaultFont = "serif";
224
        
225
        mGenericFont = &mDefaultFont;
226
    }
227
228
    // set up the minimum sizes for fonts
229
    if (mLangGroup) {
230
        nsCAutoString name("font.min-size.");
231
232
        if (mGenericFont->Equals("monospace"))
233
            name.Append("fixed");
234
        else
235
            name.Append("variable");
236
237
        name.Append(char('.'));
238
239
        const char* langGroup;
240
        mLangGroup->GetUTF8String(&langGroup);
241
242
        name.Append(langGroup);
243
244
        PRInt32 minimumInt = 0;
245
        float minimum;
246
        nsresult res;
247
        res = prefService->GetIntPref(name.get(), &minimumInt);
248
        if (NS_FAILED(res))
249
            prefService->GetDefaultIntPref(name.get(), &minimumInt);
250
251
        if (minimumInt < 0)
252
            minimumInt = 0;
253
254
        minimum = minimumInt;
255
256
        // The minimum size is specified in pixels, not in points.
257
        // Convert the size from pixels to points.
258
        minimum = NSTwipsToFloatPoints(NSFloatPixelsToTwips(minimum, mDeviceContext->DevUnitsToAppUnits()));
259
        if (mPointSize < minimum)
260
            mPointSize = minimum;
261
    }
262
263
    // Make sure that the pixel size is at least greater than zero
264
    if (mPointSize < 1) {
265
#ifdef DEBUG
266
        printf("*** Warning: nsFontMetricsPango created with point size %f\n",
267
               mPointSize);
268
#endif
269
        mPointSize = 1;
270
    }
271
272
    nsresult rv = RealizeFont();
273
    if (NS_FAILED(rv))
274
        return rv;
275
276
    // Cache font metrics for the 'x' character
277
    return CacheFontMetrics();
278
}
279
280
nsresult
281
nsFontMetricsPango::CacheFontMetrics(void)
282
{
283
    // Get our scale factor
284
    float f;
285
    float val;
286
    f = mDeviceContext->DevUnitsToAppUnits();
287
288
    mPangoAttrList = pango_attr_list_new();
289
290
    GList *items = pango_itemize(mPangoContext,
291
                                 "a", 0, 1, mPangoAttrList, NULL);
292
293
    if (!items)
294
        return NS_ERROR_FAILURE;
295
296
    guint nitems = g_list_length(items);
297
    if (nitems != 1)
298
        return NS_ERROR_FAILURE;
299
300
    PangoItem *item = (PangoItem *)items->data;
301
    PangoFcFont  *fcfont = PANGO_FC_FONT(item->analysis.font);
302
    if (!fcfont)
303
        return NS_ERROR_FAILURE;
304
305
    // Get our font face
306
    FT_Face face;
307
    TT_OS2 *os2;
308
    XftFont *xftFont = pango_xft_font_get_font(PANGO_FONT(fcfont));
309
    if (!xftFont)
310
        return NS_ERROR_NOT_AVAILABLE;
311
312
    face = XftLockFace(xftFont);
313
    os2 = (TT_OS2 *) FT_Get_Sfnt_Table(face, ft_sfnt_os2);
314
315
    // mEmHeight (size in pixels of EM height)
316
    int size;
317
    if (FcPatternGetInteger(fcfont->font_pattern, FC_PIXEL_SIZE, 0, &size) !=
318
        FcResultMatch) {
319
        size = 12;
320
    }
321
    mEmHeight = PR_MAX(1, nscoord(size * f));
322
323
    // mMaxAscent
324
    mMaxAscent = nscoord(xftFont->ascent * f);
325
326
    // mMaxDescent
327
    mMaxDescent = nscoord(xftFont->descent * f);
328
329
    nscoord lineHeight = mMaxAscent + mMaxDescent;
330
331
    // mLeading (needs ascent and descent and EM height) 
332
    if (lineHeight > mEmHeight)
333
        mLeading = lineHeight - mEmHeight;
334
    else
335
        mLeading = 0;
336
337
    // mMaxHeight (needs ascent and descent)
338
    mMaxHeight = lineHeight;
339
340
    // mEmAscent (needs maxascent, EM height, ascent and descent)
341
    mEmAscent = nscoord(mMaxAscent * mEmHeight / lineHeight);
342
343
    // mEmDescent (needs EM height and EM ascent
344
    mEmDescent = mEmHeight - mEmAscent;
345
346
    // mMaxAdvance
347
    mMaxAdvance = nscoord(xftFont->max_advance_width * f);
348
349
    // mPangoSpaceWidth
350
    PangoLayout *layout = pango_layout_new(mPangoContext);
351
    pango_layout_set_text(layout, " ", 1);
352
    int pswidth, psheight;
353
    pango_layout_get_size(layout, &pswidth, &psheight);
354
    mPangoSpaceWidth = pswidth;
355
    g_object_unref(layout);
356
357
    // mSpaceWidth (width of a space)
358
    nscoord tmpWidth;
359
    GetWidth(" ", 1, tmpWidth, NULL);
360
    mSpaceWidth = tmpWidth;
361
362
    // mAveCharWidth (width of an 'average' char)
363
    //    XftTextExtents16(GDK_DISPLAY(), xftFont, &xUnichar, 1, &extents);
364
    //rawWidth = extents.width;
365
    //mAveCharWidth = NSToCoordRound(rawWidth * f);
366
    GetWidth("x", 1, tmpWidth, NULL);
367
    mAveCharWidth = tmpWidth;
368
369
    // mXHeight (height of an 'x' character)
370
    PRUnichar xUnichar('x');
371
    XGlyphInfo extents;
372
    if (FcCharSetHasChar(xftFont->charset, xUnichar)) {
373
        XftTextExtents16(GDK_DISPLAY(), xftFont, &xUnichar, 1, &extents);
374
        mXHeight = extents.height;
375
    }
376
    else {
377
        // 56% of ascent, best guess for non-true type or asian fonts
378
        mXHeight = nscoord(((float)mMaxAscent) * 0.56);
379
    }
380
    mXHeight = nscoord(mXHeight * f);
381
382
    // mUnderlineOffset (offset for underlines)
383
    val = CONVERT_DESIGN_UNITS_TO_PIXELS(face->underline_position,
384
                                         face->size->metrics.y_scale);
385
    if (val) {
386
        mUnderlineOffset = NSToIntRound(val * f);
387
    }
388
    else {
389
        mUnderlineOffset =
390
            -NSToIntRound(PR_MAX(1, floor(0.1 * xftFont->height + 0.5)) * f);
391
    }
392
393
    // mUnderlineSize (thickness of an underline)
394
    val = CONVERT_DESIGN_UNITS_TO_PIXELS(face->underline_thickness,
395
                                         face->size->metrics.y_scale);
396
    if (val) {
397
        mUnderlineSize = nscoord(PR_MAX(f, NSToIntRound(val * f)));
398
    }
399
    else {
400
        mUnderlineSize =
401
            NSToIntRound(PR_MAX(1, floor(0.05 * xftFont->height + 0.5)) * f);
402
    }
403
404
    // mSuperscriptOffset
405
    if (os2 && os2->ySuperscriptYOffset) {
406
        val = CONVERT_DESIGN_UNITS_TO_PIXELS(os2->ySuperscriptYOffset,
407
                                             face->size->metrics.y_scale);
408
        mSuperscriptOffset = nscoord(PR_MAX(f, NSToIntRound(val * f)));
409
    }
410
    else {
411
        mSuperscriptOffset = mXHeight;
412
    }
413
414
    // mSubscriptOffset
415
    if (os2 && os2->ySubscriptYOffset) {
416
        val = CONVERT_DESIGN_UNITS_TO_PIXELS(os2->ySubscriptYOffset,
417
                                             face->size->metrics.y_scale);
418
        // some fonts have the incorrect sign. 
419
        val = (val < 0) ? -val : val;
420
        mSubscriptOffset = nscoord(PR_MAX(f, NSToIntRound(val * f)));
421
    }
422
    else {
423
        mSubscriptOffset = mXHeight;
424
    }
425
426
    // mStrikeoutOffset
427
    mStrikeoutOffset = NSToCoordRound(mXHeight / 2.0);
428
429
    // mStrikeoutSize
430
    mStrikeoutSize = mUnderlineSize;
431
432
    XftUnlockFace(xftFont);
433
434
    /*
435
    printf("%i\n", mXHeight);
436
    printf("%i\n", mSuperscriptOffset);
437
    printf("%i\n", mSubscriptOffset);
438
    printf("%i\n", mStrikeoutOffset);
439
    printf("%i\n", mStrikeoutSize);
440
    printf("%i\n", mUnderlineOffset);
441
    printf("%i\n", mUnderlineSize);
442
    printf("%i\n", mMaxHeight);
443
    printf("%i\n", mLeading);
444
    printf("%i\n", mEmHeight);
445
    printf("%i\n", mEmAscent);
446
    printf("%i\n", mEmDescent);
447
    printf("%i\n", mMaxAscent);
448
    printf("%i\n", mMaxDescent);
449
    printf("%i\n", mMaxAdvance);
450
    printf("%i\n", mSpaceWidth);
451
    printf("%i\n", mAveCharWidth);
452
    */
453
454
    return NS_OK;
455
}
456
457
NS_IMETHODIMP
458
nsFontMetricsPango::Destroy()
459
{
460
    mDeviceContext = nsnull;
461
    return NS_OK;
462
}
463
464
NS_IMETHODIMP
465
nsFontMetricsPango::GetFont(const nsFont *&aFont)
466
{
467
    aFont = mFont;
468
    return NS_OK;
469
}
470
471
NS_IMETHODIMP
472
nsFontMetricsPango::GetLangGroup(nsIAtom** aLangGroup)
473
{
474
    *aLangGroup = mLangGroup;
475
    NS_IF_ADDREF(*aLangGroup);
476
477
    return NS_OK;
478
}
479
480
NS_IMETHODIMP
481
nsFontMetricsPango::GetFontHandle(nsFontHandle &aHandle)
482
{
483
    return NS_ERROR_NOT_IMPLEMENTED;
484
}
485
486
// nsIFontMetricsPango impl
487
488
nsresult
489
nsFontMetricsPango::GetWidth(const char* aString, PRUint32 aLength,
490
                             nscoord& aWidth,
491
                             nsRenderingContextGTK *aContext)
492
{
493
    PangoLayout *layout = pango_layout_new(mPangoContext);
494
495
    pango_layout_set_text(layout, aString, aLength);
496
497
    if (mPangoSpaceWidth)
498
        FixupSpaceWidths(layout, aString);
499
500
    int width, height;
501
502
    pango_layout_get_size(layout, &width, &height);
503
504
    g_object_unref(layout);
505
506
    float f;
507
    f = mDeviceContext->DevUnitsToAppUnits();
508
    aWidth = NSToCoordRound(width * f / PANGO_SCALE);
509
510
    //    printf("GetWidth (char *) %d\n", aWidth);
511
512
    return NS_OK;
513
}
514
515
nsresult
516
nsFontMetricsPango::GetWidth(const PRUnichar* aString, PRUint32 aLength,
517
                             nscoord& aWidth, PRInt32 *aFontID,
518
                             nsRenderingContextGTK *aContext)
519
{
520
    nsresult rv = NS_OK;
521
    PangoLayout *layout = pango_layout_new(mPangoContext);
522
523
    gchar *text = g_utf16_to_utf8(aString, aLength,
524
                                  NULL, NULL, NULL);
525
526
    if (!text) {
527
        aWidth = 0;
528
#ifdef DEBUG
529
        NS_WARNING("nsFontMetricsPango::GetWidth invalid unicode to follow");
530
        DUMP_PRUNICHAR(aString, aLength)
531
#endif
532
        rv = NS_ERROR_FAILURE;
533
        goto loser;
534
    }
535
536
    gint width, height;
537
538
    pango_layout_set_text(layout, text, strlen(text));
539
    FixupSpaceWidths(layout, text);
540
    pango_layout_get_size(layout, &width, &height);
541
542
543
    float f;
544
    f = mDeviceContext->DevUnitsToAppUnits();
545
    aWidth = NSToCoordRound(width * f / PANGO_SCALE);
546
547
    //    printf("GetWidth %d\n", aWidth);
548
549
 loser:
550
    g_free(text);
551
    g_object_unref(layout);
552
553
    return rv;
554
}
555
556
557
nsresult
558
nsFontMetricsPango::GetTextDimensions(const PRUnichar* aString,
559
                                      PRUint32 aLength,
560
                                      nsTextDimensions& aDimensions, 
561
                                      PRInt32* aFontID,
562
                                      nsRenderingContextGTK *aContext)
563
{
564
    nsresult rv = NS_OK;
565
566
    PangoLayout *layout = pango_layout_new(mPangoContext);
567
568
    gchar *text = g_utf16_to_utf8(aString, aLength,
569
                                  NULL, NULL, NULL);
570
571
    if (!text) {
572
#ifdef DEBUG
573
        NS_WARNING("nsFontMetricsPango::GetTextDimensions invalid unicode to follow");
574
        DUMP_PRUNICHAR(aString, aLength)
575
#endif
576
        aDimensions.width = 0;
577
        aDimensions.ascent = 0;
578
        aDimensions.descent = 0;
579
580
        rv = NS_ERROR_FAILURE;
581
        goto loser;
582
    }
583
        
584
585
    pango_layout_set_text(layout, text, strlen(text));
586
    FixupSpaceWidths(layout, text);
587
588
    // Get the logical extents
589
    PangoLayoutLine *line;
590
    if (pango_layout_get_line_count(layout) != 1) {
591
        printf("Warning: more than one line!\n");
592
    }
593
    line = pango_layout_get_line(layout, 0);
594
595
    PangoRectangle rect;
596
    pango_layout_line_get_extents(line, NULL, &rect);
597
598
    float P2T;
599
    P2T = mDeviceContext->DevUnitsToAppUnits();
600
601
    aDimensions.width = NSToCoordRound(rect.width * P2T / PANGO_SCALE) ;
602
    aDimensions.ascent = NSToCoordRound(PANGO_ASCENT(rect) * P2T / PANGO_SCALE);
603
    aDimensions.descent = NSToCoordRound(PANGO_DESCENT(rect) * P2T / PANGO_SCALE);
604
605
    //    printf("GetTextDimensions %d %d %d\n", aDimensions.width,
606
    //aDimensions.ascent, aDimensions.descent);
607
608
 loser:
609
    g_free(text);
610
    g_object_unref(layout);
611
612
    return rv;
613
}
614
615
nsresult
616
nsFontMetricsPango::GetTextDimensions(const char*         aString,
617
                                      PRInt32             aLength,
618
                                      PRInt32             aAvailWidth,
619
                                      PRInt32*            aBreaks,
620
                                      PRInt32             aNumBreaks,
621
                                      nsTextDimensions&   aDimensions,
622
                                      PRInt32&            aNumCharsFit,
623
                                      nsTextDimensions&   aLastWordDimensions,
624
                                      PRInt32*            aFontID,
625
                                      nsRenderingContextGTK *aContext)
626
{
627
628
    return GetTextDimensionsInternal(aString, aLength, aAvailWidth, aBreaks,
629
                                     aNumBreaks, aDimensions, aNumCharsFit,
630
                                     aLastWordDimensions, aContext);
631
632
}
633
634
nsresult
635
nsFontMetricsPango::GetTextDimensions(const PRUnichar*    aString,
636
                                      PRInt32             aLength,
637
                                      PRInt32             aAvailWidth,
638
                                      PRInt32*            aBreaks,
639
                                      PRInt32             aNumBreaks,
640
                                      nsTextDimensions&   aDimensions,
641
                                      PRInt32&            aNumCharsFit,
642
                                      nsTextDimensions&   aLastWordDimensions,
643
                                      PRInt32*            aFontID,
644
                                      nsRenderingContextGTK *aContext)
645
{
646
    nsresult rv = NS_OK;
647
    PRInt32 curBreak = 0;
648
    gchar *curChar;
649
650
    PRInt32 *utf8Breaks = new PRInt32[aNumBreaks];
651
652
    gchar *text = g_utf16_to_utf8(aString, (PRInt32)aLength,
653
                                  NULL, NULL, NULL);
654
655
    curChar = text;
656
657
    if (!text) {
658
#ifdef DEBUG
659
        NS_WARNING("nsFontMetricsPango::GetWidth invalid unicode to follow");
660
        DUMP_PRUNICHAR(aString, (PRUint32)aLength)
661
#endif
662
        rv = NS_ERROR_FAILURE;
663
        goto loser;
664
    }
665
666
    // Covert the utf16 break offsets to utf8 break offsets
667
    for (PRInt32 curOffset=0; curOffset < aLength;
668
         curOffset++, curChar = g_utf8_find_next_char(curChar, NULL)) {
669
        if (aBreaks[curBreak] == curOffset) {
670
            utf8Breaks[curBreak] = curChar - text;
671
            curBreak++;
672
        }
673
674
        if (IS_HIGH_SURROGATE(aString[curOffset]))
675
            curOffset++;
676
    }
677
678
    // Always catch the last break
679
    utf8Breaks[curBreak] = curChar - text;
680
681
#if 0
682
    if (strlen(text) != aLength) {
683
        printf("Different lengths for utf16 %d and utf8 %d\n", aLength, strlen(text));
684
        DUMP_PRUNICHAR(aString, aLength)
685
        DUMP_PRUNICHAR(text, strlen(text))
686
        for (PRInt32 i = 0; i < aNumBreaks; ++i) {
687
            printf("  break %d utf16 %d utf8 %d\n", i, aBreaks[i], utf8Breaks[i]);
688
        }
689
    }
690
#endif
691
692
    // We'll use curBreak to indicate which of the breaks end up being
693
    // used for the break point for this line.
694
    curBreak = 0;
695
    rv = GetTextDimensionsInternal(text, strlen(text), aAvailWidth, utf8Breaks,
696
                                   aNumBreaks, aDimensions, aNumCharsFit,
697
                                   aLastWordDimensions, aContext);
698
699
    // Figure out which of the breaks we ended up using to convert
700
    // back to utf16 - start from the end.
701
    for (PRInt32 i = aNumBreaks - 1; i >= 0; --i) {
702
        if (utf8Breaks[i] == aNumCharsFit) {
703
            //      if (aNumCharsFit != aBreaks[i])
704
            //                printf("Fixing utf8 -> utf16 %d -> %d\n", aNumCharsFit, aBreaks[i]);
705
            aNumCharsFit = aBreaks[i];
706
            break;
707
        }
708
    }
709
710
 loser:
711
    if (text)
712
        g_free(text);
713
714
    delete[] utf8Breaks;
715
716
    return rv;
717
}
718
719
nsresult
720
nsFontMetricsPango::DrawString(const char *aString, PRUint32 aLength,
721
                               nscoord aX, nscoord aY,
722
                               const nscoord* aSpacing,
723
                               nsRenderingContextGTK *aContext,
724
                               nsDrawingSurfaceGTK *aSurface)
725
{
726
    PangoLayout *layout = pango_layout_new(mPangoContext);
727
728
    pango_layout_set_text(layout, aString, aLength);
729
    FixupSpaceWidths(layout, aString);
730
731
    int x = aX;
732
    int y = aY;
733
734
    aContext->GetTranMatrix()->TransformCoord(&x, &y);
735
736
    PangoLayoutLine *line;
737
    if (pango_layout_get_line_count(layout) != 1) {
738
        printf("Warning: more than one line!\n");
739
    }
740
    line = pango_layout_get_line(layout, 0);
741
742
    aContext->UpdateGC();
743
    GdkGC *gc = aContext->GetGC();
744
745
    if (aSpacing && *aSpacing) {
746
        DrawStringSlowly(aString, NULL, aLength, aSurface->GetDrawable(),
747
                         gc, x, y, line, aSpacing);
748
    }
749
    else {
750
        gdk_draw_layout_line(aSurface->GetDrawable(), gc,
751
                             x, y,
752
                             line);
753
    }
754
755
    g_object_unref(gc);
756
    g_object_unref(layout);
757
758
    //    printf("DrawString (char *)\n");
759
760
    return NS_OK;
761
}
762
763
nsresult
764
nsFontMetricsPango::DrawString(const PRUnichar* aString, PRUint32 aLength,
765
                               nscoord aX, nscoord aY,
766
                               PRInt32 aFontID,
767
                               const nscoord* aSpacing,
768
                               nsRenderingContextGTK *aContext,
769
                               nsDrawingSurfaceGTK *aSurface)
770
{
771
    nsresult rv = NS_OK;
772
    int x = aX;
773
    int y = aY;
774
775
    aContext->UpdateGC();
776
    GdkGC *gc = aContext->GetGC();
777
778
    PangoLayout *layout = pango_layout_new(mPangoContext);
779
780
    gchar *text = g_utf16_to_utf8(aString, aLength,
781
                                  NULL, NULL, NULL);
782
783
    if (!text) {
784
#ifdef DEBUG
785
        NS_WARNING("nsFontMetricsPango::DrawString invalid unicode to follow");
786
        DUMP_PRUNICHAR(aString, aLength)
787
#endif
788
        rv = NS_ERROR_FAILURE;
789
        goto loser;
790
    }
791
792
    pango_layout_set_text(layout, text, strlen(text));
793
    FixupSpaceWidths(layout, text);
794
795
    aContext->GetTranMatrix()->TransformCoord(&x, &y);
796
797
    PangoLayoutLine *line;
798
    if (pango_layout_get_line_count(layout) != 1) {
799
        printf("Warning: more than one line!\n");
800
    }
801
    line = pango_layout_get_line(layout, 0);
802
803
    if (aSpacing && *aSpacing) {
804
        DrawStringSlowly(text, aString, aLength, aSurface->GetDrawable(),
805
                         gc, x, y, line, aSpacing);
806
    }
807
    else {
808
        gdk_draw_layout_line(aSurface->GetDrawable(), gc,
809
                             x, y,
810
                             line);
811
    }
812
813
 loser:
814
815
    g_free(text);
816
    g_object_unref(gc);
817
    g_object_unref(layout);
818
819
    //    printf("DrawString\n");
820
821
    return rv;
822
}
823
824
#ifdef MOZ_MATHML
825
nsresult
826
nsFontMetricsPango::GetBoundingMetrics(const char *aString, PRUint32 aLength,
827
                                       nsBoundingMetrics &aBoundingMetrics,
828
                                       nsRenderingContextGTK *aContext)
829
{
830
    printf("GetBoundingMetrics (char *)\n");
831
    return NS_ERROR_FAILURE;
832
}
833
834
nsresult
835
nsFontMetricsPango::GetBoundingMetrics(const PRUnichar *aString,
836
                                       PRUint32 aLength,
837
                                       nsBoundingMetrics &aBoundingMetrics,
838
                                       PRInt32 *aFontID,
839
                                       nsRenderingContextGTK *aContext)
840
{
841
    nsresult rv = NS_OK;
842
    PangoLayout *layout = pango_layout_new(mPangoContext);
843
844
    gchar *text = g_utf16_to_utf8(aString, aLength,
845
                                  NULL, NULL, NULL);
846
847
    if (!text) {
848
#ifdef DEBUG
849
        NS_WARNING("nsFontMetricsPango::GetBoundingMetrics invalid unicode to follow");
850
        DUMP_PRUNICHAR(aString, aLength)
851
#endif
852
        aBoundingMetrics.leftBearing = 0;
853
        aBoundingMetrics.rightBearing = 0;
854
        aBoundingMetrics.width = 0;
855
        aBoundingMetrics.ascent = 0;
856
        aBoundingMetrics.descent = 0;
857
858
        rv = NS_ERROR_FAILURE;
859
        goto loser;
860
    }
861
862
    pango_layout_set_text(layout, text, strlen(text));
863
    FixupSpaceWidths(layout, text);
864
865
    // Get the logical extents
866
    PangoLayoutLine *line;
867
    if (pango_layout_get_line_count(layout) != 1) {
868
        printf("Warning: more than one line!\n");
869
    }
870
    line = pango_layout_get_line(layout, 0);
871
872
    // Get the ink extents
873
    PangoRectangle rect;
874
    pango_layout_line_get_extents(line, NULL, &rect);
875
876
    float P2T;
877
    P2T = mDeviceContext->DevUnitsToAppUnits();
878
879
    aBoundingMetrics.leftBearing =
880
        NSToCoordRound(rect.x * P2T / PANGO_SCALE);
881
    aBoundingMetrics.rightBearing =
882
        NSToCoordRound(rect.width * P2T / PANGO_SCALE);
883
    aBoundingMetrics.width = NSToCoordRound((rect.x + rect.width) * P2T / PANGO_SCALE);
884
    aBoundingMetrics.ascent = NSToCoordRound(rect.y * P2T / PANGO_SCALE);
885
    aBoundingMetrics.descent = NSToCoordRound(rect.height * P2T / PANGO_SCALE);
886
887
 loser:
888
    g_free(text);
889
    g_object_unref(layout);
890
891
    return rv;
892
}
893
894
#endif /* MOZ_MATHML */
895
896
GdkFont*
897
nsFontMetricsPango::GetCurrentGDKFont(void)
898
{
899
    return nsnull;
900
}
901
902
nsresult
903
nsFontMetricsPango::SetRightToLeftText(PRBool aIsRTL)
904
{
905
    if (aIsRTL) {
906
        if (!mRTLPangoContext) {
907
            mRTLPangoContext = pango_xft_get_context(GDK_DISPLAY(), 0);
908
            pango_context_set_base_dir(mRTLPangoContext, PANGO_DIRECTION_RTL);
909
910
            gdk_pango_context_set_colormap(mRTLPangoContext, gdk_rgb_get_cmap());
911
            pango_context_set_language(mRTLPangoContext, GetPangoLanguage(mLangGroup));
912
            pango_context_set_font_description(mRTLPangoContext, mPangoFontDesc);
913
        }
914
        mPangoContext = mRTLPangoContext;
915
    }
916
    else {
917
        mPangoContext = mLTRPangoContext;
918
    }
919
920
    mIsRTL = aIsRTL;
921
    return NS_OK;
922
}
923
924
nsresult
925
nsFontMetricsPango::GetClusterInfo(const PRUnichar *aText,
926
                                   PRUint32 aLength,
927
                                   PRUint32 *aClusterStarts)
928
{
929
    nsresult rv = NS_OK;
930
    PangoLogAttr *attrs = NULL;
931
    gint n_attrs = 0;
932
    PangoLayout *layout = pango_layout_new(mPangoContext);
933
    
934
    // Convert the incoming UTF-16 to UTF-8
935
    gchar *text = g_utf16_to_utf8(aText, aLength, NULL, NULL, NULL);
936
937
    if (!text) {
938
#ifdef DEBUG
939
        NS_WARNING("nsFontMetricsPango::GetWidth invalid unicode to follow");
940
        DUMP_PRUNICHAR(aText, aLength)
941
#endif
942
        rv = NS_ERROR_FAILURE;
943
        goto loser;
944
    }
945
946
    // Set up the pango layout
947
    pango_layout_set_text(layout, text, strlen(text));
948
    FixupSpaceWidths(layout, text);
949
950
    // Convert back to UTF-16 while filling in the cluster info
951
    // structure.
952
    pango_layout_get_log_attrs(layout, &attrs, &n_attrs);
953
954
    for (PRUint32 pos = 0; pos < aLength; pos++) {
955
        if (IS_HIGH_SURROGATE(aText[pos])) {
956
            aClusterStarts[pos] = 1;
957
            pos++;
958
        }
959
        else {
960
            aClusterStarts[pos] = attrs[pos].is_cursor_position;
961
        }
962
    }
963
964
 loser:
965
    if (attrs)
966
        g_free(attrs);
967
    if (text)
968
        g_free(text);
969
    if (layout)
970
        g_object_unref(layout);
971
972
    return rv;
973
}
974
975
nsresult
976
nsFontMetricsPango::GetPosition(const PRUnichar *aText, PRUint32 aLength,
977
                                nscoord aCoord, PRUint32 &aInx)
978
{
979
    nsresult rv = NS_OK;
980
    int trailing = 0;
981
    int inx = 0;
982
    gboolean found = FALSE;
983
    const gchar *curChar;
984
985
    float f = mDeviceContext->AppUnitsToDevUnits();
986
    
987
    PangoLayout *layout = pango_layout_new(mPangoContext);
988
    PRUint32 localCoord = (PRUint32)(aCoord * PANGO_SCALE * f);
989
990
    // Convert the incoming UTF-16 to UTF-8
991
    gchar *text = g_utf16_to_utf8(aText, aLength, NULL, NULL, NULL);
992
993
    if (!text) {
994
#ifdef DEBUG
995
        NS_WARNING("nsFontMetricsPango::GetWidth invalid unicode to follow");
996
        DUMP_PRUNICHAR(aText, aLength)
997
#endif
998
        rv = NS_ERROR_FAILURE;
999
        goto loser;
1000
    }
1001
1002
    // Set up the pango layout
1003
    pango_layout_set_text(layout, text, strlen(text));
1004
    FixupSpaceWidths(layout, text);
1005
    
1006
    found = pango_layout_xy_to_index(layout, localCoord, 0,
1007
                                     &inx, &trailing);
1008
1009
    // Convert the index back to the utf-16 index
1010
    curChar = text;
1011
    aInx = 0;
1012
1013
    // Jump to the end if it's not found.
1014
    if (!found) {
1015
        if (inx = 0)
1016
            aInx = 0;
1017
        else if (trailing)
1018
            aInx = aLength;
1019
1020
        goto loser;
1021
    }
1022
1023
    for (PRUint32 curOffset=0; curOffset < aLength;
1024
         curOffset++, curChar = g_utf8_find_next_char(curChar, NULL)) {
1025
1026
        // Check for a match before checking for a surrogate pair
1027
        if (curChar - text == inx) {
1028
            aInx = curOffset;
1029
            break;
1030
        }
1031
1032
        if (IS_HIGH_SURROGATE(aText[curOffset]))
1033
            curOffset++;
1034
    }
1035
1036
    // If there was a trailing result, advance the index pointer the
1037
    // number of characters equal to the trailing result.
1038
    while (trailing) {
1039
        aInx++;
1040
        // Yes, this can make aInx > length to indicate the end of the
1041
        // string.
1042
        if (aInx < aLength && IS_HIGH_SURROGATE(aText[aInx]))
1043
            aInx++;
1044
        trailing--;
1045
    }
1046
1047
 loser:
1048
    if (text)
1049
        g_free(text);
1050
    if (layout)
1051
        g_object_unref(layout);
1052
1053
    return rv;
1054
}
1055
1056
nsresult
1057
nsFontMetricsPango::GetRangeWidth(const PRUnichar *aText,
1058
                                  PRUint32 aLength,
1059
                                  PRUint32 aStart,
1060
                                  PRUint32 aEnd,
1061
                                  PRUint32 &aWidth)
1062
{
1063
    nsresult rv = NS_OK;
1064
    int *ranges = NULL;
1065
    int n_ranges = 0;
1066
    PRUint32 utf8Start = 0;
1067
    PRUint32 utf8End = 0;
1068
    float f;
1069
1070
    aWidth = 0;
1071
1072
    // Convert the incoming UTF-16 to UTF-8
1073
    gchar *text = g_utf16_to_utf8(aText, aLength, NULL, NULL, NULL);
1074
    gchar *curChar = text;
1075
1076
    PangoLayout *layout = pango_layout_new(mPangoContext);
1077
1078
    if (!text) {
1079
#ifdef DEBUG
1080
        NS_WARNING("nsFontMetricsPango::GetWidth invalid unicode to follow");
1081
        DUMP_PRUNICHAR(aText, aLength)
1082
#endif
1083
        rv = NS_ERROR_FAILURE;
1084
        goto loser;
1085
    }
1086
1087
    // Convert the utf16 offsets into utf8 offsets
1088
    for (PRUint32 curOffset = 0; curOffset < aLength;
1089
         curOffset++, curChar = g_utf8_find_next_char(curChar, NULL)) {
1090
1091
        if (curOffset == aStart)
1092
            utf8Start = curChar - text;
1093
1094
        if (curOffset == aEnd)
1095
            utf8End = curChar - text;
1096
        
1097
        if (IS_HIGH_SURROGATE(aText[curOffset]))
1098
            curOffset++;
1099
    }
1100
1101
    // Special case where the end index is the same as the length
1102
    if (aLength == aEnd)
1103
        utf8End = strlen(text);
1104
1105
    pango_layout_set_text(layout, text, strlen(text));
1106
    FixupSpaceWidths(layout, text);
1107
1108
    PangoLayoutLine *line;
1109
    if (pango_layout_get_line_count(layout) != 1) {
1110
        printf("Warning: more than one line!\n");
1111
    }
1112
    line = pango_layout_get_line(layout, 0);
1113
1114
    pango_layout_line_get_x_ranges(line, utf8Start, utf8End, &ranges, &n_ranges);
1115
1116
    // Convert the width into app units
1117
    for (int i = 0; i < n_ranges; i++) {
1118
        aWidth += (ranges[(i * 2) + 1] - ranges[(i * 2)]);
1119
    }
1120
1121
    f = mDeviceContext-> DevUnitsToAppUnits();
1122
    aWidth = nscoord(aWidth * f / PANGO_SCALE);
1123
1124
 loser:
1125
    if (ranges)
1126
        g_free(ranges);
1127
    if (text)
1128
        g_free(text);
1129
    if (layout)
1130
        g_object_unref(layout);
1131
1132
    return rv;
1133
}
1134
1135
/* static */
1136
PRUint32
1137
nsFontMetricsPango::GetHints(void)
1138
{
1139
    return (NS_RENDERING_HINT_BIDI_REORDERING |
1140
            NS_RENDERING_HINT_ARABIC_SHAPING | 
1141
            NS_RENDERING_HINT_FAST_MEASURE | 
1142
            NS_RENDERING_HINT_TEXT_CLUSTERS |
1143
            NS_RENDERING_HINT_SPACING_RUNS);
1144
}
1145
1146
/* static */
1147
nsresult
1148
nsFontMetricsPango::FamilyExists(nsIDeviceContext *aDevice,
1149
                                 const nsString &aName)
1150
{
1151
    if (!IsASCIIFontName(aName))
1152
        return NS_ERROR_FAILURE;
1153
1154
    NS_ConvertUCS2toUTF8 name(aName);
1155
1156
    nsresult rv = NS_ERROR_FAILURE;
1157
    PangoContext *context = pango_xft_get_context(GDK_DISPLAY(), 0);
1158
    PangoFontFamily **familyList;
1159
    int n;
1160
1161
    pango_context_list_families(context, &familyList, &n);
1162
1163
    for (int i=0; i < n; i++) {
1164
        const char *tmpname = pango_font_family_get_name(familyList[i]);
1165
        if (!Compare(nsDependentCString(tmpname), name,
1166
                     nsCaseInsensitiveCStringComparator())) {
1167
            rv = NS_OK;
1168
            break;
1169
        }
1170
    }
1171
1172
    g_free(familyList);
1173
    g_object_unref(context);
1174
1175
    return rv;
1176
}
1177
1178
// Private Methods
1179
1180
nsresult
1181
nsFontMetricsPango::RealizeFont(void)
1182
{
1183
    nsCString familyList;
1184
    // Create and fill out the font description.
1185
    mPangoFontDesc = pango_font_description_new();
1186
1187
    // Add CSS names - walk the list of fonts, adding the generic as
1188
    // the last font
1189
    for (int i=0; i < mFontList.Count(); ++i) {
1190
        // if this was a generic name, break out of the loop since we
1191
        // don't want to add it to the pattern yet
1192
        if (mFontIsGeneric[i])
1193
            break;;
1194
1195
        nsCString *familyName = mFontList.CStringAt(i);
1196
        familyList.Append(familyName->get());
1197
        familyList.Append(',');
1198
    }
1199
1200
    // If there's a generic add a pref for the generic if there's one
1201
    // set.
1202
    if (mGenericFont && !mFont->systemFont) {
1203
        nsCString name;
1204
        name += "font.name.";
1205
        name += mGenericFont->get();
1206
        name += ".";
1207
1208
        nsString langGroup;
1209
        mLangGroup->ToString(langGroup);
1210
1211
        name.AppendWithConversion(langGroup);
1212
1213
        nsCOMPtr<nsIPref> pref;
1214
        pref = do_GetService(NS_PREF_CONTRACTID);
1215
        if (pref) {
1216
            nsresult rv;
1217
            nsXPIDLCString value;
1218
            rv = pref->GetCharPref(name.get(), getter_Copies(value));
1219
1220
            // we ignore prefs that have three hypens since they are X
1221
            // style prefs.
1222
            if (FFRECountHyphens(value) < 3) {
1223
                nsCString tmpstr;
1224
                tmpstr.Append(value);
1225
1226
                familyList.Append(tmpstr);
1227
                familyList.Append(',');
1228
            }
1229
        }
1230
    }
1231
1232
    // Add the generic if there is one.
1233
    if (mGenericFont && !mFont->systemFont) {
1234
        familyList.Append(mGenericFont->get());
1235
        familyList.Append(',');
1236
    }
1237
1238
    // Set the family
1239
    pango_font_description_set_family(mPangoFontDesc,
1240
                                      familyList.get());
1241
1242
    // Set the point size
1243
    pango_font_description_set_size(mPangoFontDesc,
1244
                                    (gint)(mPointSize * PANGO_SCALE));
1245
1246
    // Set the style
1247
    pango_font_description_set_style(mPangoFontDesc,
1248
                                     CalculateStyle(mFont->style));
1249
1250
    // Set the weight
1251
    pango_font_description_set_weight(mPangoFontDesc,
1252
                                      CalculateWeight(mFont->weight));
1253
1254
    // Now that we have the font description set up, create the
1255
    // context.
1256
    mLTRPangoContext = pango_xft_get_context(GDK_DISPLAY(), 0);
1257
    mPangoContext = mLTRPangoContext;
1258
1259
    // Set the color map so we can draw later.
1260
    gdk_pango_context_set_colormap(mPangoContext, gdk_rgb_get_cmap());
1261
1262
    // Set the pango language now that we have a context
1263
    pango_context_set_language(mPangoContext, GetPangoLanguage(mLangGroup));
1264
1265
    // And attach the font description to this context
1266
    pango_context_set_font_description(mPangoContext, mPangoFontDesc);
1267
1268
    return NS_OK;
1269
}
1270
1271
/* static */
1272
PRBool
1273
nsFontMetricsPango::EnumFontCallback(const nsString &aFamily,
1274
                                     PRBool aIsGeneric, void *aData)
1275
{
1276
    // make sure it's an ascii name, if not then return and continue
1277
    // enumerating
1278
    if (!IsASCIIFontName(aFamily))
1279
        return PR_TRUE;
1280
1281
    nsCAutoString name;
1282
    name.AssignWithConversion(aFamily.get());
1283
    ToLowerCase(name);
1284
    nsFontMetricsPango *metrics = (nsFontMetricsPango *)aData;
1285
    metrics->mFontList.AppendCString(name);
1286
    metrics->mFontIsGeneric.AppendElement((void *)aIsGeneric);
1287
    if (aIsGeneric) {
1288
        metrics->mGenericFont = 
1289
            metrics->mFontList.CStringAt(metrics->mFontList.Count() - 1);
1290
        return PR_FALSE; // stop processing
1291
    }
1292
1293
    return PR_TRUE; // keep processing
1294
}
1295
1296
/*
1297
 * This is only used when there's per-character spacing happening.
1298
 * Well, really it can be either line or character spacing but it's
1299
 * just turtles all the way down!
1300
 */
1301
1302
void
1303
nsFontMetricsPango::DrawStringSlowly(const gchar *aText,
1304
                                     const PRUnichar *aOrigString,
1305
                                     PRUint32 aLength,
1306
                                     GdkDrawable *aDrawable,
1307
                                     GdkGC *aGC, gint aX, gint aY,
1308
                                     PangoLayoutLine *aLine,
1309
                                     const nscoord *aSpacing)
1310
{
1311
    float app2dev;
1312
    app2dev = mDeviceContext->AppUnitsToDevUnits();
1313
    gint offset = 0;
1314
1315
    /*
1316
     * We walk the list of glyphs returned in each layout run,
1317
     * matching up the glyphs with the characters in the source text.
1318
     * We use the aSpacing argument to figure out where to place those
1319
     * glyphs.  It's important to note that since the string we're
1320
     * working with is in UTF-8 while the spacing argument assumes
1321
     * that offset will be part of the UTF-16 string.  Logical
1322
     * attributes in pango are in byte offsets in the UTF-8 string, so
1323
     * we need to store the offsets based on the UTF-8 string.
1324
     */
1325
    nscoord *utf8spacing = new nscoord[strlen(aText)];
1326
1327
    if (aOrigString) {
1328
        const gchar *curChar = aText;
1329
        bzero(utf8spacing, sizeof(nscoord) * strlen(aText));
1330
1331
        // Covert the utf16 spacing offsets to utf8 spacing offsets
1332
        for (PRUint32 curOffset=0; curOffset < aLength;
1333
             curOffset++, curChar = g_utf8_find_next_char(curChar, NULL)) {
1334
            utf8spacing[curChar - aText] = aSpacing[curOffset];
1335
1336
            if (IS_HIGH_SURROGATE(aOrigString[curOffset]))
1337
                curOffset++;
1338
        }
1339
    }
1340
    else {
1341
        memcpy(utf8spacing, aSpacing, (sizeof(nscoord *) * aLength));
1342
    }
1343
1344
    gint curRun = 0;
1345
1346
    for (GSList *tmpList = aLine->runs; tmpList && tmpList->data;
1347
         tmpList = tmpList->next, curRun++) {
1348
        PangoLayoutRun *layoutRun = (PangoLayoutRun *)tmpList->data;
1349
        gint tmpOffset = 0;
1350
1351
        /*        printf("    Rendering run %d: \"%s\"\n", curRun,
1352
                  &aText[layoutRun->item->offset]); */
1353
1354
        for (gint i=0; i < layoutRun->glyphs->num_glyphs; i++) {
1355
            /* printf("glyph %d offset %d orig width %d new width %d\n", i,
1356
             *        layoutRun->glyphs->log_clusters[i] + layoutRun->item->offset,
1357
             *        layoutRun->glyphs->glyphs[i].geometry.width,
1358
             *       (gint)(utf8spacing[layoutRun->glyphs->log_clusters[i] + layoutRun->item->offset] * app2dev * PANGO_SCALE));
1359
             */
1360
            gint thisOffset = (gint)(utf8spacing[layoutRun->glyphs->log_clusters[i] + layoutRun->item->offset]
1361
                                     * app2dev * PANGO_SCALE);
1362
            layoutRun->glyphs->glyphs[i].geometry.width = thisOffset;
1363
            tmpOffset += thisOffset;
1364
        }
1365
1366
        /*        printf("    rendering at X coord %d\n", aX + offset); */
1367
        offset += tmpOffset;
1368
    }
1369
1370
    gdk_draw_layout_line(aDrawable, aGC, aX, aY, aLine);
1371
1372
    delete[] utf8spacing;
1373
}
1374
1375
nsresult
1376
nsFontMetricsPango::GetTextDimensionsInternal(const gchar*        aString,
1377
                                              PRInt32             aLength,
1378
                                              PRInt32             aAvailWidth,
1379
                                              PRInt32*            aBreaks,
1380
                                              PRInt32             aNumBreaks,
1381
                                              nsTextDimensions&   aDimensions,
1382
                                              PRInt32&            aNumCharsFit,
1383
                                              nsTextDimensions&   aLastWordDimensions,
1384
                                              nsRenderingContextGTK *aContext)
1385
{
1386
    NS_PRECONDITION(aBreaks[aNumBreaks - 1] == aLength, "invalid break array");
1387
1388
    // If we need to back up this state represents the last place
1389
    // we could break. We can use this to avoid remeasuring text
1390
    PRInt32 prevBreakState_BreakIndex = -1; // not known
1391
                                            // (hasn't been computed)
1392
    nscoord prevBreakState_Width = 0; // accumulated width to this point
1393
1394
    // Initialize OUT parameters
1395
    GetMaxAscent(aLastWordDimensions.ascent);
1396
    GetMaxDescent(aLastWordDimensions.descent);
1397
    aLastWordDimensions.width = -1;
1398
    aNumCharsFit = 0;
1399
1400
    // Iterate each character in the string and determine which font to use
1401
    nscoord width = 0;
1402
    PRInt32 start = 0;
1403
    nscoord aveCharWidth;
1404
    GetAveCharWidth(aveCharWidth);
1405
1406
    while (start < aLength) {
1407
        // Estimate how many characters will fit. Do that by
1408
        // diving the available space by the average character
1409
        // width. Make sure the estimated number of characters is
1410
        // at least 1
1411
        PRInt32 estimatedNumChars = 0;
1412
1413
        if (aveCharWidth > 0)
1414
            estimatedNumChars = (aAvailWidth - width) / aveCharWidth;
1415
1416
        if (estimatedNumChars < 1)
1417
            estimatedNumChars = 1;
1418
1419
        // Find the nearest break offset
1420
        PRInt32 estimatedBreakOffset = start + estimatedNumChars;
1421
        PRInt32 breakIndex;
1422
        nscoord numChars;
1423
1424
        // Find the nearest place to break that is less than or equal to
1425
        // the estimated break offset
1426
        if (aLength <= estimatedBreakOffset) {
1427
            // All the characters should fit
1428
            numChars = aLength - start;
1429
            breakIndex = aNumBreaks - 1;
1430
        } 
1431
        else {
1432
            breakIndex = prevBreakState_BreakIndex;
1433
            while (((breakIndex + 1) < aNumBreaks) &&
1434
                   (aBreaks[breakIndex + 1] <= estimatedBreakOffset)) {
1435
                ++breakIndex;
1436
            }
1437
1438
            if (breakIndex == prevBreakState_BreakIndex) {
1439
                ++breakIndex; // make sure we advanced past the
1440
                // previous break index
1441
            }
1442
1443
            numChars = aBreaks[breakIndex] - start;
1444
        }
1445
1446
        // Measure the text
1447
        nscoord twWidth = 0;
1448
        if ((1 == numChars) && (aString[start] == ' '))
1449
            GetSpaceWidth(twWidth);
1450
        else if (numChars > 0)
1451
            GetWidth(&aString[start], numChars, twWidth, aContext);
1452
1453
        // See if the text fits
1454
        PRBool  textFits = (twWidth + width) <= aAvailWidth;
1455
1456
        // If the text fits then update the width and the number of
1457
        // characters that fit
1458
        if (textFits) {
1459
            aNumCharsFit += numChars;
1460
            width += twWidth;
1461
            start += numChars;
1462
1463
            // This is a good spot to back up to if we need to so remember
1464
            // this state
1465
            prevBreakState_BreakIndex = breakIndex;
1466
            prevBreakState_Width = width;
1467
        }
1468
        else {
1469
            // See if we can just back up to the previous saved
1470
            // state and not have to measure any text
1471
            if (prevBreakState_BreakIndex > 0) {
1472
                // If the previous break index is just before the
1473
                // current break index then we can use it
1474
                if (prevBreakState_BreakIndex == (breakIndex - 1)) {
1475
                    aNumCharsFit = aBreaks[prevBreakState_BreakIndex];
1476
                    width = prevBreakState_Width;
1477
                    break;
1478
                }
1479
            }
1480
1481
            // We can't just revert to the previous break state
1482
            if (0 == breakIndex) {
1483
                // There's no place to back up to, so even though
1484
                // the text doesn't fit return it anyway
1485
                aNumCharsFit += numChars;
1486
                width += twWidth;
1487
                break;
1488
            }
1489
1490
            // Repeatedly back up until we get to where the text
1491
            // fits or we're all the way back to the first word
1492
            width += twWidth;
1493
            while ((breakIndex >= 1) && (width > aAvailWidth)) {
1494
                twWidth = 0;
1495
                start = aBreaks[breakIndex - 1];
1496
                numChars = aBreaks[breakIndex] - start;
1497
1498
                if ((1 == numChars) && (aString[start] == ' '))
1499
                    GetSpaceWidth(twWidth);
1500
                else if (numChars > 0)
1501
                    GetWidth(&aString[start], numChars, twWidth,
1502
                             aContext);
1503
                width -= twWidth;
1504
                aNumCharsFit = start;
1505
                breakIndex--;
1506
            }
1507
            break;
1508
        }
1509
    }
1510
1511
    aDimensions.width = width;
1512
    GetMaxAscent(aDimensions.ascent);
1513
    GetMaxDescent(aDimensions.descent);
1514
1515
    /*    printf("aDimensions %d %d %d aLastWordDimensions %d %d %d aNumCharsFit %d\n",
1516
           aDimensions.width, aDimensions.ascent, aDimensions.descent,
1517
           aLastWordDimensions.width, aLastWordDimensions.ascent, aLastWordDimensions.descent,
1518
           aNumCharsFit); */
1519
1520
    return NS_OK;
1521
}
1522
1523
void
1524
nsFontMetricsPango::FixupSpaceWidths (PangoLayout *aLayout,
1525
                                      const char *aString)
1526
{
1527
    PangoLayoutLine *line = pango_layout_get_line(aLayout, 0);
1528
1529
    gint curRun = 0;
1530
1531
    for (GSList *tmpList = line->runs; tmpList && tmpList->data;
1532
         tmpList = tmpList->next, curRun++) {
1533
        PangoLayoutRun *layoutRun = (PangoLayoutRun *)tmpList->data;
1534
1535
        for (gint i=0; i < layoutRun->glyphs->num_glyphs; i++) {
1536
            gint thisOffset = (gint)layoutRun->glyphs->log_clusters[i] + layoutRun->item->offset;
1537
            if (aString[thisOffset] == ' ')
1538
                layoutRun->glyphs->glyphs[i].geometry.width = mPangoSpaceWidth;
1539
        }
1540
    }
1541
}
1542
1543
/* static */
1544
PRBool
1545
IsASCIIFontName(const nsString& aName)
1546
{
1547
    PRUint32 len = aName.Length();
1548
    const PRUnichar* str = aName.get();
1549
    for (PRUint32 i = 0; i < len; i++) {
1550
        /*
1551
         * X font names are printable ASCII, ignore others (for now)
1552
         */
1553
        if ((str[i] < 0x20) || (str[i] > 0x7E)) {
1554
            return PR_FALSE;
1555
        }
1556
    }
1557
  
1558
    return PR_TRUE;
1559
}
1560
1561
/* static */
1562
int
1563
FFRECountHyphens (nsACString &aFFREName)
1564
{
1565
    int h = 0;
1566
    PRInt32 hyphen = 0;
1567
    while ((hyphen = aFFREName.FindChar('-', hyphen)) >= 0) {
1568
        ++h;
1569
        ++hyphen;
1570
    }
1571
    return h;
1572
}
1573
1574
/* static */
1575
PangoLanguage *
1576
GetPangoLanguage(nsIAtom *aLangGroup)
1577
{
1578
    // Find the FC lang group for this lang group
1579
    nsCAutoString cname;
1580
    aLangGroup->ToUTF8String(cname);
1581
1582
    // see if the lang group needs to be translated from mozilla's
1583
    // internal mapping into fontconfig's
1584
    const struct MozPangoLangGroup *langGroup;
1585
    langGroup = FindPangoLangGroup(cname);
1586
1587
    // if there's no lang group, just use the lang group as it was
1588
    // passed to us
1589
    //
1590
    // we're casting away the const here for the strings - should be
1591
    // safe.
1592
    if (!langGroup)
1593
        return pango_language_from_string(cname.get());
1594
    else if (langGroup->PangoLang) 
1595
        return pango_language_from_string(langGroup->PangoLang);
1596
1597
    return pango_language_from_string("en");
1598
}
1599
1600
/* static */
1601
const MozPangoLangGroup*
1602
FindPangoLangGroup (nsACString &aLangGroup)
1603
{
1604
    for (unsigned int i=0; i < NUM_PANGO_LANG_GROUPS; ++i) {
1605
        if (aLangGroup.Equals(MozPangoLangGroups[i].mozLangGroup,
1606
                              nsCaseInsensitiveCStringComparator())) {
1607
            return &MozPangoLangGroups[i];
1608
        }
1609
    }
1610
1611
    return nsnull;
1612
}
1613
1614
/* static */
1615
void
1616
FreeGlobals(void)
1617
{
1618
}
1619
1620
/* static */
1621
PangoStyle
1622
CalculateStyle(PRUint8 aStyle)
1623
{
1624
    switch(aStyle) {
1625
    case NS_FONT_STYLE_ITALIC:
1626
        return PANGO_STYLE_OBLIQUE;
1627
        break;
1628
    case NS_FONT_STYLE_OBLIQUE:
1629
        return PANGO_STYLE_OBLIQUE;
1630
        break;
1631
    }
1632
1633
    return PANGO_STYLE_NORMAL;
1634
}
1635
1636
/* static */
1637
PangoWeight
1638
CalculateWeight (PRUint16 aWeight)
1639
{
1640
    /*
1641
     * weights come in two parts crammed into one
1642
     * integer -- the "base" weight is weight / 100,
1643
     * the rest of the value is the "offset" from that
1644
     * weight -- the number of steps to move to adjust
1645
     * the weight in the list of supported font weights,
1646
     * this value can be negative or positive.
1647
     */
1648
    PRInt32 baseWeight = (aWeight + 50) / 100;
1649
    PRInt32 offset = aWeight - baseWeight * 100;
1650
1651
    /* clip weights to range 0 to 9 */
1652
    if (baseWeight < 0)
1653
        baseWeight = 0;
1654
    if (baseWeight > 9)
1655
        baseWeight = 9;
1656
1657
    /* Map from weight value to fcWeights index */
1658
    static int fcWeightLookup[10] = {
1659
        0, 0, 0, 0, 1, 1, 2, 3, 3, 4,
1660
    };
1661
1662
    PRInt32 fcWeight = fcWeightLookup[baseWeight];
1663
1664
    /*
1665
     * adjust by the offset value, make sure we stay inside the 
1666
     * fcWeights table
1667
     */
1668
    fcWeight += offset;
1669
1670
    if (fcWeight < 0)
1671
        fcWeight = 0;
1672
    if (fcWeight > 4)
1673
        fcWeight = 4;
1674
1675
    /* Map to final PANGO_WEIGHT value */
1676
    static int fcWeights[5] = {
1677
        349,
1678
        499,
1679
        649,
1680
        749,
1681
        999
1682
    };
1683
1684
    return (PangoWeight)fcWeights[fcWeight];
1685
}
1686
1687
/* static */
1688
nsresult
1689
EnumFontsPango(nsIAtom* aLangGroup, const char* aGeneric,
1690
               PRUint32* aCount, PRUnichar*** aResult)
1691
{
1692
    FcPattern   *pat = NULL;
1693
    FcObjectSet *os  = NULL;
1694
    FcFontSet   *fs  = NULL;
1695
    nsresult     rv  = NS_ERROR_FAILURE;
1696
1697
    PRUnichar **array = NULL;
1698
    PRUint32    narray = 0;
1699
    PRInt32     serif = 0, sansSerif = 0, monospace = 0, nGenerics;
1700
1701
    *aCount = 0;
1702
    *aResult = nsnull;
1703
1704
    pat = FcPatternCreate();
1705
    if (!pat)
1706
        goto end;
1707
1708
    os = FcObjectSetBuild(FC_FAMILY, FC_FOUNDRY, 0);
1709
    if (!os)
1710
        goto end;
1711
1712
    // take the pattern and add the lang group to it
1713
    if (aLangGroup)
1714
        NS_AddLangGroup(pat, aLangGroup);
1715
1716
    // get the font list
1717
    fs = FcFontList(0, pat, os);
1718
1719
    if (!fs)
1720
        goto end;
1721
1722
    if (!fs->nfont) {
1723
        rv = NS_OK;
1724
        goto end;
1725
    }
1726
1727
    // Fontconfig supports 3 generic fonts, "serif", "sans-serif", and
1728
    // "monospace", slightly different from CSS's 5.
1729
    if (!aGeneric)
1730
        serif = sansSerif = monospace = 1;
1731
    else if (!strcmp(aGeneric, "serif"))
1732
        serif = 1;
1733
    else if (!strcmp(aGeneric, "sans-serif"))
1734
        sansSerif = 1;
1735
    else if (!strcmp(aGeneric, "monospace"))
1736
        monospace = 1;
1737
    else if (!strcmp(aGeneric, "cursive") || !strcmp(aGeneric, "fantasy"))
1738
        serif = sansSerif =  1;
1739
    else
1740
        NS_NOTREACHED("unexpected generic family");
1741
    nGenerics = serif + sansSerif + monospace;
1742
1743
    array = NS_STATIC_CAST(PRUnichar **,
1744
               nsMemory::Alloc((fs->nfont + nGenerics) * sizeof(PRUnichar *)));
1745
    if (!array)
1746
        goto end;
1747
1748
    if (serif) {
1749
        PRUnichar *name = ToNewUnicode(NS_LITERAL_STRING("serif"));
1750
        if (!name)
1751
            goto end;
1752
        array[narray++] = name;
1753
    }
1754
1755
    if (sansSerif) {
1756
        PRUnichar *name = ToNewUnicode(NS_LITERAL_STRING("sans-serif"));
1757
        if (!name)
1758
            goto end;
1759
        array[narray++] = name;
1760
    }
1761
1762
    if (monospace) {
1763
        PRUnichar *name = ToNewUnicode(NS_LITERAL_STRING("monospace"));
1764
        if (!name)
1765
            goto end;
1766
        array[narray++] = name;
1767
    }
1768
1769
    for (int i=0; i < fs->nfont; ++i) {
1770
        char *family;
1771
        PRUnichar *name;
1772
1773
        // if there's no family, just move to the next iteration
1774
        if (FcPatternGetString (fs->fonts[i], FC_FAMILY, 0,
1775
                                (FcChar8 **) &family) != FcResultMatch) {
1776
            continue;
1777
        }
1778
1779
        name = NS_STATIC_CAST(PRUnichar *,
1780
                              nsMemory::Alloc ((strlen (family) + 1)
1781
                                               * sizeof (PRUnichar)));
1782
1783
        if (!name)
1784
            goto end;
1785
1786
        PRUnichar *r = name;
1787
        for (char *f = family; *f; ++f)
1788
            *r++ = *f;
1789
        *r = '\0';
1790
1791
        array[narray++] = name;
1792
    }
1793
1794
    NS_QuickSort(array + nGenerics, narray - nGenerics, sizeof (PRUnichar*),
1795
                 CompareFontNames, nsnull);
1796
1797
    *aCount = narray;
1798
    if (narray)
1799
        *aResult = array;
1800
    else
1801
        nsMemory::Free(array);
1802
1803
    rv = NS_OK;
1804
1805
 end:
1806
    if (NS_FAILED(rv) && array) {
1807
        while (narray)
1808
            nsMemory::Free (array[--narray]);
1809
        nsMemory::Free (array);
1810
    }
1811
    if (pat)
1812
        FcPatternDestroy(pat);
1813
    if (os)
1814
        FcObjectSetDestroy(os);
1815
    if (fs)
1816
        FcFontSetDestroy(fs);
1817
1818
    return rv;
1819
}
1820
1821
/* static */
1822
int
1823
CompareFontNames (const void* aArg1, const void* aArg2, void* aClosure)
1824
{
1825
    const PRUnichar* str1 = *((const PRUnichar**) aArg1);
1826
    const PRUnichar* str2 = *((const PRUnichar**) aArg2);
1827
1828
    return nsCRT::strcmp(str1, str2);
1829
}
1830
1831
// nsFontEnumeratorPango class
1832
1833
nsFontEnumeratorPango::nsFontEnumeratorPango()
1834
{
1835
}
1836
1837
NS_IMPL_ISUPPORTS1(nsFontEnumeratorPango, nsIFontEnumerator)
1838
1839
NS_IMETHODIMP
1840
nsFontEnumeratorPango::EnumerateAllFonts(PRUint32 *aCount,
1841
                                         PRUnichar ***aResult)
1842
{
1843
    NS_ENSURE_ARG_POINTER(aResult);
1844
    *aResult = nsnull;
1845
    NS_ENSURE_ARG_POINTER(aCount);
1846
    *aCount = 0;
1847
1848
    return EnumFontsPango(nsnull, nsnull, aCount, aResult);
1849
}
1850
1851
NS_IMETHODIMP
1852
nsFontEnumeratorPango::EnumerateFonts(const char *aLangGroup,
1853
                                      const char *aGeneric,
1854
                                      PRUint32 *aCount,
1855
                                      PRUnichar ***aResult)
1856
{
1857
    NS_ENSURE_ARG_POINTER(aResult);
1858
    *aResult = nsnull;
1859
    NS_ENSURE_ARG_POINTER(aCount);
1860
    *aCount = 0;
1861
1862
    // aLangGroup=null or ""  means any (i.e., don't care)
1863
    // aGeneric=null or ""  means any (i.e, don't care)
1864
    nsCOMPtr<nsIAtom> langGroup;
1865
    if (aLangGroup && *aLangGroup)
1866
        langGroup = do_GetAtom(aLangGroup);
1867
    const char* generic = nsnull;
1868
    if (aGeneric && *aGeneric)
1869
        generic = aGeneric;
1870
1871
    return EnumFontsPango(langGroup, generic, aCount, aResult);
1872
}
1873
1874
NS_IMETHODIMP
1875
nsFontEnumeratorPango::HaveFontFor(const char *aLangGroup,
1876
                                   PRBool *aResult)
1877
{
1878
    NS_ENSURE_ARG_POINTER(aResult);
1879
    *aResult = PR_FALSE;
1880
    NS_ENSURE_ARG_POINTER(aLangGroup);
1881
1882
    *aResult = PR_TRUE; // always return true for now.
1883
    // Finish me - ftang
1884
    return NS_OK;
1885
}
1886
1887
NS_IMETHODIMP
1888
nsFontEnumeratorPango::GetDefaultFont(const char *aLangGroup,
1889
                                      const char *aGeneric,
1890
                                      PRUnichar **aResult)
1891
{
1892
    NS_ENSURE_ARG_POINTER(aResult);
1893
    *aResult = nsnull;
1894
1895
    // Have a look at nsFontEnumeratorXft::GetDefaultFont for some
1896
    // possible code for this function.
1897
1898
    return NS_OK;
1899
}
1900
1901
NS_IMETHODIMP
1902
nsFontEnumeratorPango::UpdateFontList(PRBool *_retval)
1903
{
1904
    *_retval = PR_FALSE; // always return false for now
1905
    return NS_OK;
1906
}
1907
++ gfx/src/ps/Makefile.in
Lines 77-83 Link Here
77
		$(MOZ_UNICHARUTIL_LIBS) \
77
		$(MOZ_UNICHARUTIL_LIBS) \
78
		$(NULL)
78
		$(NULL)
79
79
80
ifdef MOZ_ENABLE_FREETYPE2
80
ifdef MOZ_ENABLE_XFT
81
EXTRA_DSO_LDOPTS += \
82
		$(MOZ_XFT_LIBS) \
83
		$(NULL)
84
endif
85
86
ifneq (,$(MOZ_ENABLE_FREETYPE2)$(MOZ_ENABLE_XFT))
81
CPPSRCS		+= \
87
CPPSRCS		+= \
82
		nsCidMap.cpp \
88
		nsCidMap.cpp \
83
		nsType1.cpp \
89
		nsType1.cpp \
Lines 87-96 Link Here
87
93
88
include $(topsrcdir)/config/rules.mk
94
include $(topsrcdir)/config/rules.mk
89
95
90
ifdef MOZ_ENABLE_FREETYPE2
91
INCLUDES        += $(FT2_CFLAGS)
92
endif
93
94
CFLAGS		+= $(TK_CFLAGS)
96
CFLAGS		+= $(TK_CFLAGS)
95
CXXFLAGS	+= $(TK_CFLAGS)
97
CXXFLAGS	+= $(TK_CFLAGS)
96
98
Lines 99-104 Link Here
99
		-I$(srcdir)/.. \
101
		-I$(srcdir)/.. \
100
                 $(NULL)
102
                 $(NULL)
101
103
104
ifdef MOZ_ENABLE_XFT
105
INCLUDES		+= $(MOZ_XFT_CFLAGS)
106
LOCAL_INCLUDES	+= -I$(srcdir)/../shared
107
else
108
ifdef MOZ_ENABLE_FREETYPE2
109
INCLUDES	+= $(FT2_CFLAGS)
110
endif
111
endif
112
102
libs::
113
libs::
103
	$(INSTALL) $(EXPORT_RESOURCE) $(DIST)/bin/res
114
	$(INSTALL) $(EXPORT_RESOURCE) $(DIST)/bin/res
104
115
105
-- gfx/src/ps/nsDeviceContextPS.cpp
116
++ gfx/src/ps/nsDeviceContextPS.cpp
Lines 213-218 Link Here
213
 
213
 
214
  nsresult rv;
214
  nsresult rv;
215
  nsCOMPtr<nsIPref> pref(do_GetService(NS_PREF_CONTRACTID, &rv));
215
  nsCOMPtr<nsIPref> pref(do_GetService(NS_PREF_CONTRACTID, &rv));
216
#ifdef MOZ_ENABLE_XFT
217
  if (NS_SUCCEEDED(rv)) {
218
      rv = pref->GetBoolPref("font.FreeType2.printing", &mFTPEnable);
219
      if (NS_FAILED(rv))
220
        mFTPEnable = PR_FALSE;
221
  }
222
#else 
223
  mFTPEnable = PR_FALSE;
224
#ifdef MOZ_ENABLE_FREETYPE2
216
  if (NS_SUCCEEDED(rv)) {
225
  if (NS_SUCCEEDED(rv)) {
217
    rv = pref->GetBoolPref("font.FreeType2.enable", &mFTPEnable);
226
    rv = pref->GetBoolPref("font.FreeType2.enable", &mFTPEnable);
218
    if (NS_FAILED(rv))
227
    if (NS_FAILED(rv))
Lines 223-228 Link Here
223
        mFTPEnable = PR_FALSE;
232
        mFTPEnable = PR_FALSE;
224
    }
233
    }
225
  }
234
  }
235
#endif
236
#endif
226
  
237
  
227
  // the user's locale
238
  // the user's locale
228
  nsCOMPtr<nsILanguageAtomService> langService;
239
  nsCOMPtr<nsILanguageAtomService> langService;
Lines 435-441 Link Here
435
446
436
  NS_ENSURE_TRUE(mPSObj != nsnull, NS_ERROR_NULL_POINTER);
447
  NS_ENSURE_TRUE(mPSObj != nsnull, NS_ERROR_NULL_POINTER);
437
  
448
  
438
#ifdef MOZ_ENABLE_FREETYPE2
449
#if defined(MOZ_ENABLE_FREETYPE2) || defined(MOZ_ENABLE_XFT)
439
  // Before output Type8 font, check whether printer support CID font
450
  // Before output Type8 font, check whether printer support CID font
440
  if (mFTPEnable && mPSFontGeneratorList)
451
  if (mFTPEnable && mPSFontGeneratorList)
441
    if (mPSFontGeneratorList->Count() > 0)
452
    if (mPSFontGeneratorList->Count() > 0)
442
-- gfx/src/ps/nsFontMetricsPS.cpp
453
++ gfx/src/ps/nsFontMetricsPS.cpp
Lines 21-26 Link Here
21
 *
21
 *
22
 * Contributor(s):
22
 * Contributor(s):
23
 *   Roland Mainz <roland.mainz@informatik.med.uni-giessen.de>
23
 *   Roland Mainz <roland.mainz@informatik.med.uni-giessen.de>
24
 *   Ervin Yan <Ervin.Yan@sun.com>
25
 *   Christopher Blizzard <blizzard@mozilla.org>
26
 *   Jungshik Shin <jshin@i18nl10n.com>
24
 *
27
 *
25
 *
28
 *
26
 * Alternatively, the contents of this file may be used under the terms of
29
 * Alternatively, the contents of this file may be used under the terms of
Lines 47-53 Link Here
47
#include "nsIPref.h"
50
#include "nsIPref.h"
48
#include "nsVoidArray.h"
51
#include "nsVoidArray.h"
49
#include "nsReadableUtils.h"
52
#include "nsReadableUtils.h"
50
#ifdef MOZ_ENABLE_FREETYPE2
53
#if defined(MOZ_ENABLE_FREETYPE2) || defined(MOZ_ENABLE_XFT)
51
#include "nsType8.h"
54
#include "nsType8.h"
52
#endif
55
#endif
53
#include "prlog.h"
56
#include "prlog.h"
Lines 57-68 Link Here
57
extern nsIAtom *gUsersLocale;
60
extern nsIAtom *gUsersLocale;
58
#define NS_IS_BOLD(weight) ((weight) > 400 ? 1 : 0)
61
#define NS_IS_BOLD(weight) ((weight) > 400 ? 1 : 0)
59
62
63
#ifdef MOZ_ENABLE_XFT
64
65
#include "nsFontConfigUtils.h"
66
67
static nsFontPS* CreateFontPS(nsXftEntry*, const nsFont&,
68
                              nsFontMetricsPS*);
69
70
#else
60
#ifdef MOZ_ENABLE_FREETYPE2
71
#ifdef MOZ_ENABLE_FREETYPE2
61
static nsFontPS* CreateFontPS(nsITrueTypeFontCatalogEntry*, const nsFont&,
72
static nsFontPS* CreateFontPS(nsITrueTypeFontCatalogEntry*, const nsFont&,
62
                              nsFontMetricsPS*);
73
                              nsFontMetricsPS*);
63
74
64
static NS_DEFINE_CID(kFCSCID, NS_FONTCATALOGSERVICE_CID);
75
static NS_DEFINE_CID(kFCSCID, NS_FONTCATALOGSERVICE_CID);
65
#endif
76
#endif
77
#endif
66
78
67
#ifdef PR_LOGGING
79
#ifdef PR_LOGGING
68
static PRLogModuleInfo *gFontMetricsPSM = PR_NewLogModule("FontMetricsPS");
80
static PRLogModuleInfo *gFontMetricsPSM = PR_NewLogModule("FontMetricsPS");
Lines 93-103 Link Here
93
      fontps *fontPS = (fontps *)mFontsPS->ElementAt(i);
105
      fontps *fontPS = (fontps *)mFontsPS->ElementAt(i);
94
      if (!fontPS)
106
      if (!fontPS)
95
        continue;
107
        continue;
96
      NS_IF_RELEASE(fontPS->entry);
97
      if (fontPS->fontps)
108
      if (fontPS->fontps)
98
        delete fontPS->fontps;
109
        delete fontPS->fontps;
110
#ifdef MOZ_ENABLE_XFT
111
      if (fontPS->entry)
112
        delete fontPS->entry;
113
      if (fontPS->charset)
114
        FcCharSetDestroy(fontPS->charset);
115
#else
116
#ifdef MOZ_ENABLE_FREETYPE2
117
      NS_IF_RELEASE(fontPS->entry);
99
      if (fontPS->ccmap)
118
      if (fontPS->ccmap)
100
        FreeCCMap(fontPS->ccmap);
119
        FreeCCMap(fontPS->ccmap);
120
#endif
121
#endif
101
      delete fontPS;
122
      delete fontPS;
102
    }
123
    }
103
    delete mFontsPS;
124
    delete mFontsPS;
Lines 127-132 Link Here
127
  mLangGroup = aLangGroup;
148
  mLangGroup = aLangGroup;
128
149
129
  mFont = new nsFont(aFont);
150
  mFont = new nsFont(aFont);
151
130
  //don't addref this to avoid circular refs
152
  //don't addref this to avoid circular refs
131
  mDeviceContext = (nsDeviceContextPS *)aContext;
153
  mDeviceContext = (nsDeviceContextPS *)aContext;
132
154
Lines 162-168 Link Here
162
    float dev2app;
184
    float dev2app;
163
    dev2app = mDeviceContext->DevUnitsToAppUnits();
185
    dev2app = mDeviceContext->DevUnitsToAppUnits();
164
    fontps *font = (fontps*)mFontsPS->ElementAt(0);
186
    fontps *font = (fontps*)mFontsPS->ElementAt(0);
165
#ifdef MOZ_ENABLE_FREETYPE2
187
#if defined(MOZ_ENABLE_FREETYPE2) || defined(MOZ_ENABLE_XFT)
166
    NS_ASSERTION(font && font->entry, "no font available");
188
    NS_ASSERTION(font && font->entry, "no font available");
167
    if (font && !font->fontps && font->entry)
189
    if (font && !font->fontps && font->entry)
168
      font->fontps = CreateFontPS(font->entry, *mFont, this);
190
      font->fontps = CreateFontPS(font->entry, *mFont, this);
Lines 468-478 Link Here
468
{
490
{
469
  nsFontPS* fontPS;
491
  nsFontPS* fontPS;
470
492
471
#ifdef MOZ_ENABLE_FREETYPE2
493
#if defined(MOZ_ENABLE_FREETYPE2) || defined(MOZ_ENABLE_XFT)
472
  nsDeviceContextPS* dc = aFontMetrics->GetDeviceContext();
494
  nsDeviceContextPS* dc = aFontMetrics->GetDeviceContext();
473
  NS_ENSURE_TRUE(dc, nsnull);
495
  NS_ENSURE_TRUE(dc, nsnull);
474
  if (dc->mFTPEnable) {
496
  if (dc->mFTPEnable) {
497
#ifdef MOZ_ENABLE_XFT
498
    fontPS = nsFontPSXft::FindFont(aChar, aFont, aFontMetrics);
499
#else
475
    fontPS = nsFontPSFreeType::FindFont(aChar, aFont, aFontMetrics);
500
    fontPS = nsFontPSFreeType::FindFont(aChar, aFont, aFontMetrics);
501
#endif
476
    if (fontPS)
502
    if (fontPS)
477
      return fontPS;
503
      return fontPS;
478
  }
504
  }
Lines 488-496 Link Here
488
    fontPS = nsFontPSAFM::FindFont(aFont, aFontMetrics);
514
    fontPS = nsFontPSAFM::FindFont(aFont, aFontMetrics);
489
    fontps *fps = new fontps;
515
    fontps *fps = new fontps;
490
    NS_ENSURE_TRUE(fps, nsnull);
516
    NS_ENSURE_TRUE(fps, nsnull);
491
    fps->entry  = nsnull;
492
    fps->fontps = fontPS;
517
    fps->fontps = fontPS;
518
#if defined(MOZ_ENABLE_XFT) || defined(MOZ_ENABLE_FREETYPE2) 
519
    fps->entry  = nsnull;
520
#ifdef MOZ_ENABLE_XFT
521
    fps->charset = nsnull;
522
#else
493
    fps->ccmap  = nsnull;
523
    fps->ccmap  = nsnull;
524
#endif
525
#endif
494
    aFontMetrics->GetFontsPS()->AppendElement(fps);
526
    aFontMetrics->GetFontsPS()->AppendElement(fps);
495
  }
527
  }
496
  return fontPS;
528
  return fontPS;
Lines 548-554 Link Here
548
nsFontPS(aFont, aFontMetrics), mAFMInfo(aAFMInfo), mFontIndex(fontIndex)
580
nsFontPS(aFont, aFontMetrics), mAFMInfo(aAFMInfo), mFontIndex(fontIndex)
549
{
581
{
550
  if (!(mFont && mAFMInfo)) return;
582
  if (!(mFont && mAFMInfo)) return;
551
  mFamilyName.AssignWithConversion((char*)mAFMInfo->mPSFontInfo->mFamilyName);
583
  AppendASCIItoUTF16(mAFMInfo->mPSFontInfo->mFamilyName, mFamilyName);
552
}
584
}
553
585
554
nsFontPSAFM::~nsFontPSAFM()
586
nsFontPSAFM::~nsFontPSAFM()
Lines 562-701 Link Here
562
nscoord
594
nscoord
563
nsFontPSAFM::GetWidth(const char* aString, PRUint32 aLength)
595
nsFontPSAFM::GetWidth(const char* aString, PRUint32 aLength)
564
{
596
{
565
  nscoord width = 0;
597
  nscoord width = 0;
566
  if (mAFMInfo) {
598
  if (mAFMInfo) {
567
    mAFMInfo->GetStringWidth(aString, width, aLength);
599
    mAFMInfo->GetStringWidth(aString, width, aLength);
568
  }
600
  }
569
  return width;
601
  return width;
602
}
603
604
nscoord
605
nsFontPSAFM::GetWidth(const PRUnichar* aString, PRUint32 aLength)
606
{
607
  nscoord width = 0;
608
  if (mAFMInfo) {
609
    mAFMInfo->GetStringWidth(aString, width, aLength);
610
  }
611
  return width;
612
}
613
614
nscoord
615
nsFontPSAFM::DrawString(nsRenderingContextPS* aContext,
616
                        nscoord aX, nscoord aY,
617
                        const char* aString, PRUint32 aLength)
618
{
619
  NS_ENSURE_TRUE(aContext, 0);
620
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
621
  NS_ENSURE_TRUE(psObj, 0);
622
623
  psObj->moveto(aX, aY);
624
  psObj->show(aString, aLength, "");
625
  return GetWidth(aString, aLength);
626
}
627
628
nscoord
629
nsFontPSAFM::DrawString(nsRenderingContextPS* aContext,
630
                        nscoord aX, nscoord aY,
631
                        const PRUnichar* aString, PRUint32 aLength)
632
{
633
  NS_ENSURE_TRUE(aContext, 0);
634
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
635
  NS_ENSURE_TRUE(psObj, 0);
636
637
  psObj->moveto(aX, aY);
638
  psObj->show(aString, aLength, "", 0);
639
  return GetWidth(aString, aLength);
640
}
641
642
nsresult
643
nsFontPSAFM::RealizeFont(nsFontMetricsPS* aFontMetrics, float dev2app)
644
{
645
  NS_ENSURE_ARG_POINTER(aFontMetrics);
646
647
  float fontSize;
648
  float offset;
649
650
  nscoord onePixel = NSToCoordRound(1 * dev2app);
651
652
  // convert the font size which is in twips to points
653
  fontSize = mFont->size / TWIPS_PER_POINT_FLOAT;
654
655
  offset = NSFloatPointsToTwips(fontSize * mAFMInfo->mPSFontInfo->mXHeight) / 1000.0f;
656
  nscoord xHeight = NSToCoordRound(offset);
657
  aFontMetrics->SetXHeight(xHeight);
658
  aFontMetrics->SetSuperscriptOffset(xHeight);
659
  aFontMetrics->SetSubscriptOffset(xHeight);
660
  aFontMetrics->SetStrikeout((nscoord)(xHeight / 2), onePixel);
661
662
  offset = NSFloatPointsToTwips(fontSize * mAFMInfo->mPSFontInfo->mUnderlinePosition) / 1000.0f;
663
  aFontMetrics->SetUnderline(NSToCoordRound(offset), onePixel);
664
665
  nscoord size = NSToCoordRound(fontSize * dev2app);
666
  aFontMetrics->SetHeight(size);
667
  aFontMetrics->SetEmHeight(size);
668
  aFontMetrics->SetMaxAdvance(size);
669
  aFontMetrics->SetMaxHeight(size);
670
671
  offset = NSFloatPointsToTwips(fontSize * mAFMInfo->mPSFontInfo->mAscender) / 1000.0f;
672
  nscoord ascent = NSToCoordRound(offset);
673
  aFontMetrics->SetAscent(ascent);
674
  aFontMetrics->SetEmAscent(ascent);
675
  aFontMetrics->SetMaxAscent(ascent);
676
677
  offset = NSFloatPointsToTwips(fontSize * mAFMInfo->mPSFontInfo->mDescender) / 1000.0f;
678
  nscoord descent = -(NSToCoordRound(offset));
679
  aFontMetrics->SetDescent(descent);
680
  aFontMetrics->SetEmDescent(descent);
681
  aFontMetrics->SetMaxDescent(descent);
682
683
  aFontMetrics->SetLeading(0);
684
685
  nscoord spaceWidth = GetWidth(" ", 1);
686
  aFontMetrics->SetSpaceWidth(spaceWidth);
687
688
  nscoord aveCharWidth = GetWidth("x", 1);
689
  aFontMetrics->SetAveCharWidth(aveCharWidth);
690
691
  return NS_OK;
692
}
693
694
nsresult
695
nsFontPSAFM::SetupFont(nsRenderingContextPS* aContext)
696
{
697
  NS_ENSURE_TRUE(aContext && mFontMetrics, 0);
698
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
699
  NS_ENSURE_TRUE(psObj, 0);
700
701
  nscoord fontHeight = 0;
702
  mFontMetrics->GetHeight(fontHeight);
703
704
  psObj->setscriptfont(mFontIndex, mFamilyName,
705
                       fontHeight, mFont->style, mFont->variant,
706
                       mFont->weight, mFont->decorations);
707
  return NS_OK;
708
}
709
710
#ifdef MOZ_MATHML
711
nsresult
712
nsFontPSAFM::GetBoundingMetrics(const char*        aString,
713
                                PRUint32           aLength,
714
                                nsBoundingMetrics& aBoundingMetrics)
715
{
716
  return NS_ERROR_NOT_IMPLEMENTED;
717
}
718
719
nsresult
720
nsFontPSAFM::GetBoundingMetrics(const PRUnichar*   aString,
721
                                PRUint32           aLength,
722
                                nsBoundingMetrics& aBoundingMetrics)
723
{
724
  return NS_ERROR_NOT_IMPLEMENTED;
725
}
726
#endif
727
728
#if defined(MOZ_ENABLE_FREETYPE2) || defined(MOZ_ENABLE_XFT)
729
730
#define WIDEN_8_TO_16_BUF_SIZE 1024
731
732
#ifdef MOZ_ENABLE_XFT
733
734
nsXftEntry::nsXftEntry(FcPattern *aFontPattern)
735
{
736
  mFace = nsnull;
737
  mFaceIndex = 0;
738
739
  char *fcResult;
740
741
  if (FcPatternGetString(aFontPattern, FC_FILE, 0, (FcChar8 **) &fcResult)
742
      == FcResultMatch)     
743
    mFontFileName = fcResult;
744
745
  if (FcPatternGetString(aFontPattern, FC_FAMILY, 0, (FcChar8 **) &fcResult)
746
      == FcResultMatch)     
747
    mFamilyName = fcResult;
748
749
  if (FcPatternGetString(aFontPattern, FC_STYLE, 0, (FcChar8 **) &fcResult)
750
      == FcResultMatch)
751
    mStyleName = fcResult;
752
}
753
754
755
static nsFontPS*
756
CreateFontPS(nsXftEntry *aEntry, const nsFont& aFont,
757
             nsFontMetricsPS* aFontMetrics)
758
{
759
  nsresult rv;
760
  nsDeviceContextPS* dc = aFontMetrics->GetDeviceContext();
761
  NS_ENSURE_TRUE(dc, nsnull);
762
763
  nsCAutoString fileName(aEntry->mFontFileName);
764
  nsCAutoString familyName(aEntry->mFamilyName);
765
  nsCAutoString styleName(aEntry->mStyleName);
766
  ToLowerCase(familyName);
767
  ToLowerCase(styleName);
768
  
769
  nsCAutoString fontName;
770
  fontName.Append(familyName);
771
  fontName.Append("-");
772
  fontName.Append(styleName);
773
  nsCStringKey key(fontName);
774
775
  nsHashtable *psFGList = dc->GetPSFontGeneratorList();
776
  NS_ENSURE_TRUE(psFGList, nsnull);
777
  
778
  nsPSFontGenerator* psFontGen = (nsPSFontGenerator*) psFGList->Get(&key);
779
  if (!psFontGen) {
780
    psFontGen = new nsXftType8Generator;
781
    NS_ENSURE_TRUE(psFontGen, nsnull);
782
    rv = ((nsXftType8Generator*)psFontGen)->Init(aEntry);
783
    if (NS_FAILED(rv)) {
784
      delete psFontGen;
785
      return nsnull;
786
    }
787
    psFGList->Put(&key, (void *) psFontGen);
788
  }
789
  nsFontPSXft* font = new nsFontPSXft(aFont, aFontMetrics);
790
  NS_ENSURE_TRUE(font, nsnull);
791
  rv = font->Init(aEntry, psFontGen);
792
  if (NS_FAILED(rv)) {
793
    delete font;
794
    return nsnull;
795
  }
796
  return font;
797
}
798
799
/* static */
800
PRBool
801
nsFontPSXft::CSSFontEnumCallback(const nsString& aFamily, PRBool aIsGeneric,
802
                                      void* aFpi)
803
{
804
    fontPSInfo *fpi = (fontPSInfo *)aFpi;
805
806
    // make sure it's an ascii name, if not then return and continue
807
    // enumerating
808
    if (!NS_IsASCIIFontName(aFamily))
809
        return PR_TRUE;
810
811
    NS_LossyConvertUTF16toASCII name(aFamily);
812
    ToLowerCase(name);
813
    fpi->mFontList.AppendCString(name);
814
    fpi->mFontIsGeneric.AppendElement((void *)aIsGeneric);
815
    if (aIsGeneric) {
816
        fpi->mGenericFont =
817
            fpi->mFontList.CStringAt(fpi->mFontList.Count() - 1);
818
        return PR_FALSE; // stop processing
819
    }
820
821
    return PR_TRUE; // keep processing
822
}
823
824
nsFontPS*
825
nsFontPSXft::FindFont(PRUnichar aChar, const nsFont& aFont, 
826
                           nsFontMetricsPS* aFontMetrics)
827
{
828
  PRBool inited = PR_FALSE;
829
  nsCOMPtr<nsIAtom> langGroup;
830
  fontPSInfo fpi;
831
  fpi.fontps = aFontMetrics->GetFontsPS();
832
  int i = 0;
833
834
  while (1) {
835
    //
836
    // see if it is already in the list of fonts
837
    //
838
    for (; i<fpi.fontps->Count(); i++) {
839
      fontps *fi = (fontps *)fpi.fontps->ElementAt(i);
840
      if (!fi->entry || !fi->charset) {
841
        NS_ASSERTION(fi->entry, "invalid entry");
842
        NS_ASSERTION(fi->charset, "invalid charset");
843
        continue;
844
      }
845
      if (FcCharSetHasChar(fi->charset, aChar)) {
846
        if (!fi->fontps) {
847
#ifdef PR_LOGGING
848
          if (PR_LOG_TEST(gFontMetricsPSM, PR_LOG_DEBUG)) {
849
            PR_LogPrint("CreateFontPS %s/%s\n",
850
                fi->entry->mFamilyName.get(), fi->entry->mStyleName.get());
851
          }
852
#endif
853
          fi->fontps = CreateFontPS(fi->entry, aFont, aFontMetrics);
854
        }
855
        if (fi->fontps)
856
          return fi->fontps;
857
      }
858
    }
859
860
    // if already get all matched fonts and not found suitable
861
    // then return nsnull
862
    if (fpi.fontps->Count() > 0)
863
      return nsnull;
864
865
    //
866
    // it is not already in the list of fonts
867
    // so add more fonts to the list
868
    //
869
    if (inited)
870
      return nsnull;
871
 
872
    inited = PR_TRUE;
873
874
    fpi.nsfont = &aFont;
875
    fpi.alreadyLoaded = aFontMetrics->GetFontsAlreadyLoadedList();
876
    fpi.mGenericFont = nsnull;
877
878
    aFontMetrics->GetLangGroup(getter_AddRefs(langGroup));
879
    if (!langGroup)
880
      langGroup = NS_NewAtom("x-western");
881
882
    // enumerate over the font names passed in
883
    aFont.EnumerateFamilies(nsFontPSXft::CSSFontEnumCallback, &fpi);
884
885
    nsCOMPtr<nsIPref> prefService;
886
    prefService = do_GetService(NS_PREF_CONTRACTID);
887
    if (!prefService)
888
      return nsnull;
889
890
    nsXPIDLCString value;
891
    nsCAutoString  aDefaultFont;
892
893
    // Set up the default font name if it's not set
894
    if (!fpi.mGenericFont) {
895
      prefService->CopyCharPref("font.default", getter_Copies(value));
896
897
      if (value.get())
898
        aDefaultFont = value.get();
899
      else
900
        aDefaultFont = "serif";
901
902
      fpi.mGenericFont = &aDefaultFont;
903
    }
904
905
    // If pattern is null, set up the base bits of it so we can
906
    // match.  If we need to match later we don't have to set it up
907
    // again.
908
    FcPattern *pattern = nsnull;
909
910
    pattern = FcPatternCreate();
911
    if (!pattern)
912
      return nsnull;
913
914
    // XXX need to add user defined family
915
916
    // Add CSS names - walk the list of fonts, adding the generic as
917
    // the last font
918
    for (int i=0; i < fpi.mFontList.Count(); ++i) {
919
      // if this was a generic name, break out of the loop since we
920
      // don't want to add it to the pattern yet
921
      if (fpi.mFontIsGeneric[i])
922
        break;;
923
924
      nsCString *familyName = fpi.mFontList.CStringAt(i);
925
      NS_AddFFRE(pattern, familyName, PR_FALSE);
926
    }
927
928
    // Add the language group.  Note that we do this before adding any
929
    // generics.  That's because the language is more important than
930
    // any generic font.
931
    NS_AddLangGroup(pattern, langGroup);
932
933
    // If there's a generic add a pref for the generic if there's one
934
    // set.
935
    if (fpi.mGenericFont && !aFont.systemFont) {
936
      nsCAutoString name("font.name.");
937
      name += fpi.mGenericFont->get();
938
      name += ".";
939
940
      nsAutoString langGroupStr;
941
      langGroup->ToString(langGroupStr);
942
943
      LossyAppendUTF16toASCII(langGroupStr, name);
944
945
      nsCOMPtr<nsIPref> pref;
946
      pref = do_GetService(NS_PREF_CONTRACTID);
947
      if (pref) {
948
        nsresult rv;
949
        nsXPIDLCString value;
950
        rv = pref->GetCharPref(name.get(), getter_Copies(value));
951
952
        // we ignore prefs that have three hypens since they are X
953
        // style prefs.
954
        if (NS_FFRECountHyphens(value) < 3) {
955
          nsCAutoString tmpstr(value);
956
957
          if (PR_LOG_TEST(gFontMetricsPSM, PR_LOG_DEBUG)) {
958
              printf("\tadding generic font from preferences: %s\n",
959
                     tmpstr.get());
960
          }
961
962
          NS_AddFFRE(pattern, &tmpstr, PR_FALSE);
963
        }
964
      }
965
    }
966
967
    // Add the generic if there is one.
968
    if (fpi.mGenericFont && !aFont.systemFont)
969
      NS_AddFFRE(pattern, fpi.mGenericFont, PR_FALSE);
970
971
    // Add the slant type
972
    FcPatternAddInteger(pattern, FC_SLANT, NS_CalculateSlant(aFont.style));
973
974
    // Add the weight
975
    FcPatternAddInteger(pattern, FC_WEIGHT, NS_CalculateWeight(aFont.weight));
976
977
    // Set up the default substitutions for this font
978
    FcConfigSubstitute(0, pattern, FcMatchPattern);
979
    FcDefaultSubstitute(pattern);
980
981
    FcResult   result;
982
    FcFontSet *set = FcFontSort(0, pattern, FcTrue, 0, &result);
983
    if (!set) {
984
       return nsnull;
985
    }
986
987
    // Create a list of new font objects based on the fonts returned
988
    // as part of the query
989
    for (int i=0; i < set->nfont; ++i) {
990
        FcBool fc_outline;
991
        FcChar8 *fc_family;
992
        FcChar8 *fc_style;
993
        FcCharSet *fc_charset;
994
995
        // skip if the fonts is not outline font files.
996
        result = FcPatternGetBool (set->fonts[i], FC_OUTLINE, 0, &fc_outline);
997
        if (!fc_outline)
998
          continue;
999
1000
        result = FcPatternGetString (set->fonts[i], FC_FAMILY, 0, &fc_family);
1001
        if (result != FcResultMatch || fc_family == nsnull)
1002
          continue;
1003
1004
        result = FcPatternGetString (set->fonts[i], FC_STYLE, 0, &fc_style);
1005
        if (result != FcResultMatch || fc_style == nsnull)
1006
          continue;
1007
1008
        result = FcPatternGetCharSet(set->fonts[i], FC_CHARSET, 0, &fc_charset);
1009
        if (result != FcResultMatch || fc_charset == nsnull)
1010
          continue;
1011
1012
        nsXftEntry *xftEntry = new nsXftEntry(set->fonts[i]);
1013
        if (!xftEntry)
1014
          continue;
1015
1016
        fontps *fps = new fontps;
1017
        fps->entry = xftEntry;
1018
        fps->charset = fc_charset;
1019
        fps->fontps = nsnull;
1020
        fpi.fontps->AppendElement(fps);
1021
    }
1022
1023
    // we're done with the set now
1024
    FcFontSetDestroy(set);
1025
1026
    FcPatternDestroy(pattern);
1027
  }
1028
1029
  return nsnull;
1030
}
1031
1032
/*FT_CALLBACK_DEF*/
1033
FT_Error
1034
nsXftFaceRequester(FTC_FaceID face_id, FT_Library lib,
1035
                  FT_Pointer request_data, FT_Face* aFace)
1036
{
1037
  nsXftEntry *faceID = (nsXftEntry *)face_id;
1038
1039
  FT_Error fterror = FT_New_Face(lib, faceID->mFontFileName.get(),
1040
                                 faceID->mFaceIndex, aFace);
1041
  if (fterror) 
1042
    *aFace = nsnull;
1043
  return 0;
1044
}
1045
1046
nsFontPSXft::nsFontPSXft(const nsFont& aFont,
1047
                                   nsFontMetricsPS* aFontMetrics)
1048
  :nsFontPS(aFont, aFontMetrics)
1049
{
1050
}
1051
1052
nsresult
1053
nsFontPSXft::Init(nsXftEntry* aEntry,
1054
                       nsPSFontGenerator* aPSFontGen)
1055
{
1056
  NS_ENSURE_TRUE(aEntry && aPSFontGen, NS_ERROR_FAILURE);
1057
  mEntry = aEntry;
1058
  mPSFontGenerator = aPSFontGen;
1059
1060
  float app2dev;
1061
  nsIDeviceContext* dc = mFontMetrics->GetDeviceContext();
1062
  NS_ENSURE_TRUE(dc, NS_ERROR_NULL_POINTER);
1063
  app2dev = dc->AppUnitsToDevUnits();
1064
  
1065
  mPixelSize = NSToIntRound(app2dev * mFont->size);
1066
1067
  mImageDesc.font.face_id    = (void*)mEntry;
1068
  mImageDesc.font.pix_width  = mPixelSize;
1069
  mImageDesc.font.pix_height = mPixelSize;
1070
  mImageDesc.image_type = 0;
1071
1072
  FT_Error fterror; 
1073
  fterror = FT_Init_FreeType(&mFreeTypeLibrary);
1074
  if (fterror) {
1075
    NS_ASSERTION(!fterror, "failed to initialize FreeType library");
1076
    mFreeTypeLibrary = nsnull;
1077
    return NS_ERROR_FAILURE;
1078
  }
1079
  fterror = FTC_Manager_New(mFreeTypeLibrary, 0, 0, 0, nsXftFaceRequester,
1080
                  NULL, &mFTCacheManager);
1081
  NS_ASSERTION(!fterror, "failed to create FreeType Cache manager");
1082
  if (fterror)
1083
    return NS_ERROR_FAILURE;
1084
1085
  fterror = FTC_Image_Cache_New(mFTCacheManager, &mImageCache);
1086
  NS_ASSERTION(!fterror, "failed to create FreeType image cache");
1087
  if (fterror)
1088
    return NS_ERROR_FAILURE;
1089
1090
  return NS_OK;
1091
}
1092
1093
nsFontPSXft::~nsFontPSXft()
1094
{
1095
  FTC_Manager_Done(mFTCacheManager);
1096
1097
  if (FT_Done_FreeType(mFreeTypeLibrary))
1098
    return;
1099
1100
  mEntry = nsnull;
1101
}
1102
1103
FT_Face
1104
nsFontPSXft::getFTFace()
1105
{
1106
  FT_Error error;
1107
  FT_Face face = mEntry->mFace;
1108
1109
  if (face)
1110
    return (face);
1111
1112
  error = FTC_Manager_Lookup_Size(mFTCacheManager, &mImageDesc.font,
1113
                                  &face, nsnull);
1114
  NS_ASSERTION(error == 0, "failed to get face/size");
1115
  if (error)
1116
    return nsnull;
1117
1118
  mEntry->mFace = face;
1119
  return face;
1120
}
1121
1122
nscoord
1123
nsFontPSXft::GetWidth(const char* aString, PRUint32 aLength)
1124
{
1125
  PRUnichar unichars[WIDEN_8_TO_16_BUF_SIZE];
1126
  PRUint32 len, width = 0;
1127
  while ( aLength > 0 ) {
1128
    len = PR_MIN(aLength, WIDEN_8_TO_16_BUF_SIZE);
1129
    for (PRUint32 i=0; i < len; i++) {
1130
      unichars[i] = PRUnichar(PRUint8(aString[i]));
1131
    }
1132
    width += GetWidth(unichars, len);
1133
    aString += len;
1134
    aLength -= len;
1135
  }
1136
  return width;
1137
}
1138
1139
1140
nscoord
1141
nsFontPSXft::GetWidth(const PRUnichar* aString, PRUint32 aLength)
1142
{
1143
  FT_UInt glyph_index;
1144
  FT_Glyph glyph;
1145
  double origin_x = 0;
1146
1147
  // get the face/size from the FreeType cache
1148
  FT_Face face = getFTFace();
1149
  NS_ASSERTION(face, "failed to get face/size");
1150
  if (!face)
1151
    return 0;
1152
1153
  for (PRUint32 i=0; i<aLength; i++) {
1154
    glyph_index = FT_Get_Char_Index((FT_Face)face, aString[i]);
1155
    FT_Error error = FTC_Image_Cache_Lookup(mImageCache, &mImageDesc,
1156
                                            glyph_index, &glyph);
1157
    if (error) {
1158
      origin_x += FT_REG_TO_16_16(face->size->metrics.x_ppem/2 + 2);
1159
      continue;
1160
    }
1161
    origin_x += glyph->advance.x;
1162
  }
1163
1164
  NS_ENSURE_TRUE(mFontMetrics, 0);
1165
1166
  nsDeviceContextPS* dc = mFontMetrics->GetDeviceContext();
1167
  NS_ENSURE_TRUE(dc, 0);
1168
1169
  float dev2app;
1170
  dev2app = dc->DevUnitsToAppUnits();
1171
  origin_x *= dev2app;
1172
  origin_x /= FT_REG_TO_16_16(1);
1173
1174
  return NSToCoordRound((nscoord)origin_x);
1175
}
1176
1177
nscoord
1178
nsFontPSXft::DrawString(nsRenderingContextPS* aContext,
1179
                             nscoord aX, nscoord aY,
1180
                             const char* aString, PRUint32 aLength)
1181
{
1182
  NS_ENSURE_TRUE(aContext, 0);
1183
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
1184
  NS_ENSURE_TRUE(psObj, 0);
1185
  nscoord width = 0;
1186
  
1187
  psObj->moveto(aX, aY);
1188
1189
  PRUnichar unichars[WIDEN_8_TO_16_BUF_SIZE];
1190
  PRUint32 len;
1191
  
1192
  while ( aLength > 0 ) {
1193
    len = PR_MIN(aLength, WIDEN_8_TO_16_BUF_SIZE);
1194
    for (PRUint32 i=0; i < len; i++) {
1195
      unichars[i] = PRUnichar(PRUint8(aString[i]));
1196
    }
1197
    psObj->show(unichars, len, "", 1);
1198
    mPSFontGenerator->AddToSubset(unichars, len);
1199
    width += GetWidth(unichars, len);
1200
    aString += len;
1201
    aLength -= len;
1202
  }
1203
  return width;
1204
}
1205
1206
nscoord
1207
nsFontPSXft::DrawString(nsRenderingContextPS* aContext,
1208
                             nscoord aX, nscoord aY,
1209
                             const PRUnichar* aString, PRUint32 aLength)
1210
{
1211
  NS_ENSURE_TRUE(aContext, 0);
1212
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
1213
  NS_ENSURE_TRUE(psObj, 0);
1214
1215
  psObj->moveto(aX, aY);
1216
  psObj->show(aString, aLength, "", 1);
1217
  
1218
  mPSFontGenerator->AddToSubset(aString, aLength);
1219
  return GetWidth(aString, aLength);
1220
}
1221
1222
int
1223
nsFontPSXft::ascent()
1224
{
1225
  FT_Face face = getFTFace();
1226
  NS_ASSERTION(face, "failed to get face/size");
1227
  NS_ENSURE_TRUE(face, 0);
1228
  return FT_DESIGN_UNITS_TO_PIXELS(face->ascender, face->size->metrics.y_scale);
1229
}
1230
1231
int
1232
nsFontPSXft::descent()
1233
{
1234
  FT_Face face = getFTFace();
1235
  NS_ASSERTION(face, "failed to get face/size");
1236
  NS_ENSURE_TRUE(face, 0);
1237
  return FT_DESIGN_UNITS_TO_PIXELS(-face->descender, face->size->metrics.y_scale);
1238
}
1239
1240
int
1241
nsFontPSXft::max_ascent()
1242
{
1243
  FT_Face face = getFTFace();
1244
  NS_ASSERTION(face, "failed to get face/size");
1245
  NS_ENSURE_TRUE(face, 0);
1246
  TT_OS2 *tt_os2 = (TT_OS2 *) FT_Get_Sfnt_Table(face, ft_sfnt_os2);
1247
  NS_ASSERTION(tt_os2, "unable to get OS2 table");
1248
  if (tt_os2)
1249
     return FT_DESIGN_UNITS_TO_PIXELS(tt_os2->sTypoAscender,
1250
                                      face->size->metrics.y_scale);
1251
  else
1252
     return FT_DESIGN_UNITS_TO_PIXELS(face->bbox.yMax,
1253
                                      face->size->metrics.y_scale);
1254
}
1255
1256
int
1257
nsFontPSXft::max_descent()
1258
{
1259
  FT_Face face = getFTFace();
1260
  NS_ASSERTION(face, "failed to get face/size");
1261
  NS_ENSURE_TRUE(face, 0);
1262
  TT_OS2 *tt_os2 = (TT_OS2 *) FT_Get_Sfnt_Table(face, ft_sfnt_os2);
1263
  NS_ASSERTION(tt_os2, "unable to get OS2 table");
1264
  if (tt_os2)
1265
     return FT_DESIGN_UNITS_TO_PIXELS(-tt_os2->sTypoDescender,
1266
                                      face->size->metrics.y_scale);
1267
  else
1268
     return FT_DESIGN_UNITS_TO_PIXELS(-face->bbox.yMin,
1269
                                      face->size->metrics.y_scale);
1270
}
1271
1272
int
1273
nsFontPSXft::max_width()
1274
{
1275
  FT_Face face = getFTFace();
1276
  NS_ASSERTION(face, "failed to get face/size");
1277
  NS_ENSURE_TRUE(face, 0);
1278
  return FT_DESIGN_UNITS_TO_PIXELS(face->max_advance_width,
1279
                                   face->size->metrics.x_scale);
1280
}
1281
1282
PRBool
1283
nsFontPSXft::getXHeight(unsigned long &aVal)
1284
{
1285
  FT_Face face = getFTFace();
1286
  NS_ASSERTION(face, "failed to get face/size");
1287
  if (!face || !aVal)
1288
    return PR_FALSE;
1289
  aVal = FT_DESIGN_UNITS_TO_PIXELS(face->height, face->size->metrics.y_scale);
1290
1291
  return PR_TRUE;
1292
}
1293
1294
PRBool
1295
nsFontPSXft::underlinePosition(long &aVal)
1296
{
1297
  FT_Face face = getFTFace();
1298
  NS_ASSERTION(face, "failed to get face/size");
1299
  if (!face)
1300
    return PR_FALSE;
1301
  aVal = FT_DESIGN_UNITS_TO_PIXELS(-face->underline_position,
1302
                                   face->size->metrics.y_scale);
1303
  return PR_TRUE;
570
}
1304
}
571
1305
572
nscoord
1306
PRBool
573
nsFontPSAFM::GetWidth(const PRUnichar* aString, PRUint32 aLength)
1307
nsFontPSXft::underline_thickness(unsigned long &aVal)
574
{
1308
{
575
  nscoord width = 0;
1309
  FT_Face face = getFTFace();
576
  if (mAFMInfo) {
1310
  NS_ASSERTION(face, "failed to get face/size");
577
    mAFMInfo->GetStringWidth(aString, width, aLength);
1311
  if (!face)
578
  }
1312
    return PR_FALSE;
579
  return width;
1313
  aVal = FT_DESIGN_UNITS_TO_PIXELS(face->underline_thickness,
1314
                                   face->size->metrics.x_scale);
1315
  return PR_TRUE;
580
}
1316
}
581
1317
582
nscoord
1318
PRBool
583
nsFontPSAFM::DrawString(nsRenderingContextPS* aContext,
1319
nsFontPSXft::superscript_y(long &aVal)
584
                        nscoord aX, nscoord aY,
585
                        const char* aString, PRUint32 aLength)
586
{
1320
{
587
  NS_ENSURE_TRUE(aContext, 0);
1321
  aVal = 0;
588
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
1322
  FT_Face face = getFTFace();
589
  NS_ENSURE_TRUE(psObj, 0);
1323
  NS_ASSERTION(face, "failed to get face/size");
1324
  if (!face)
1325
    return PR_FALSE;
590
1326
591
  psObj->moveto(aX, aY);
1327
  TT_OS2 *tt_os2 = (TT_OS2 *) FT_Get_Sfnt_Table(face, ft_sfnt_os2);
592
  psObj->show(aString, aLength, "");
1328
  NS_ASSERTION(tt_os2, "unable to get OS2 table");
593
  return GetWidth(aString, aLength);
1329
  if (!tt_os2)
1330
    return PR_FALSE;
1331
1332
  aVal = FT_DESIGN_UNITS_TO_PIXELS(tt_os2->ySuperscriptYOffset,
1333
                                  face->size->metrics.y_scale);
1334
  return PR_TRUE;
594
}
1335
}
595
1336
596
nscoord
1337
PRBool
597
nsFontPSAFM::DrawString(nsRenderingContextPS* aContext,
1338
nsFontPSXft::subscript_y(long &aVal)
598
                        nscoord aX, nscoord aY,
599
                        const PRUnichar* aString, PRUint32 aLength)
600
{
1339
{
601
  NS_ENSURE_TRUE(aContext, 0);
1340
  aVal = 0;
602
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
1341
  FT_Face face = getFTFace();
603
  NS_ENSURE_TRUE(psObj, 0);
1342
  NS_ASSERTION(face, "failed to get face/size");
1343
  if (!face)
1344
    return PR_FALSE;
604
1345
605
  psObj->moveto(aX, aY);
1346
  TT_OS2 *tt_os2 = (TT_OS2 *) FT_Get_Sfnt_Table(face, ft_sfnt_os2);
606
  psObj->show(aString, aLength, "", 0);
1347
  NS_ASSERTION(tt_os2, "unable to get OS2 table");
607
  return GetWidth(aString, aLength);
1348
  if (!tt_os2)
1349
    return PR_FALSE;
1350
1351
  aVal = FT_DESIGN_UNITS_TO_PIXELS(tt_os2->ySubscriptYOffset,
1352
                                  face->size->metrics.y_scale);
1353
1354
  // some fonts have the sign wrong. it should be always positive.
1355
  aVal = (aVal < 0) ? -aVal : aVal;
1356
  return PR_TRUE;
608
}
1357
}
609
1358
610
nsresult
1359
nsresult
611
nsFontPSAFM::RealizeFont(nsFontMetricsPS* aFontMetrics, float dev2app)
1360
nsFontPSXft::RealizeFont(nsFontMetricsPS* aFontMetrics, float dev2app)
612
{
1361
{
613
  NS_ENSURE_ARG_POINTER(aFontMetrics);
1362
 
614
1363
  nscoord leading, emHeight, emAscent, emDescent;
615
  float fontSize;
1364
  nscoord maxHeight, maxAscent, maxDescent, maxAdvance;
616
  float offset;
1365
  nscoord xHeight, spaceWidth, aveCharWidth;
1366
  nscoord underlineOffset, underlineSize, superscriptOffset, subscriptOffset;
1367
  nscoord strikeoutOffset, strikeoutSize;
617
1368
618
  nscoord onePixel = NSToCoordRound(1 * dev2app);
1369
  int lineSpacing = ascent() + descent();
1370
  if (lineSpacing > mPixelSize) {
1371
    leading = nscoord((lineSpacing - mPixelSize) * dev2app);
1372
  }
1373
  else {
1374
    leading = 0;
1375
  }
1376
  emHeight = PR_MAX(1, nscoord(mPixelSize * dev2app));
1377
  emAscent = nscoord(ascent() * mPixelSize * dev2app / lineSpacing);
1378
  emDescent = emHeight - emAscent;
619
1379
620
  // convert the font size which is in twips to points
1380
  maxHeight  = nscoord((max_ascent() + max_descent()) * dev2app);
621
  fontSize = mFont->size / TWIPS_PER_POINT_FLOAT;
1381
  maxAscent  = nscoord(max_ascent() * dev2app) ;
1382
  maxDescent = nscoord(max_descent() * dev2app);
1383
  maxAdvance = nscoord(max_width() * dev2app);
622
1384
623
  offset = NSFloatPointsToTwips(fontSize * mAFMInfo->mPSFontInfo->mXHeight) / 1000.0f;
1385
  // 56% of ascent, best guess for non-true type
624
  nscoord xHeight = NSToCoordRound(offset);
1386
  xHeight = NSToCoordRound((float)ascent()* dev2app * 0.56f);
625
  aFontMetrics->SetXHeight(xHeight);
626
  aFontMetrics->SetSuperscriptOffset(xHeight);
627
  aFontMetrics->SetSubscriptOffset(xHeight);
628
  aFontMetrics->SetStrikeout((nscoord)(xHeight / 2), onePixel);
629
1387
630
  offset = NSFloatPointsToTwips(fontSize * mAFMInfo->mPSFontInfo->mUnderlinePosition) / 1000.0f;
1388
  PRUnichar space = (PRUnichar)' ';
631
  aFontMetrics->SetUnderline(NSToCoordRound(offset), onePixel);
1389
  spaceWidth = NSToCoordRound(GetWidth(&space, 1));
1390
  PRUnichar averageX = (PRUnichar)'x';
1391
  aveCharWidth = NSToCoordRound(GetWidth(&averageX, 1));
1392
  
1393
  unsigned long pr = 0;
1394
  if (getXHeight(pr)) {
1395
    xHeight = (nscoord(pr * dev2app));
1396
  }
632
1397
633
  nscoord size = NSToCoordRound(fontSize * dev2app);
1398
  float height;
634
  aFontMetrics->SetHeight(size);
1399
  long val;
635
  aFontMetrics->SetEmHeight(size);
1400
  
636
  aFontMetrics->SetMaxAdvance(size);
1401
  height = ascent() + descent();
637
  aFontMetrics->SetMaxHeight(size);
1402
  underlineOffset = -NSToIntRound(
1403
                    PR_MAX (1, floor (0.1 * height + 0.5)) * dev2app);
638
1404
639
  offset = NSFloatPointsToTwips(fontSize * mAFMInfo->mPSFontInfo->mAscender) / 1000.0f;
1405
  if (underline_thickness(pr)) {
640
  nscoord ascent = NSToCoordRound(offset);
1406
    /* this will only be provided from adobe .afm fonts */
641
  aFontMetrics->SetAscent(ascent);
1407
    underlineSize = nscoord(PR_MAX(dev2app, NSToIntRound(pr * dev2app)));
642
  aFontMetrics->SetEmAscent(ascent);
1408
  }
643
  aFontMetrics->SetMaxAscent(ascent);
1409
  else {
1410
    height = ascent() + descent();
1411
    underlineSize = NSToIntRound(
1412
                    PR_MAX(1, floor (0.05 * height + 0.5)) * dev2app);
1413
  }
644
1414
645
  offset = NSFloatPointsToTwips(fontSize * mAFMInfo->mPSFontInfo->mDescender) / 1000.0f;
1415
  if (superscript_y(val)) {
646
  nscoord descent = -(NSToCoordRound(offset));
1416
    superscriptOffset = nscoord(PR_MAX(dev2app, NSToIntRound(val * dev2app)));
647
  aFontMetrics->SetDescent(descent);
1417
  }
648
  aFontMetrics->SetEmDescent(descent);
1418
  else {
649
  aFontMetrics->SetMaxDescent(descent);
1419
    superscriptOffset = xHeight;
1420
  }
650
1421
651
  aFontMetrics->SetLeading(0);
1422
  if (subscript_y(val)) {
1423
    subscriptOffset = nscoord(PR_MAX(dev2app, NSToIntRound(val * dev2app)));
1424
  }
1425
  else {
1426
   subscriptOffset = xHeight;
1427
  }
652
1428
653
  nscoord spaceWidth = GetWidth(" ", 1);
1429
  /* need better way to calculate this */
1430
  strikeoutOffset = NSToCoordRound(xHeight / 2.0);
1431
  strikeoutSize = underlineSize;
1432
  
1433
  // TODO: leading never used, does it equal to "Height"?
1434
  aFontMetrics->SetHeight(emHeight);
1435
  aFontMetrics->SetEmHeight(emHeight);
1436
  aFontMetrics->SetEmAscent(emAscent);
1437
  aFontMetrics->SetEmDescent(emDescent);
1438
  aFontMetrics->SetMaxHeight(maxHeight);
1439
  aFontMetrics->SetMaxAscent(maxAscent);
1440
  aFontMetrics->SetMaxDescent(maxDescent);
1441
  aFontMetrics->SetMaxAdvance(maxAdvance);
1442
  aFontMetrics->SetXHeight(xHeight);
654
  aFontMetrics->SetSpaceWidth(spaceWidth);
1443
  aFontMetrics->SetSpaceWidth(spaceWidth);
655
656
  nscoord aveCharWidth = GetWidth("x", 1);
657
  aFontMetrics->SetAveCharWidth(aveCharWidth);
1444
  aFontMetrics->SetAveCharWidth(aveCharWidth);
1445
  aFontMetrics->SetUnderline(underlineOffset, underlineSize);
1446
  aFontMetrics->SetSuperscriptOffset(superscriptOffset);
1447
  aFontMetrics->SetSubscriptOffset(subscriptOffset);
1448
  aFontMetrics->SetStrikeout(strikeoutOffset, strikeoutSize);
658
1449
659
  return NS_OK;
1450
  return NS_OK;
660
}
1451
}
661
1452
662
nsresult
1453
nsresult
663
nsFontPSAFM::SetupFont(nsRenderingContextPS* aContext)
1454
nsFontPSXft::SetupFont(nsRenderingContextPS* aContext)
664
{
1455
{
665
  NS_ENSURE_TRUE(aContext && mFontMetrics, 0);
1456
  NS_ENSURE_TRUE(aContext, NS_ERROR_FAILURE);
666
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
1457
  nsPostScriptObj* psObj = aContext->GetPostScriptObj();
667
  NS_ENSURE_TRUE(psObj, 0);
1458
  NS_ENSURE_TRUE(psObj, NS_ERROR_FAILURE);
668
1459
669
  nscoord fontHeight = 0;
1460
  nscoord fontHeight = 0;
670
  mFontMetrics->GetHeight(fontHeight);
1461
  mFontMetrics->GetHeight(fontHeight);
671
1462
672
  psObj->setscriptfont(mFontIndex, mFamilyName,
1463
  nsCString fontName;
673
                       fontHeight, mFont->style, mFont->variant,
1464
  int wmode = 0;
674
                       mFont->weight, mFont->decorations);
1465
  FT_Face face = getFTFace();
1466
  NS_ENSURE_TRUE(face, NS_ERROR_NULL_POINTER);
1467
  char *cidFontName = FT2ToType8CidFontName(face, wmode);
1468
  NS_ENSURE_TRUE(cidFontName, NS_ERROR_FAILURE);
1469
  fontName.Assign(cidFontName);
1470
  psObj->setfont(fontName, fontHeight);
1471
  PR_Free(cidFontName);
1472
  
675
  return NS_OK;
1473
  return NS_OK;
676
}
1474
}
677
1475
678
#ifdef MOZ_MATHML
1476
#ifdef MOZ_MATHML
679
nsresult
1477
nsresult
680
nsFontPSAFM::GetBoundingMetrics(const char*        aString,
1478
nsFontPSXft::GetBoundingMetrics(const char*        aString,
681
                                PRUint32           aLength,
1479
                                     PRUint32           aLength,
682
                                nsBoundingMetrics& aBoundingMetrics)
1480
                                     nsBoundingMetrics& aBoundingMetrics)
683
{
1481
{
684
  return NS_ERROR_NOT_IMPLEMENTED;
1482
  return NS_ERROR_NOT_IMPLEMENTED;
685
}
1483
}
686
1484
687
nsresult
1485
nsresult
688
nsFontPSAFM::GetBoundingMetrics(const PRUnichar*   aString,
1486
nsFontPSXft::GetBoundingMetrics(const PRUnichar*   aString,
689
                                PRUint32           aLength,
1487
                                     PRUint32           aLength,
690
                                nsBoundingMetrics& aBoundingMetrics)
1488
                                     nsBoundingMetrics& aBoundingMetrics)
691
{
1489
{
692
  return NS_ERROR_NOT_IMPLEMENTED;
1490
  return NS_ERROR_NOT_IMPLEMENTED;
693
}
1491
}
694
#endif
1492
#endif //MOZ_MATHML
695
696
#ifdef MOZ_ENABLE_FREETYPE2
697
1493
698
#define WIDEN_8_TO_16_BUF_SIZE 1024
1494
#else
699
1495
700
PRBool
1496
PRBool
701
nsFontPSFreeType::CSSFontEnumCallback(const nsString& aFamily, PRBool aGeneric,
1497
nsFontPSFreeType::CSSFontEnumCallback(const nsString& aFamily, PRBool aGeneric,
Lines 713-719 Link Here
713
    nsCOMPtr<nsIPref> pref(do_GetService(NS_PREF_CONTRACTID, &rv));
1509
    nsCOMPtr<nsIPref> pref(do_GetService(NS_PREF_CONTRACTID, &rv));
714
    NS_ENSURE_SUCCESS(rv, PR_TRUE); // keep trying
1510
    NS_ENSURE_SUCCESS(rv, PR_TRUE); // keep trying
715
    nsCAutoString name("font.name.");
1511
    nsCAutoString name("font.name.");
716
    name.AppendWithConversion(aFamily.get());
1512
    LossyAppendUTF16toASCII(aFamily, name);
717
    name.Append(char('.'));
1513
    name.Append(char('.'));
718
    name.Append(fpi->lang);
1514
    name.Append(fpi->lang);
719
    pref->CopyCharPref(name.get(), getter_Copies(value));
1515
    pref->CopyCharPref(name.get(), getter_Copies(value));
Lines 734-740 Link Here
734
        ("generic font \"%s\" -> \"%s\"\n", name.get(), familyname.get()));
1530
        ("generic font \"%s\" -> \"%s\"\n", name.get(), familyname.get()));
735
  }
1531
  }
736
  else
1532
  else
737
    familyname.AppendWithConversion(aFamily);
1533
    LossyAppendUTF16toASCII(aFamily, familyname);
738
1534
739
  AddFontEntries(familyname, fpi->lang, fpi->weight, 
1535
  AddFontEntries(familyname, fpi->lang, fpi->weight, 
740
                 nsIFontCatalogService::kFCWidthAny, fpi->slant,
1536
                 nsIFontCatalogService::kFCWidthAny, fpi->slant,
Lines 1560-1565 Link Here
1560
#endif //MOZ_MATHML
2356
#endif //MOZ_MATHML
1561
2357
1562
#endif //MOZ_ENABLE_FREETYPE2
2358
#endif //MOZ_ENABLE_FREETYPE2
2359
#endif //MOZ_ENABLE_XFT
1563
2360
1564
// Implementation of nsPSFontGenerator
2361
// Implementation of nsPSFontGenerator
1565
nsPSFontGenerator::nsPSFontGenerator()
2362
nsPSFontGenerator::nsPSFontGenerator()
Lines 1593-1599 Link Here
1593
  }
2390
  }
1594
}
2391
}
1595
2392
2393
#ifdef MOZ_ENABLE_XFT
2394
nsXftType8Generator::nsXftType8Generator()
2395
{
2396
}
2397
2398
nsresult
2399
nsXftType8Generator::Init(nsXftEntry* aEntry)
2400
{
2401
  NS_ENSURE_TRUE(aEntry, NS_ERROR_FAILURE);
2402
  mEntry = aEntry;
2403
2404
  FT_Error error = FT_Init_FreeType(&mFreeTypeLibrary);
2405
  NS_ASSERTION(!error, "failed to initialize FreeType library");
2406
  if (error) {
2407
    mFreeTypeLibrary = nsnull;
2408
    return NS_ERROR_FAILURE;
2409
  }
2410
  error = FTC_Manager_New(mFreeTypeLibrary, 0, 0, 0, nsXftFaceRequester,
2411
                          NULL, &mFTCacheManager);
2412
  NS_ASSERTION(!error, "failed to create FreeType Cache manager");
2413
  if (error)
2414
    return NS_ERROR_FAILURE;
2415
2416
  return NS_OK;
2417
}
2418
2419
nsXftType8Generator::~nsXftType8Generator()
2420
{
2421
  FTC_Manager_Done(mFTCacheManager);
2422
2423
  if (FT_Done_FreeType(mFreeTypeLibrary))
2424
    return;
2425
2426
  mEntry = nsnull;
2427
}
2428
2429
void nsXftType8Generator::GeneratePSFont(FILE* aFile)
2430
{
2431
  FT_Error error;
2432
  FT_Face face = mEntry->mFace;
2433
2434
  if (face == nsnull) {
2435
    mImageDesc.font.face_id    = (void*)mEntry;
2436
    mImageDesc.font.pix_width  = 16;
2437
    mImageDesc.font.pix_height = 16;
2438
    mImageDesc.image_type = 0;
2439
    error = FTC_Manager_Lookup_Size(mFTCacheManager, &mImageDesc.font,
2440
                                    &face, nsnull);
2441
    if (error)
2442
      return;
2443
  }
2444
2445
  if (face == nsnull)
2446
    return;
2447
 
2448
  int wmode = 0;
2449
  if (!mSubset.IsEmpty())
2450
    FT2SubsetToType8(face, mSubset.get(), mSubset.Length(), wmode, aFile);
2451
}
2452
2453
#else
1596
#ifdef MOZ_ENABLE_FREETYPE2
2454
#ifdef MOZ_ENABLE_FREETYPE2
2455
1597
nsFT2Type8Generator::nsFT2Type8Generator()
2456
nsFT2Type8Generator::nsFT2Type8Generator()
1598
{
2457
{
1599
}
2458
}
Lines 1639-1643 Link Here
1639
  if (!mSubset.IsEmpty())
2498
  if (!mSubset.IsEmpty())
1640
    FT2SubsetToType8(face, mSubset.get(), mSubset.Length(), wmode, aFile);
2499
    FT2SubsetToType8(face, mSubset.get(), mSubset.Length(), wmode, aFile);
1641
}
2500
}
1642
#endif //MOZ_ENABLE_FREETYPE2
1643
2501
1644
-- gfx/src/ps/nsFontMetricsPS.h
2502
#endif //MOZ_ENABLE_FREETYPE2
2503
#endif //MOZ_ENABLE_XFT
2504
++ gfx/src/ps/nsFontMetricsPS.h
Lines 51-57 Link Here
51
#include "nsCRT.h"
51
#include "nsCRT.h"
52
#include "nsCompressedCharMap.h"
52
#include "nsCompressedCharMap.h"
53
#include "nsPostScriptObj.h"
53
#include "nsPostScriptObj.h"
54
#ifdef MOZ_ENABLE_XFT
55
#include <ft2build.h>
56
#include FT_FREETYPE_H
57
#include FT_GLYPH_H
58
#include FT_CACHE_H
59
#include FT_CACHE_IMAGE_H
60
#include FT_OUTLINE_H
61
#include FT_OUTLINE_H
62
#include FT_TRUETYPE_TABLES_H
63
#else
64
#ifdef MOZ_ENABLE_FREETYPE2
54
#include "nsIFontCatalogService.h"
65
#include "nsIFontCatalogService.h"
66
#endif
67
#endif
55
#include "nsVoidArray.h"
68
#include "nsVoidArray.h"
56
#include "nsHashtable.h"
69
#include "nsHashtable.h"
57
70
Lines 251-266 Link Here
251
  nsString     mFamilyName;
264
  nsString     mFamilyName;
252
};
265
};
253
266
267
268
#ifdef MOZ_ENABLE_XFT
269
270
#include <X11/Xft/Xft.h>
271
272
class nsXftEntry
273
{
274
public:
275
  nsXftEntry(FcPattern *aFontPattern);
276
  ~nsXftEntry() {}; 
277
278
  FT_Face       mFace;
279
  int           mFaceIndex;
280
  nsCString     mFontFileName;
281
  nsCString     mFamilyName;
282
  nsCString     mStyleName;
283
284
protected:
285
  nsXftEntry() {};
286
};
287
288
struct fontps {
289
  nsXftEntry *entry;
290
  nsFontPS   *fontps;
291
  FcCharSet  *charset;
292
};
293
294
struct fontPSInfo {
295
  nsVoidArray     *fontps;
296
  const nsFont*    nsfont;
297
  nsCAutoString    lang;
298
  nsHashtable     *alreadyLoaded;
299
  nsCStringArray   mFontList;
300
  nsAutoVoidArray  mFontIsGeneric;
301
  nsCString       *mGenericFont;
302
};
303
304
class nsFontPSXft : public nsFontPS
305
{
306
public:
307
  static nsFontPS* FindFont(PRUnichar aChar, const nsFont& aFont,
308
                            nsFontMetricsPS* aFontMetrics);
309
  nsresult         Init(nsXftEntry* aEntry,
310
                        nsPSFontGenerator* aPSFontGen);
311
  static PRBool CSSFontEnumCallback(const nsString& aFamily, PRBool aGeneric,
312
                                    void* aFpi);
313
314
  nsFontPSXft(const nsFont& aFont, nsFontMetricsPS* aFontMetrics);
315
  virtual ~nsFontPSXft();
316
  NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW
317
318
  nscoord GetWidth(const char* aString, PRUint32 aLength);
319
  nscoord GetWidth(const PRUnichar* aString, PRUint32 aLength);
320
  nscoord DrawString(nsRenderingContextPS* aContext,
321
                     nscoord aX, nscoord aY,
322
                     const char* aString, PRUint32 aLength);
323
  nscoord DrawString(nsRenderingContextPS* aContext,
324
                     nscoord aX, nscoord aY,
325
                     const PRUnichar* aString, PRUint32 aLength);
326
  nsresult RealizeFont(nsFontMetricsPS* aFontMetrics, float dev2app);
327
  nsresult SetupFont(nsRenderingContextPS* aContext);
328
329
#ifdef MOZ_MATHML
330
  nsresult
331
  GetBoundingMetrics(const char*        aString,
332
                     PRUint32           aLength,
333
                     nsBoundingMetrics& aBoundingMetrics);
334
  nsresult
335
  GetBoundingMetrics(const PRUnichar*   aString,
336
                     PRUint32           aLength,
337
                     nsBoundingMetrics& aBoundingMetrics);
338
#endif
339
340
  nsXftEntry *mEntry;
341
  FT_Face getFTFace();
342
343
protected:
344
  PRUint16        mPixelSize;
345
  FTC_Image_Desc  mImageDesc;
346
  FT_Library      mFreeTypeLibrary;
347
  FTC_Manager     mFTCacheManager;
348
  FTC_Image_Cache mImageCache;
349
350
  int     ascent();
351
  int     descent();
352
  PRBool  getXHeight(unsigned long &aVal);
353
  int     max_ascent();
354
  int     max_descent();
355
  int     max_width();
356
  PRBool  superscript_y(long &aVal);
357
  PRBool  subscript_y(long &aVal);
358
  PRBool  underlinePosition(long &aVal);
359
  PRBool  underline_thickness(unsigned long &aVal);
360
  nsPSFontGenerator*  mPSFontGenerator;
361
};
362
363
#else
364
365
#ifdef MOZ_ENABLE_FREETYPE2
366
#include "nsIFreeType2.h"
367
254
typedef struct {
368
typedef struct {
255
  nsITrueTypeFontCatalogEntry *entry;
369
  nsITrueTypeFontCatalogEntry *entry;
256
  nsFontPS *fontps;
370
  nsFontPS *fontps;
257
  unsigned short *ccmap;
371
  unsigned short *ccmap;
258
} fontps;
372
} fontps;
259
373
260
#ifdef MOZ_ENABLE_FREETYPE2
261
262
#include "nsIFreeType2.h"
263
264
typedef struct {
374
typedef struct {
265
  nsVoidArray *fontps;
375
  nsVoidArray *fontps;
266
  const nsFont* nsfont;
376
  const nsFont* nsfont;
Lines 338-344 Link Here
338
  nsPSFontGenerator*  mPSFontGenerator;
448
  nsPSFontGenerator*  mPSFontGenerator;
339
};
449
};
340
450
341
#endif
451
#else // !FREETYPE2 && !XFT
452
typedef struct {
453
  nsFontPS   *fontps;
454
} fontps;
455
#endif // MOZ_ENABLE_FREETYPE2
456
#endif   // MOZ_ENABLE_XFT
342
457
343
class nsPSFontGenerator {
458
class nsPSFontGenerator {
344
public:
459
public:
Lines 352-357 Link Here
352
  nsString mSubset;
467
  nsString mSubset;
353
};
468
};
354
469
470
471
#ifdef MOZ_ENABLE_XFT
472
473
class nsXftType8Generator : public nsPSFontGenerator {
474
public:
475
  nsXftType8Generator();
476
  ~nsXftType8Generator();
477
  nsresult Init(nsXftEntry* aFce);
478
  void  GeneratePSFont(FILE* aFile);
479
480
protected:
481
  nsXftEntry *mEntry;
482
  FTC_Image_Desc  mImageDesc;
483
  FT_Library      mFreeTypeLibrary;
484
  FTC_Manager     mFTCacheManager;
485
};
486
#else
355
#ifdef MOZ_ENABLE_FREETYPE2
487
#ifdef MOZ_ENABLE_FREETYPE2
356
class nsFT2Type8Generator : public nsPSFontGenerator {
488
class nsFT2Type8Generator : public nsPSFontGenerator {
357
public:
489
public:
Lines 365-371 Link Here
365
  nsCOMPtr<nsIFreeType2> mFt2;
497
  nsCOMPtr<nsIFreeType2> mFt2;
366
  FTC_Image_Desc  mImageDesc;
498
  FTC_Image_Desc  mImageDesc;
367
};
499
};
368
#endif
500
#endif   // MOZ_ENABLE_FREETYPE2
501
#endif   // MOZ_ENABLE_XFT
369
502
370
#endif
503
#endif
371
504
372
-- gfx/src/ps/nsType1.cpp
505
++ gfx/src/ps/nsType1.cpp
Lines 71-77 Link Here
71
static const PRUint16 type1_encryption_c2 = TYPE1_ENCRYPTION_C2;
71
static const PRUint16 type1_encryption_c2 = TYPE1_ENCRYPTION_C2;
72
72
73
typedef struct {
73
typedef struct {
74
#ifndef MOZ_ENABLE_XFT
74
  nsIFreeType2  *ft2;
75
  nsIFreeType2  *ft2;
76
#endif
75
  FT_Face        face;
77
  FT_Face        face;
76
  int            elm_cnt;
78
  int            elm_cnt;
77
  int            len;
79
  int            len;
Lines 181-197 Link Here
181
  FT_GlyphSlot slot;
183
  FT_GlyphSlot slot;
182
  FT_Glyph glyph;
184
  FT_Glyph glyph;
183
  FT_BBox bbox;
185
  FT_BBox bbox;
184
  nsresult rv;
185
186
186
  slot = aFti->face->glyph;
187
  slot = aFti->face->glyph;
187
188
188
  rv = aFti->ft2->GetGlyph(slot, &glyph);
189
#ifdef MOZ_ENABLE_XFT
190
  FT_Error error = FT_Get_Glyph(slot, &glyph);
191
  if (error) {
192
    NS_ERROR("sideWidthAndBearing failed to get glyph");
193
    return PR_FALSE;
194
  }
195
  FT_Glyph_Get_CBox(glyph, ft_glyph_bbox_unscaled, &bbox);
196
#else
197
  nsresult rv = aFti->ft2->GetGlyph(slot, &glyph);
189
  if (NS_FAILED(rv)) {
198
  if (NS_FAILED(rv)) {
190
    NS_ERROR("sideWidthAndBearing failed to get glyph");
199
    NS_ERROR("sideWidthAndBearing failed to get glyph");
191
    return PR_FALSE;
200
    return PR_FALSE;
192
  }
201
  }
193
  aFti->ft2->GlyphGetCBox(glyph, ft_glyph_bbox_unscaled, &bbox);
202
  aFti->ft2->GlyphGetCBox(glyph, ft_glyph_bbox_unscaled, &bbox);
194
203
#endif
195
204
196
  if (aFti->wmode == 0)
205
  if (aFti->wmode == 0)
197
    aw = toCS(upm, slot->metrics.horiAdvance);
206
    aw = toCS(upm, slot->metrics.horiAdvance);
Lines 371-391 Link Here
371
};
380
};
372
381
373
FT_Error
382
FT_Error
383
#ifdef MOZ_ENABLE_XFT
384
FT2GlyphToType1CharString(FT_Face aFace, PRUint32 aGlyphID,
385
                          int aWmode, int aLenIV, unsigned char *aBuf)
386
#else
374
FT2GlyphToType1CharString(nsIFreeType2 *aFt2, FT_Face aFace, PRUint32 aGlyphID,
387
FT2GlyphToType1CharString(nsIFreeType2 *aFt2, FT_Face aFace, PRUint32 aGlyphID,
375
                          int aWmode, int aLenIV, unsigned char *aBuf)
388
                          int aWmode, int aLenIV, unsigned char *aBuf)
389
#endif
376
{
390
{
377
  int j;
391
  int j;
378
  FT_Int32 flags = FT_LOAD_NO_BITMAP | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
392
  FT_Int32 flags = FT_LOAD_NO_BITMAP | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
379
  FT_GlyphSlot slot;
393
  FT_GlyphSlot slot;
380
  unsigned char *start = aBuf;
394
  unsigned char *start = aBuf;
381
  FT2PT1_info fti;
395
  FT2PT1_info fti;
382
  nsresult rv;
383
396
384
  rv = aFt2->LoadGlyph(aFace, aGlyphID, flags);
397
#ifdef MOZ_ENABLE_XFT
398
  FT_Error error = FT_Load_Glyph(aFace, aGlyphID, flags);
399
  if (error) {
400
    NS_ERROR("failed to load aGlyphID");
401
    return error;
402
  }
403
#else
404
  nsresult rv = aFt2->LoadGlyph(aFace, aGlyphID, flags);
385
  if (NS_FAILED(rv)) {
405
  if (NS_FAILED(rv)) {
386
    NS_ERROR("failed to load aGlyphID");
406
    NS_ERROR("failed to load aGlyphID");
387
    return 1;
407
    return 1;
388
  }
408
  }
409
#endif
389
  slot = aFace->glyph;
410
  slot = aFace->glyph;
390
411
391
  if (slot->format != ft_glyph_format_outline) {
412
  if (slot->format != ft_glyph_format_outline) {
Lines 393-399 Link Here
393
    return 1;
414
    return 1;
394
  }
415
  }
395
416
417
#ifndef MOZ_ENABLE_XFT
396
  fti.ft2     = aFt2;
418
  fti.ft2     = aFt2;
419
#endif
397
  fti.face    = aFace;
420
  fti.face    = aFace;
398
  fti.buf     = aBuf;
421
  fti.buf     = aBuf;
399
  fti.elm_cnt = 0;
422
  fti.elm_cnt = 0;
Lines 404-414 Link Here
404
  for (j=0; j< aLenIV; j++) {
427
  for (j=0; j< aLenIV; j++) {
405
    fti.len += ecsi(&fti.buf, 0);
428
    fti.len += ecsi(&fti.buf, 0);
406
  }
429
  }
430
#ifdef MOZ_ENABLE_XFT
431
  if (FT_Outline_Decompose(&slot->outline, &ft_outline_funcs, &fti))  {
432
    NS_ERROR("error decomposing aGlyphID");
433
    return 1;
434
  }
435
#else
407
  rv = aFt2->OutlineDecompose(&slot->outline, &ft_outline_funcs, &fti);
436
  rv = aFt2->OutlineDecompose(&slot->outline, &ft_outline_funcs, &fti);
408
  if (NS_FAILED(rv)) {
437
  if (NS_FAILED(rv)) {
409
    NS_ERROR("error decomposing aGlyphID");
438
    NS_ERROR("error decomposing aGlyphID");
410
    return 1;
439
    return 1;
411
  }
440
  }
441
#endif
412
442
413
  if (fti.elm_cnt) {
443
  if (fti.elm_cnt) {
414
    fti.len += csc(&fti.buf, T1_CLOSEPATH);
444
    fti.len += csc(&fti.buf, T1_CLOSEPATH);
415
-- gfx/src/ps/nsType1.h
445
++ gfx/src/ps/nsType1.h
Lines 54-60 Link Here
54
54
55
#include <stdio.h>
55
#include <stdio.h>
56
#include "nspr.h"
56
#include "nspr.h"
57
#ifdef MOZ_ENABLE_XFT
58
#include "nsISupports.h"
59
#include <ft2build.h>
60
#include FT_FREETYPE_H
61
#include FT_GLYPH_H
62
#include FT_OUTLINE_H
63
#else
57
#include "nsIFreeType2.h"
64
#include "nsIFreeType2.h"
65
#endif
58
66
59
/* to/from Character Space */
67
/* to/from Character Space */
60
inline int
68
inline int
Lines 95-101 Link Here
95
#define TYPE1_ENCRYPTION_C1  52845
103
#define TYPE1_ENCRYPTION_C1  52845
96
#define TYPE1_ENCRYPTION_C2  22719
104
#define TYPE1_ENCRYPTION_C2  22719
97
105
106
#ifdef MOZ_ENABLE_XFT  
107
FT_Error FT2GlyphToType1CharString(FT_Face aFace,
108
#else /* MOZ_ENABLE_FREETYPE2 */
98
FT_Error FT2GlyphToType1CharString(nsIFreeType2 *aFt2, FT_Face aFace,
109
FT_Error FT2GlyphToType1CharString(nsIFreeType2 *aFt2, FT_Face aFace,
110
#endif
99
                                   PRUint32 aGlyphID, int aWmode, int aLenIV,
111
                                   PRUint32 aGlyphID, int aWmode, int aLenIV,
100
                                   unsigned char *aBuf);
112
                                   unsigned char *aBuf);
101
113
102
-- gfx/src/ps/nsType8.cpp
114
++ gfx/src/ps/nsType8.cpp
Lines 53-59 Link Here
53
#include "nsCidMap.h"
53
#include "nsCidMap.h"
54
#include "nsType1.h"
54
#include "nsType1.h"
55
#include "nsType8.h"
55
#include "nsType8.h"
56
#ifndef MOZ_ENABLE_XFT
56
#include "nsIFreeType2.h"
57
#include "nsIFreeType2.h"
58
#endif
57
#include "nsIServiceManager.h"
59
#include "nsIServiceManager.h"
58
#include "nsISignatureVerifier.h"
60
#include "nsISignatureVerifier.h"
59
#include "plbase64.h"
61
#include "plbase64.h"
Lines 67-73 Link Here
67
static void hex_out(unsigned char *buf, PRUint32 n, FILE *f, PRUint32 *pos);
69
static void hex_out(unsigned char *buf, PRUint32 n, FILE *f, PRUint32 *pos);
68
70
69
static void flatten_name(char *aToName);
71
static void flatten_name(char *aToName);
72
#ifdef MOZ_ENABLE_XFT
73
static int FT2SubsetToCidKeyedType1(FT_Face aFace,
74
#else
70
static int FT2SubsetToCidKeyedType1(nsIFreeType2 *aFt2, FT_Face aFace,
75
static int FT2SubsetToCidKeyedType1(nsIFreeType2 *aFt2, FT_Face aFace,
76
#endif
71
                                    const PRUnichar *aCharIDs, int aLen,
77
                                    const PRUnichar *aCharIDs, int aLen,
72
                                    const char *aFontName,
78
                                    const char *aFontName,
73
                                    const char *aRegistry,
79
                                    const char *aRegistry,
Lines 319-330 Link Here
319
  int cmap_type = 0;
325
  int cmap_type = 0;
320
  PRBool status = PR_FALSE;
326
  PRBool status = PR_FALSE;
321
327
328
#ifndef MOZ_ENABLE_XFT
322
  nsresult rv;
329
  nsresult rv;
323
  nsCOMPtr<nsIFreeType2> ft2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
330
  nsCOMPtr<nsIFreeType2> ft2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
324
  if (NS_FAILED(rv)) {
331
  if (NS_FAILED(rv)) {
325
    NS_ERROR("Failed to get nsIFreeType2 service");
332
    NS_ERROR("Failed to get nsIFreeType2 service");
326
    goto done;
333
    goto done;
327
  }
334
  }
335
#endif
328
336
329
  if ((aNumChars+1) > sizeof(CIDs_buf)/sizeof(CIDs_buf[0]))
337
  if ((aNumChars+1) > sizeof(CIDs_buf)/sizeof(CIDs_buf[0]))
330
    CIDs = (PRUint32 *)PR_Malloc((aNumChars+1)*sizeof(CIDs_buf[0]));
338
    CIDs = (PRUint32 *)PR_Malloc((aNumChars+1)*sizeof(CIDs_buf[0]));
Lines 368-374 Link Here
368
  WriteCmapFooter(aFile);
376
  WriteCmapFooter(aFile);
369
377
370
  /* output the Type 8 CID font */
378
  /* output the Type 8 CID font */
379
#ifdef MOZ_ENABLE_XFT
380
  FT2SubsetToCidKeyedType1(aFace, aCharIDs, aNumChars, fontname,
381
#else
371
  FT2SubsetToCidKeyedType1(ft2, aFace, aCharIDs, aNumChars, fontname,
382
  FT2SubsetToCidKeyedType1(ft2, aFace, aCharIDs, aNumChars, fontname,
383
#endif
372
                           registry, encoding, supplement, aWmode, lenIV,
384
                           registry, encoding, supplement, aWmode, lenIV,
373
                           aFile);
385
                           aFile);
374
  fprintf(aFile, "\n");
386
  fprintf(aFile, "\n");
Lines 392-398 Link Here
392
}
404
}
393
405
394
static PRBool
406
static PRBool
407
#ifdef MOZ_ENABLE_XFT
408
FT2SubsetToCidKeyedType1(FT_Face aFace,
409
#else
395
FT2SubsetToCidKeyedType1(nsIFreeType2 *aFt2, FT_Face aFace,
410
FT2SubsetToCidKeyedType1(nsIFreeType2 *aFt2, FT_Face aFace,
411
#endif
396
                         const PRUnichar *aCharIDs,
412
                         const PRUnichar *aCharIDs,
397
                         int aLen, const char *aFontName,
413
                         int aLen, const char *aFontName,
398
                         const char *aRegistry, const char *aEncoding,
414
                         const char *aRegistry, const char *aEncoding,
Lines 445-460 Link Here
445
  fprintf(aFile, "\n");
461
  fprintf(aFile, "\n");
446
462
447
  /* measure the notdef glyph length */
463
  /* measure the notdef glyph length */
464
#ifdef MOZ_ENABLE_XFT
465
  cmapinfo[0] = FT2GlyphToType1CharString(aFace, 0, aWmode, aLenIV, NULL);
466
#else
448
  cmapinfo[0] = FT2GlyphToType1CharString(aFt2, aFace, 0, aWmode, aLenIV, NULL);
467
  cmapinfo[0] = FT2GlyphToType1CharString(aFt2, aFace, 0, aWmode, aLenIV, NULL);
468
#endif
449
  num_charstrings = 1;
469
  num_charstrings = 1;
450
  charstrings_len = cmapinfo[0];
470
  charstrings_len = cmapinfo[0];
451
471
452
  /* get charstring lengths */
472
  /* get charstring lengths */
453
  max_charstring = cmapinfo[0];
473
  max_charstring = cmapinfo[0];
454
  for (i=0; i<aLen; i++) {
474
  for (i=0; i<aLen; i++) {
475
#ifdef MOZ_ENABLE_XFT
476
    glyphID = FT_Get_Char_Index(aFace, aCharIDs[i]);
477
    cmapinfo[i+1] = FT2GlyphToType1CharString(aFace, glyphID, aWmode,
478
                                              aLenIV, NULL);
479
#else
455
    aFt2->GetCharIndex(aFace, aCharIDs[i], &glyphID);
480
    aFt2->GetCharIndex(aFace, aCharIDs[i], &glyphID);
456
    cmapinfo[i+1] = FT2GlyphToType1CharString(aFt2, aFace, glyphID, aWmode,
481
    cmapinfo[i+1] = FT2GlyphToType1CharString(aFt2, aFace, glyphID, aWmode,
457
                                              aLenIV, NULL);
482
                                              aLenIV, NULL);
483
#endif
458
    charstrings_len += cmapinfo[i+1];
484
    charstrings_len += cmapinfo[i+1];
459
    if (cmapinfo[i+1])
485
    if (cmapinfo[i+1])
460
      num_charstrings++;
486
      num_charstrings++;
Lines 554-568 Link Here
554
  // output the charStrings
580
  // output the charStrings
555
  //
581
  //
556
  // output the notdef glyph
582
  // output the notdef glyph
583
#ifdef MOZ_ENABLE_XFT
584
  charstring_len = FT2GlyphToType1CharString(aFace, 0, aWmode, aLenIV,
585
                                             charstring);
586
#else
557
  charstring_len = FT2GlyphToType1CharString(aFt2, aFace, 0, aWmode, aLenIV,
587
  charstring_len = FT2GlyphToType1CharString(aFt2, aFace, 0, aWmode, aLenIV,
558
                                             charstring);
588
                                             charstring);
589
#endif
559
  hex_out(charstring, charstring_len, aFile, &line_pos);
590
  hex_out(charstring, charstring_len, aFile, &line_pos);
560
591
561
  /* output the charstrings for the glyphs */
592
  /* output the charstrings for the glyphs */
562
  for (i=0; i<aLen; i++) {
593
  for (i=0; i<aLen; i++) {
594
#ifdef MOZ_ENABLE_XFT
595
    glyphID = FT_Get_Char_Index(aFace, aCharIDs[i]);
596
    charstring_len = FT2GlyphToType1CharString(aFace, glyphID, aWmode,
597
                                               aLenIV, charstring);
598
#else
563
    aFt2->GetCharIndex(aFace, aCharIDs[i], &glyphID);
599
    aFt2->GetCharIndex(aFace, aCharIDs[i], &glyphID);
564
    charstring_len = FT2GlyphToType1CharString(aFt2, aFace, glyphID, aWmode,
600
    charstring_len = FT2GlyphToType1CharString(aFt2, aFace, glyphID, aWmode,
565
                                               aLenIV, charstring);
601
                                               aLenIV, charstring);
602
#endif
566
    NS_ASSERTION(charstring_len==cmapinfo[i+1], "glyph data changed");
603
    NS_ASSERTION(charstring_len==cmapinfo[i+1], "glyph data changed");
567
    hex_out(charstring, charstring_len, aFile, &line_pos);
604
    hex_out(charstring, charstring_len, aFile, &line_pos);
568
  }
605
  }
569
-- gfx/src/ps/nsType8.h
606
++ gfx/src/ps/nsType8.h
Lines 43-49 Link Here
43
43
44
#include <stdio.h>
44
#include <stdio.h>
45
#include "nspr.h"
45
#include "nspr.h"
46
#ifdef MOZ_ENABLE_XFT
47
#include <ft2build.h>
48
#include FT_FREETYPE_H
49
#include FT_GLYPH_H
50
#include FT_CACHE_H
51
#include FT_CACHE_IMAGE_H
52
#include FT_OUTLINE_H
53
// macros to handle FreeType2 26.6 numbers (26 bit number with 6 bit fraction)
54
#define FT_REG_TO_16_16(x) ((x)<<16)
55
#ifndef FT_MulFix
56
#define FT_MulFix(v, s) (((v)*(s))>>16)
57
#endif
58
#define FT_ROUND(x) (((x) + 32) & ~63) // 63 = 2^6 - 1
59
#define FT_TRUNC(x) ((x) >> 6)
60
#define FT_DESIGN_UNITS_TO_PIXELS(v, s) FT_TRUNC(FT_ROUND(FT_MulFix((v) , (s))))
61
#else /* MOZ_ENABLE_FREETYPE2 */
46
#include "nsIFreeType2.h"
62
#include "nsIFreeType2.h"
63
#endif /* MOZ_ENABLE_XFT */
47
64
48
void AddCIDCheckCode(FILE *aFile);
65
void AddCIDCheckCode(FILE *aFile);
49
PRBool FT2SubsetToType8(FT_Face aFace, const PRUnichar *aCharIDs,
66
PRBool FT2SubsetToType8(FT_Face aFace, const PRUnichar *aCharIDs,
50
-- gfx/src/shared/nsRenderingContextImpl.cpp
67
++ gfx/src/shared/nsRenderingContextImpl.cpp
Lines 938-940 Link Here
938
{
938
{
939
    return NS_OK;
939
    return NS_OK;
940
}
940
}
941
-- gfx/src/shared/Makefile.in
941
942
NS_IMETHODIMP
943
nsRenderingContextImpl::GetClusterInfo(const PRUnichar *aText,
944
                                       PRUint32 aLength,
945
                                       PRUint32 *aClusterStarts)
946
{
947
  return NS_ERROR_NOT_IMPLEMENTED;
948
}
949
950
NS_IMETHODIMP
951
nsRenderingContextImpl::GetPosition(const PRUnichar *aText,
952
                         PRUint32 aLength,
953
                         nscoord aCoord,
954
                         PRUint32 &aInx)
955
{
956
  return NS_ERROR_NOT_IMPLEMENTED;
957
}
958
959
NS_IMETHODIMP
960
nsRenderingContextImpl::GetRangeWidth(const PRUnichar *aText,
961
                                      PRUint32 aLength,
962
                                      PRUint32 aStart,
963
                                      PRUint32 aEnd,
964
                                      PRUint32 &aWidth)
965
{
966
  return NS_ERROR_NOT_IMPLEMENTED;
967
}
968
969
  
970
++ gfx/src/shared/Makefile.in
Lines 54-59 Link Here
54
54
55
LOCAL_INCLUDES = -I$(srcdir)/.. \
55
LOCAL_INCLUDES = -I$(srcdir)/.. \
56
                 $(NULL)
56
                 $(NULL)
57
  
58
ifdef MOZ_ENABLE_XFT
59
CPPSRCS += nsFontConfigUtils.cpp
60
LOCAL_INCLUDES += $(MOZ_XFT_CFLAGS)
61
endif
57
62
58
include $(topsrcdir)/config/rules.mk
63
include $(topsrcdir)/config/rules.mk
59
64
60
-- gfx/src/shared/nsFontConfigUtils.cpp
65
++ gfx/src/shared/nsFontConfigUtils.cpp
Line 0 Link Here
0
-- gfx/src/shared/nsFontConfigUtils.h
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
 *
5
 * The contents of this file are subject to the Mozilla Public License Version
6
 * 1.1 (the "License"); you may not use this file except in compliance with
7
 * the License. You may obtain a copy of the License at
8
 * http://www.mozilla.org/MPL/
9
 *
10
 * Software distributed under the License is distributed on an "AS IS" basis,
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
 * for the specific language governing rights and limitations under the
13
 * License.
14
 *
15
 * The Original Code is mozilla.org code.
16
 *
17
 * The Initial Developer of the Original Code is Christopher Blizzard
18
 * <blizzard@mozilla.org>.  Portions created by the Initial Developer
19
 * are Copyright (C) 2002 the Initial Developer. All Rights Reserved.
20
 *
21
 * Contributor(s):
22
 *
23
 * Alternatively, the contents of this file may be used under the terms of
24
 * either of the GNU General Public License Version 2 or later (the "GPL"),
25
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26
 * in which case the provisions of the GPL or the LGPL are applicable instead
27
 * of those above. If you wish to allow use of your version of this file only
28
 * under the terms of either the GPL or the LGPL, and not to allow others to
29
 * use your version of this file under the terms of the MPL, indicate your
30
 * decision by deleting the provisions above and replace them with the notice
31
 * and other provisions required by the GPL or the LGPL. If you do not delete
32
 * the provisions above, a recipient may use your version of this file under
33
 * the terms of any one of the MPL, the GPL or the LGPL.
34
 *
35
 * ***** END LICENSE BLOCK ***** */
36
37
#include "nsFontConfigUtils.h"
38
39
struct MozXftLangGroup {
40
    const char    *mozLangGroup;
41
    FcChar32       character;
42
    const FcChar8 *XftLang;
43
};
44
45
const MozXftLangGroup MozXftLangGroups[] = {
46
    { "x-western",      0x0041, (const FcChar8 *)"en" },
47
    { "x-central-euro", 0x0100, (const FcChar8 *)"pl" },
48
    { "x-cyrillic",     0x0411, (const FcChar8 *)"ru" },
49
    { "x-baltic",       0x0104, (const FcChar8 *)"lv" },
50
    { "x-devanagari",   0x0905, (const FcChar8 *)"hi" },
51
    { "x-tamil",        0x0B85, (const FcChar8 *)"ta" },
52
    { "x-unicode",      0x0000,                  0    },
53
    { "x-user-def",     0x0000,                  0    },
54
};
55
56
#define NUM_XFT_LANG_GROUPS (sizeof (MozXftLangGroups) / \
57
                             sizeof (MozXftLangGroups[0]))
58
59
static 
60
void FFREToFamily(nsACString &aFFREName, nsACString &oFamily);
61
62
static
63
const MozXftLangGroup*
64
FindFCLangGroup (nsACString &aLangGroup)
65
{
66
    for (unsigned int i=0; i < NUM_XFT_LANG_GROUPS; ++i) {
67
        if (aLangGroup.Equals(MozXftLangGroups[i].mozLangGroup,
68
                              nsCaseInsensitiveCStringComparator())) {
69
            return &MozXftLangGroups[i];
70
        }
71
    }
72
73
    return nsnull;
74
}
75
76
int
77
NS_CalculateSlant(PRUint8 aStyle)
78
{
79
    int fcSlant;
80
81
    switch(aStyle) {
82
    case NS_FONT_STYLE_ITALIC:
83
        fcSlant = FC_SLANT_ITALIC;
84
        break;
85
    case NS_FONT_STYLE_OBLIQUE:
86
        fcSlant = FC_SLANT_OBLIQUE;
87
        break;
88
    default:
89
        fcSlant = FC_SLANT_ROMAN;
90
        break;
91
    }
92
93
    return fcSlant;
94
}
95
96
int
97
NS_CalculateWeight (PRUint16 aWeight)
98
{
99
    /*
100
     * weights come in two parts crammed into one
101
     * integer -- the "base" weight is weight / 100,
102
     * the rest of the value is the "offset" from that
103
     * weight -- the number of steps to move to adjust
104
     * the weight in the list of supported font weights,
105
     * this value can be negative or positive.
106
     */
107
    PRInt32 baseWeight = (aWeight + 50) / 100;
108
    PRInt32 offset = aWeight - baseWeight * 100;
109
110
    /* clip weights to range 0 to 9 */
111
    if (baseWeight < 0)
112
        baseWeight = 0;
113
    if (baseWeight > 9)
114
        baseWeight = 9;
115
116
    /* Map from weight value to fcWeights index */
117
    static int fcWeightLookup[10] = {
118
        0, 0, 0, 0, 1, 1, 2, 3, 3, 4,
119
    };
120
121
    PRInt32 fcWeight = fcWeightLookup[baseWeight];
122
123
    /*
124
     * adjust by the offset value, make sure we stay inside the
125
     * fcWeights table
126
     */
127
    fcWeight += offset;
128
    if (fcWeight < 0)
129
        fcWeight = 0;
130
    if (fcWeight > 4)
131
        fcWeight = 4;
132
133
    /* Map to final FC_WEIGHT value */
134
    static int fcWeights[5] = {
135
        FC_WEIGHT_LIGHT,      /* 0 */
136
        FC_WEIGHT_MEDIUM,     /* 1 */
137
        FC_WEIGHT_DEMIBOLD,   /* 2 */
138
        FC_WEIGHT_BOLD,       /* 3 */
139
        FC_WEIGHT_BLACK,      /* 4 */
140
    };
141
142
    return fcWeights[fcWeight];
143
}
144
145
void
146
NS_AddLangGroup(FcPattern *aPattern, nsIAtom *aLangGroup)
147
{
148
    // Find the FC lang group for this lang group
149
    nsCAutoString cname;
150
    aLangGroup->ToUTF8String(cname);
151
152
    // see if the lang group needs to be translated from mozilla's
153
    // internal mapping into fontconfig's
154
    const struct MozXftLangGroup *langGroup;
155
    langGroup = FindFCLangGroup(cname);
156
157
    // if there's no lang group, just use the lang group as it was
158
    // passed to us
159
    //
160
    // we're casting away the const here for the strings - should be
161
    // safe.
162
    if (!langGroup)
163
        FcPatternAddString(aPattern, FC_LANG, (FcChar8 *)cname.get());
164
    else if (langGroup->XftLang)
165
        FcPatternAddString(aPattern, FC_LANG, (FcChar8 *)langGroup->XftLang);
166
}
167
168
void
169
NS_AddFFRE(FcPattern *aPattern, nsCString *aFamily, PRBool aWeak)
170
{
171
    nsCAutoString family;
172
    FFREToFamily(*aFamily, family);
173
174
    FcValue v;
175
    v.type = FcTypeString;
176
    // casting away the const here, should be safe
177
    v.u.s = (FcChar8 *)family.get();
178
179
    if (aWeak)
180
        FcPatternAddWeak(aPattern, FC_FAMILY, v, FcTrue);
181
    else
182
        FcPatternAdd(aPattern, FC_FAMILY, v, FcTrue);
183
}
184
185
/* static */
186
void
187
FFREToFamily(nsACString &aFFREName, nsACString &oFamily)
188
{
189
  if (NS_FFRECountHyphens(aFFREName) == 3) {
190
      PRInt32 familyHyphen = aFFREName.FindChar('-') + 1;
191
      PRInt32 registryHyphen = aFFREName.FindChar('-',familyHyphen);
192
      oFamily.Append(Substring(aFFREName, familyHyphen,
193
                               registryHyphen-familyHyphen));
194
  }
195
  else {
196
      oFamily.Append(aFFREName);
197
  }
198
}
199
200
int
201
NS_FFRECountHyphens (nsACString &aFFREName)
202
{
203
    int h = 0;
204
    PRInt32 hyphen = 0;
205
    while ((hyphen = aFFREName.FindChar('-', hyphen)) >= 0) {
206
        ++h;
207
        ++hyphen;
208
    }
209
    return h;
210
}
211
212
PRBool
213
NS_IsASCIIFontName(const nsString& aName)
214
{
215
    PRUint32 len = aName.Length();
216
    const PRUnichar* str = aName.get();
217
    for (PRUint32 i = 0; i < len; i++) {
218
        /*
219
         * X font names are printable ASCII, ignore others (for now)
220
         */
221
        if ((str[i] < 0x20) || (str[i] > 0x7E)) {
222
            return PR_FALSE;
223
        }
224
    }
225
226
    return PR_TRUE;
227
}
228
++ gfx/src/shared/nsFontConfigUtils.h
Line 0 Link Here
0
-- gfx/src/x11shared/nsFontDebug.h
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
 *
5
 * The contents of this file are subject to the Mozilla Public License Version
6
 * 1.1 (the "License"); you may not use this file except in compliance with
7
 * the License. You may obtain a copy of the License at
8
 * http://www.mozilla.org/MPL/
9
 *
10
 * Software distributed under the License is distributed on an "AS IS" basis,
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
 * for the specific language governing rights and limitations under the
13
 * License.
14
 *
15
 * The Original Code is mozilla.org code.
16
 *
17
 * The Initial Developer of the Original Code is Christopher Blizzard
18
 * <blizzard@mozilla.org>.  Portions created by the Initial Developer
19
 * are Copyright (C) 2002 the Initial Developer. All Rights Reserved.
20
 *
21
 * Contributor(s):
22
 *
23
 * Alternatively, the contents of this file may be used under the terms of
24
 * either of the GNU General Public License Version 2 or later (the "GPL"),
25
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26
 * in which case the provisions of the GPL or the LGPL are applicable instead
27
 * of those above. If you wish to allow use of your version of this file only
28
 * under the terms of either the GPL or the LGPL, and not to allow others to
29
 * use your version of this file under the terms of the MPL, indicate your
30
 * decision by deleting the provisions above and replace them with the notice
31
 * and other provisions required by the GPL or the LGPL. If you do not delete
32
 * the provisions above, a recipient may use your version of this file under
33
 * the terms of any one of the MPL, the GPL or the LGPL.
34
 *
35
 * ***** END LICENSE BLOCK ***** */
36
37
#ifndef nsFontConfigUtils_h__
38
#define nsFontConfigUtils_h__
39
40
#include "nspr.h"
41
#include "nsString.h"
42
#include "nsIAtom.h"
43
#include "nsFont.h"
44
45
#include <fontconfig/fontconfig.h>
46
47
extern int     NS_CalculateSlant   (PRUint8  aStyle);
48
extern int     NS_CalculateWeight  (PRUint16 aWeight);
49
extern void    NS_AddLangGroup     (FcPattern *aPattern, nsIAtom *aLangGroup);
50
extern void    NS_AddFFRE          (FcPattern *aPattern, nsCString *aFamily,
51
                                    PRBool aWeak);
52
extern int     NS_FFRECountHyphens (nsACString &aFFREName);
53
extern PRBool  NS_IsASCIIFontName  (const nsString& aName);
54
#endif
55
56
++ gfx/src/x11shared/nsFontDebug.h
Lines 97-103 Link Here
97
#define FREETYPE_FONT_PRINTF(x) \
97
#define FREETYPE_FONT_PRINTF(x) \
98
         DEBUG_PRINTF_MACRO(x, NS_FONT_DEBUG_FREETYPE_FONT)
98
         DEBUG_PRINTF_MACRO(x, NS_FONT_DEBUG_FREETYPE_FONT)
99
99
100
#ifdef MOZ_ENABLE_FREETYPE2
100
extern PRUint32 gFontDebug;
101
extern PRUint32 gFontDebug;
102
#endif
101
103
102
#endif
104
#endif
103
105
104
-- gfx/src/xlib/nsFontMetricsXlib.cpp
106
++ gfx/src/xlib/nsFontMetricsXlib.cpp
Lines 64-73 Link Here
64
#include "nsReadableUtils.h"
64
#include "nsReadableUtils.h"
65
#include "nsAString.h"
65
#include "nsAString.h"
66
#include "nsXPIDLString.h"
66
#include "nsXPIDLString.h"
67
#ifdef USE_FREETYPE
67
#ifdef MOZ_ENABLE_FREETYPE2
68
#include "nsFT2FontCatalog.h"
68
#include "nsFT2FontCatalog.h"
69
#include "nsFreeType.h"
69
#include "nsFreeType.h"
70
#endif /* USE_FREETYPE */
70
#endif /* MOZ_ENABLE_FREETYPE2 */
71
#ifdef USE_X11SHARED_CODE
71
#ifdef USE_X11SHARED_CODE
72
#include "nsXFontNormal.h"
72
#include "nsXFontNormal.h"
73
#endif /* USE_X11SHARED_CODE */
73
#endif /* USE_X11SHARED_CODE */
Lines 113-121 Link Here
113
113
114
/* Local prototypes */
114
/* Local prototypes */
115
static PRBool                 FreeNode(nsHashKey* aKey, void* aData, void* aClosure);
115
static PRBool                 FreeNode(nsHashKey* aKey, void* aData, void* aClosure);
116
#ifdef USE_FREETYPE
116
#ifdef MOZ_ENABLE_FREETYPE2
117
static void                   CharSetNameToCodeRangeBits(const char*, PRUint32*, PRUint32*);
117
static void                   CharSetNameToCodeRangeBits(const char*, PRUint32*, PRUint32*);
118
#endif /* USE_FREETYPE */
118
#endif /* MOZ_ENABLE_FREETYPE2 */
119
static const nsFontCharSetMapXlib *GetCharSetMap(nsFontMetricsXlibContext *aFmctx, const char *aCharSetName);
119
static const nsFontCharSetMapXlib *GetCharSetMap(nsFontMetricsXlibContext *aFmctx, const char *aCharSetName);
120
120
121
// the font catalog is so expensive to generate
121
// the font catalog is so expensive to generate
Lines 215-225 Link Here
215
#endif /* USE_AASB */
215
#endif /* USE_AASB */
216
  PRInt32                               mEmbeddedBitmapMaximumHeight;
216
  PRInt32                               mEmbeddedBitmapMaximumHeight;
217
217
218
#ifdef USE_FREETYPE
218
#ifdef MOZ_ENABLE_FREETYPE2
219
  PRBool                                mEnableFreeType2;
219
  PRBool                                mEnableFreeType2;
220
  PRBool                                mFreeType2Autohinted;
220
  PRBool                                mFreeType2Autohinted;
221
  PRBool                                mFreeType2Unhinted;
221
  PRBool                                mFreeType2Unhinted;
222
#endif /* USE_FREETYPE */
222
#endif /* MOZ_ENABLE_FREETYPE2 */
223
#ifdef USE_AASB
223
#ifdef USE_AASB
224
  PRUint8                               mAATTDarkTextMinValue;
224
  PRUint8                               mAATTDarkTextMinValue;
225
  double                                mAATTDarkTextGain;
225
  double                                mAATTDarkTextGain;
Lines 236-243 Link Here
236
  const char*            mCharSet;
236
  const char*            mCharSet;
237
  nsFontCharSetConverterXlib Convert;
237
  nsFontCharSetConverterXlib Convert;
238
  PRUint8                mSpecialUnderline;
238
  PRUint8                mSpecialUnderline;
239
#ifdef MOZ_ENABLE_FREETYPE2
239
  PRInt32                mCodeRange1Bits;
240
  PRInt32                mCodeRange1Bits;
240
  PRInt32                mCodeRange2Bits;
241
  PRInt32                mCodeRange2Bits;
242
#endif
241
  PRUint16*              mCCMap;
243
  PRUint16*              mCCMap;
242
  nsIUnicodeEncoder*     mConverter;
244
  nsIUnicodeEncoder*     mConverter;
243
  nsIAtom*               mLangGroup;
245
  nsIAtom*               mLangGroup;
Lines 285-290 Link Here
285
static nsFontCharSetInfoXlib Unknown = { nsnull };
287
static nsFontCharSetInfoXlib Unknown = { nsnull };
286
static nsFontCharSetInfoXlib Special = { nsnull };
288
static nsFontCharSetInfoXlib Special = { nsnull };
287
289
290
#ifdef MOZ_ENABLE_FREETYPE2
288
static nsFontCharSetInfoXlib USASCII =
291
static nsFontCharSetInfoXlib USASCII =
289
  { "us-ascii", SingleByteConvert, 0,
292
  { "us-ascii", SingleByteConvert, 0,
290
    TT_OS2_CPR1_LATIN1 | TT_OS2_CPR1_MAC_ROMAN,
293
    TT_OS2_CPR1_LATIN1 | TT_OS2_CPR1_MAC_ROMAN,
Lines 490-496 Link Here
490
   { "x-mathematica4", SingleByteConvert, 0, TT_OS2_CPR1_SYMBOL, 0};
493
   { "x-mathematica4", SingleByteConvert, 0, TT_OS2_CPR1_SYMBOL, 0};
491
static nsFontCharSetInfoXlib Mathematica5 =
494
static nsFontCharSetInfoXlib Mathematica5 =
492
   { "x-mathematica5", SingleByteConvert, 0, TT_OS2_CPR1_SYMBOL, 0};
495
   { "x-mathematica5", SingleByteConvert, 0, TT_OS2_CPR1_SYMBOL, 0};
493
#endif /* MOZ_MATHML */
496
#endif /* MATHML */
497
498
#else
499
500
static nsFontCharSetInfoXlib USASCII =
501
  { "us-ascii", SingleByteConvert, 0 };
502
static nsFontCharSetInfoXlib ISO88591 =
503
  { "ISO-8859-1", SingleByteConvert, 0 };
504
static nsFontCharSetInfoXlib ISO88592 =
505
  { "ISO-8859-2", SingleByteConvert, 0 };
506
static nsFontCharSetInfoXlib ISO88593 =
507
  { "ISO-8859-3", SingleByteConvert, 0 };
508
static nsFontCharSetInfoXlib ISO88594 =
509
  { "ISO-8859-4", SingleByteConvert, 0 };
510
static nsFontCharSetInfoXlib ISO88595 =
511
  { "ISO-8859-5", SingleByteConvert, 0 };
512
static nsFontCharSetInfoXlib ISO88596 =
513
  { "ISO-8859-6", SingleByteConvert, 0 };
514
static nsFontCharSetInfoXlib ISO885968x =
515
  { "x-iso-8859-6-8-x", SingleByteConvert, 0 };
516
static nsFontCharSetInfoXlib ISO8859616 =
517
  { "x-iso-8859-6-16", SingleByteConvert, 0 };
518
static nsFontCharSetInfoXlib IBM1046 =
519
  { "x-IBM1046", SingleByteConvert, 0 };
520
static nsFontCharSetInfoXlib ISO88597 =
521
  { "ISO-8859-7", SingleByteConvert, 0 };
522
static nsFontCharSetInfoXlib ISO88598 =
523
  { "ISO-8859-8", SingleByteConvert, 0 };
524
// change from  
525
// { "ISO-8859-8", SingleByteConvertReverse, 0, 0, 0 };
526
// untill we fix the layout and ensure we only call this with pure RTL text
527
static nsFontCharSetInfoXlib ISO88599 =
528
  { "ISO-8859-9", SingleByteConvert, 0 };
529
// no support for iso-8859-10 (Nordic/Icelandic) currently
530
// static nsFontCharSetInfoXlib ISO885910 =
531
// { "ISO-8859-10", SingleByteConvert, 0,
532
//   0, TT_OS2_CPR2_NORDIC | TT_OS2_CPR2_ICELANDIC };
533
// no support for iso-8859-12 (Vietnamese) currently
534
// static nsFontCharSetInfoXlib ISO885912 =
535
// { "ISO-8859-12", SingleByteConvert, 0,
536
//   TT_OS2_CPR1_VIETNAMESE, 0 };
537
static nsFontCharSetInfoXlib ISO885913 =
538
  { "ISO-8859-13", SingleByteConvert, 0 };
539
static nsFontCharSetInfoXlib ISO885915 =
540
  { "ISO-8859-15", SingleByteConvert, 0 };
541
static nsFontCharSetInfoXlib JISX0201 =
542
  { "jis_0201", SingleByteConvert, 1 };
543
static nsFontCharSetInfoXlib KOI8R =
544
  { "KOI8-R", SingleByteConvert, 0 };
545
static nsFontCharSetInfoXlib KOI8U =
546
  { "KOI8-U", SingleByteConvert, 0 };
547
static nsFontCharSetInfoXlib TIS6202 =
548
/* Added to support thai context sensitive shaping if
549
 * CTL extension is is in force */
550
#ifdef SUNCTL
551
  { "tis620-2", SingleByteConvert, 0 };
552
#else
553
  { "windows-874", SingleByteConvert, 0 };
554
#endif /* SUNCTL */
555
static nsFontCharSetInfoXlib TIS620 =
556
  { "TIS-620", SingleByteConvert, 0 };
557
static nsFontCharSetInfoXlib ISO885911 =
558
  { "ISO-8859-11", SingleByteConvert, 0 };
559
static nsFontCharSetInfoXlib Big5 =
560
  { "x-x-big5", DoubleByteConvert, 1 };
561
// a kludge to distinguish zh-TW only fonts in Big5 (such as hpbig5-)
562
// from zh-TW/zh-HK common fonts in Big5 (such as big5-1)
563
static nsFontCharSetInfoXlib Big5TWHK =
564
  { "x-x-big5", DoubleByteConvert, 1 };
565
static nsFontCharSetInfoXlib CNS116431 =
566
  { "x-cns-11643-1", DoubleByteConvert, 1 };
567
static nsFontCharSetInfoXlib CNS116432 =
568
  { "x-cns-11643-2", DoubleByteConvert, 1 };
569
static nsFontCharSetInfoXlib CNS116433 =
570
  { "x-cns-11643-3", DoubleByteConvert, 1 };
571
static nsFontCharSetInfoXlib CNS116434 =
572
  { "x-cns-11643-4", DoubleByteConvert, 1 };
573
static nsFontCharSetInfoXlib CNS116435 =
574
  { "x-cns-11643-5", DoubleByteConvert, 1 };
575
static nsFontCharSetInfoXlib CNS116436 =
576
  { "x-cns-11643-6", DoubleByteConvert, 1 };
577
static nsFontCharSetInfoXlib CNS116437 =
578
  { "x-cns-11643-7", DoubleByteConvert, 1 };
579
static nsFontCharSetInfoXlib GB2312 =
580
  { "gb_2312-80", DoubleByteConvert, 1 };
581
static nsFontCharSetInfoXlib GB18030_0 =
582
  { "gb18030.2000-0", DoubleByteConvert, 1 };
583
static nsFontCharSetInfoXlib GB18030_1 =
584
  { "gb18030.2000-1", DoubleByteConvert, 1 };
585
static nsFontCharSetInfoXlib GBK =
586
  { "x-gbk-noascii", DoubleByteConvert, 1 };
587
static nsFontCharSetInfoXlib HKSCS =
588
  { "hkscs-1", DoubleByteConvert, 1 };
589
static nsFontCharSetInfoXlib JISX0208 =
590
  { "jis_0208-1983", DoubleByteConvert, 1 };
591
static nsFontCharSetInfoXlib JISX0212 =
592
  { "jis_0212-1990", DoubleByteConvert, 1 };
593
static nsFontCharSetInfoXlib KSC5601 =
594
  { "ks_c_5601-1987", DoubleByteConvert, 1 };
595
static nsFontCharSetInfoXlib X11Johab =
596
  { "x-x11johab", DoubleByteConvert, 1 };
597
static nsFontCharSetInfoXlib JohabNoAscii =
598
  { "x-johab-noascii", DoubleByteConvert, 1 };
599
static nsFontCharSetInfoXlib JamoTTF =
600
  { "x-koreanjamo-0", DoubleByteConvert, 1 };
601
static nsFontCharSetInfoXlib TamilTTF =
602
  { "x-tamilttf-0", DoubleByteConvert, 0 };
603
static nsFontCharSetInfoXlib CP1250 =
604
  { "windows-1250", SingleByteConvert, 0 };
605
static nsFontCharSetInfoXlib CP1251 =
606
  { "windows-1251", SingleByteConvert, 0 };
607
static nsFontCharSetInfoXlib CP1252 =
608
  { "windows-1252", SingleByteConvert, 0 };
609
static nsFontCharSetInfoXlib CP1253 =
610
  { "windows-1253", SingleByteConvert, 0 };
611
static nsFontCharSetInfoXlib CP1257 =
612
  { "windows-1257", SingleByteConvert, 0 };
613
614
#ifdef SUNCTL
615
/* Hindi range currently unsupported in FT2 range. Change TT* once we 
616
   arrive at a way to identify hindi */
617
static nsFontCharSetInfoXlib SunIndic =
618
  { "x-sun-unicode-india-0", DoubleByteConvert, 0 };
619
#endif /* SUNCTL */
620
621
static nsFontCharSetInfoXlib ISO106461 =
622
  { nsnull, ISO10646Convert, 1};
623
624
static nsFontCharSetInfoXlib AdobeSymbol =
625
   { "Adobe-Symbol-Encoding", SingleByteConvert, 0 };
626
static nsFontCharSetInfoXlib AdobeEuro =
627
  { "x-adobe-euro", SingleByteConvert, 0 };
628
         
629
#ifdef MOZ_MATHML
630
static nsFontCharSetInfoXlib CMCMEX =
631
   { "x-t1-cmex", SingleByteConvert, 0};
632
static nsFontCharSetInfoXlib CMCMSY =
633
   { "x-t1-cmsy", SingleByteConvert, 0};
634
static nsFontCharSetInfoXlib CMCMR =
635
   { "x-t1-cmr", SingleByteConvert, 0};
636
static nsFontCharSetInfoXlib CMCMMI =
637
   { "x-t1-cmmi", SingleByteConvert, 0};
638
static nsFontCharSetInfoXlib Mathematica1 =
639
   { "x-mathematica1", SingleByteConvert, 0};
640
static nsFontCharSetInfoXlib Mathematica2 =
641
   { "x-mathematica2", SingleByteConvert, 0}; 
642
static nsFontCharSetInfoXlib Mathematica3 =
643
   { "x-mathematica3", SingleByteConvert, 0};
644
static nsFontCharSetInfoXlib Mathematica4 =
645
   { "x-mathematica4", SingleByteConvert, 0}; 
646
static nsFontCharSetInfoXlib Mathematica5 =
647
   { "x-mathematica5", SingleByteConvert, 0};
648
#endif /* MATHML */
649
#endif /* FREETYPE2 */
494
650
495
static nsFontLangGroupXlib FLG_WESTERN = { "x-western",     nsnull };
651
static nsFontLangGroupXlib FLG_WESTERN = { "x-western",     nsnull };
496
static nsFontLangGroupXlib FLG_BALTIC  = { "x-baltic",      nsnull };
652
static nsFontLangGroupXlib FLG_BALTIC  = { "x-baltic",      nsnull };
Lines 1048-1056 Link Here
1048
{
1204
{
1049
  PR_LOG(FontMetricsXlibLM, PR_LOG_DEBUG, ("# nsFontMetricsXlibContext destroy()\n"));
1205
  PR_LOG(FontMetricsXlibLM, PR_LOG_DEBUG, ("# nsFontMetricsXlibContext destroy()\n"));
1050
1206
1051
#ifdef USE_FREETYPE
1207
#ifdef MOZ_ENABLE_FREETYPE2
1052
  nsFreeTypeFreeGlobals();
1208
  nsFreeTypeFreeGlobals();
1053
#endif /* USE_FREETYPE */
1209
#endif /* MOZ_ENABLE_FREETYPE2 */
1054
1210
1055
#ifdef ENABLE_X_FONT_BANNING
1211
#ifdef ENABLE_X_FONT_BANNING
1056
  if (mFontRejectRegEx) {
1212
  if (mFontRejectRegEx) {
Lines 1180-1190 Link Here
1180
#endif /* USE_AASB */
1336
#endif /* USE_AASB */
1181
  mEmbeddedBitmapMaximumHeight = 1000000;
1337
  mEmbeddedBitmapMaximumHeight = 1000000;
1182
1338
1183
#ifdef USE_FREETYPE
1339
#ifdef MOZ_ENABLE_FREETYPE2
1184
  mEnableFreeType2 = PR_TRUE;
1340
  mEnableFreeType2 = PR_TRUE;
1185
  mFreeType2Autohinted = PR_FALSE;
1341
  mFreeType2Autohinted = PR_FALSE;
1186
  mFreeType2Unhinted = PR_TRUE;
1342
  mFreeType2Unhinted = PR_TRUE;
1187
#endif /* USE_FREETYPE */
1343
#endif /* MOZ_ENABLE_FREETYPE2 */
1188
#ifdef USE_AASB
1344
#ifdef USE_AASB
1189
  mAATTDarkTextMinValue = 64;
1345
  mAATTDarkTextMinValue = 64;
1190
  mAATTDarkTextGain = 0.8;
1346
  mAATTDarkTextGain = 0.8;
Lines 1368-1374 Link Here
1368
    mForceOutlineScaledFonts = force_outline_scaled_fonts;
1524
    mForceOutlineScaledFonts = force_outline_scaled_fonts;
1369
  }
1525
  }
1370
1526
1371
#ifdef USE_FREETYPE
1527
#ifdef MOZ_ENABLE_FREETYPE2
1372
  PRBool enable_freetype2 = PR_TRUE;
1528
  PRBool enable_freetype2 = PR_TRUE;
1373
  rv = mPref->GetBoolPref("font.FreeType2.enable", &enable_freetype2);
1529
  rv = mPref->GetBoolPref("font.FreeType2.enable", &enable_freetype2);
1374
  if (NS_SUCCEEDED(rv)) {
1530
  if (NS_SUCCEEDED(rv)) {
Lines 1389-1395 Link Here
1389
    mFreeType2Unhinted = freetype2_unhinted;
1545
    mFreeType2Unhinted = freetype2_unhinted;
1390
    FREETYPE_FONT_PRINTF(("mFreeType2Unhinted = %d", mFreeType2Unhinted));
1546
    FREETYPE_FONT_PRINTF(("mFreeType2Unhinted = %d", mFreeType2Unhinted));
1391
  }
1547
  }
1392
#endif /* USE_FREETYPE */
1548
#endif /* MOZ_ENABLE_FREETYPE2 */
1393
1549
1394
#ifdef USE_AASB
1550
#ifdef USE_AASB
1395
  PRInt32 antialias_minimum = 8;
1551
  PRInt32 antialias_minimum = 8;
Lines 1585-1596 Link Here
1585
  }
1741
  }
1586
#endif /* ENABLE_X_FONT_BANNING */
1742
#endif /* ENABLE_X_FONT_BANNING */
1587
1743
1588
#ifdef USE_FREETYPE
1744
#ifdef MOZ_ENABLE_FREETYPE2
1589
  rv = nsFreeTypeInitGlobals();
1745
  rv = nsFreeTypeInitGlobals();
1590
  if (NS_FAILED(rv)) {
1746
  if (NS_FAILED(rv)) {
1591
    return NS_ERROR_OUT_OF_MEMORY;
1747
    return NS_ERROR_OUT_OF_MEMORY;
1592
  }
1748
  }
1593
#endif /* USE_FREETYPE */
1749
#endif /* MOZ_ENABLE_FREETYPE2 */
1594
1750
1595
  return NS_OK;
1751
  return NS_OK;
1596
}
1752
}
Lines 1916-1922 Link Here
1916
  float f;
2072
  float f;
1917
  f = mDeviceContext->DevUnitsToAppUnits();
2073
  f = mDeviceContext->DevUnitsToAppUnits();
1918
2074
1919
#ifdef USE_FREETYPE
2075
#ifdef MOZ_ENABLE_FREETYPE2
1920
  if (mWesternFont->IsFreeTypeFont()) {
2076
  if (mWesternFont->IsFreeTypeFont()) {
1921
    nsFreeTypeFont *ft = (nsFreeTypeFont *)mWesternFont;
2077
    nsFreeTypeFont *ft = (nsFreeTypeFont *)mWesternFont;
1922
    if (!ft)
2078
    if (!ft)
Lines 1999-2005 Link Here
1999
    return;
2155
    return;
2000
#endif /* MOZ_ENABLE_FREETYPE2 */
2156
#endif /* MOZ_ENABLE_FREETYPE2 */
2001
  }
2157
  }
2002
#endif /* USE_FREETYPE */
2158
#endif /* MOZ_ENABLE_FREETYPE2 */
2003
  nsXFont *xFont = mWesternFont->GetXFont();
2159
  nsXFont *xFont = mWesternFont->GetXFont();
2004
  XFontStruct *fontInfo = xFont->GetXFontStruct();
2160
  XFontStruct *fontInfo = xFont->GetXFontStruct();
2005
  f = mDeviceContext->DevUnitsToAppUnits();
2161
  f = mDeviceContext->DevUnitsToAppUnits();
Lines 3010-3022 Link Here
3010
  return ((PRBool) (mCharSetInfo == mFontMetricsContext->mISO106461));
3166
  return ((PRBool) (mCharSetInfo == mFontMetricsContext->mISO106461));
3011
}
3167
}
3012
3168
3013
#ifdef USE_FREETYPE
3169
#ifdef MOZ_ENABLE_FREETYPE2
3014
PRBool
3170
PRBool
3015
nsFontXlib::IsFreeTypeFont(void)
3171
nsFontXlib::IsFreeTypeFont(void)
3016
{
3172
{
3017
  return PR_FALSE;
3173
  return PR_FALSE;
3018
}
3174
}
3019
#endif /* USE_FREETYPE */
3175
#endif /* MOZ_ENABLE_FREETYPE2 */
3020
3176
3021
MOZ_DECL_CTOR_COUNTER(nsFontXlib)
3177
MOZ_DECL_CTOR_COUNTER(nsFontXlib)
3022
3178
Lines 3654-3660 Link Here
3654
nsFontMetricsXlib::PickASizeAndLoad(nsFontStretchXlib* aStretch,
3810
nsFontMetricsXlib::PickASizeAndLoad(nsFontStretchXlib* aStretch,
3655
  nsFontCharSetInfoXlib* aCharSet, PRUnichar aChar, const char *aName)
3811
  nsFontCharSetInfoXlib* aCharSet, PRUnichar aChar, const char *aName)
3656
{
3812
{
3657
#ifdef USE_FREETYPE
3813
#ifdef MOZ_ENABLE_FREETYPE2
3658
  if (aStretch->mFreeTypeFaceID) {
3814
  if (aStretch->mFreeTypeFaceID) {
3659
    //FREETYPE_FONT_PRINTF(("mFreeTypeFaceID = 0x%p", aStretch->mFreeTypeFaceID));
3815
    //FREETYPE_FONT_PRINTF(("mFreeTypeFaceID = 0x%p", aStretch->mFreeTypeFaceID));
3660
    nsFreeTypeFont *ftfont = nsFreeTypeFont::NewFont(aStretch->mFreeTypeFaceID,
3816
    nsFreeTypeFont *ftfont = nsFreeTypeFont::NewFont(aStretch->mFreeTypeFaceID,
Lines 3682-3688 Link Here
3682
    //FREETYPE_FONT_PRINTF(("add the ftfont"));
3838
    //FREETYPE_FONT_PRINTF(("add the ftfont"));
3683
    return AddToLoadedFontsList(ftfont);
3839
    return AddToLoadedFontsList(ftfont);
3684
  }
3840
  }
3685
#endif /* USE_FREETYPE */
3841
#endif /* MOZ_ENABLE_FREETYPE2 */
3686
3842
3687
  PRBool      use_scaled_font               = PR_FALSE;
3843
  PRBool      use_scaled_font               = PR_FALSE;
3688
  PRBool      have_nearly_rightsized_bitmap = PR_FALSE;
3844
  PRBool      have_nearly_rightsized_bitmap = PR_FALSE;
Lines 4498-4507 Link Here
4498
  }
4654
  }
4499
#endif
4655
#endif
4500
4656
4501
#ifdef USE_FREETYPE
4657
#ifdef MOZ_ENABLE_FREETYPE2
4502
  // get FreeType fonts
4658
  // get FreeType fonts
4503
  nsFT2FontCatalog::GetFontNames(aFmctx, aPattern, aNodes);
4659
  nsFT2FontCatalog::GetFontNames(aFmctx, aPattern, aNodes);
4504
#endif /* USE_FREETYPE */
4660
#endif /* MOZ_ENABLE_FREETYPE2 */
4505
4661
4506
  nsCAutoString previousNodeName;
4662
  nsCAutoString previousNodeName;
4507
  nsHashtable* node_hash;
4663
  nsHashtable* node_hash;
Lines 5896-5902 Link Here
5896
  return charSetMap;
6052
  return charSetMap;
5897
}
6053
}
5898
6054
5899
#ifdef USE_FREETYPE
6055
#ifdef MOZ_ENABLE_FREETYPE2
5900
static
6056
static
5901
void CharSetNameToCodeRangeBits(const char *aCharset,
6057
void CharSetNameToCodeRangeBits(const char *aCharset,
5902
                                PRUint32 *aCodeRange1, PRUint32 *aCodeRange2)
6058
                                PRUint32 *aCodeRange1, PRUint32 *aCodeRange2)
Lines 5907-5911 Link Here
5907
  *aCodeRange1 = charSetInfo->mCodeRange1Bits;
6063
  *aCodeRange1 = charSetInfo->mCodeRange1Bits;
5908
  *aCodeRange2 = charSetInfo->mCodeRange2Bits;
6064
  *aCodeRange2 = charSetInfo->mCodeRange2Bits;
5909
}
6065
}
5910
#endif /* USE_FREETYPE */
6066
#endif /* MOZ_ENABLE_FREETYPE2 */
5911
6067
5912
-- gfx/src/xlib/nsFontMetricsXlib.h
6068
++ gfx/src/xlib/nsFontMetricsXlib.h
Lines 56-62 Link Here
56
#include "nsCompressedCharMap.h"
56
#include "nsCompressedCharMap.h"
57
57
58
/* Undefine some CPP symbols which wrap not-yet-implemented code */
58
/* Undefine some CPP symbols which wrap not-yet-implemented code */
59
#undef USE_FREETYPE
59
#undef MOZ_ENABLE_FREETYPE2
60
#undef USE_AASB
60
#undef USE_AASB
61
#undef USE_X11SHARED_CODE
61
#undef USE_X11SHARED_CODE
62
62
Lines 187-195 Link Here
187
187
188
class nsFontXlibUserDefined;
188
class nsFontXlibUserDefined;
189
class nsFontMetricsXlib;
189
class nsFontMetricsXlib;
190
#ifdef USE_FREETYPE
190
#ifdef MOZ_ENABLE_FREETYPE2
191
class nsFreeTypeFace;
191
class nsFreeTypeFace;
192
#endif /* USE_FREETYPE */
192
#endif /* MOZ_ENABLE_FREETYPE2 */
193
193
194
struct nsFontStretchXlib
194
struct nsFontStretchXlib
195
{
195
{
Lines 204-212 Link Here
204
  char*              mScalable;
204
  char*              mScalable;
205
  PRBool             mOutlineScaled;
205
  PRBool             mOutlineScaled;
206
  nsVoidArray        mScaledFonts;
206
  nsVoidArray        mScaledFonts;
207
#ifdef USE_FREETYPE
207
#ifdef MOZ_ENABLE_FREETYPE2
208
  nsFreeTypeFace    *mFreeTypeFaceID;
208
  nsFreeTypeFace    *mFreeTypeFaceID;
209
#endif /* USE_FREETYPE */
209
#endif /* MOZ_ENABLE_FREETYPE2 */
210
};
210
};
211
211
212
struct nsFontStyleXlib
212
struct nsFontStyleXlib
Lines 289-297 Link Here
289
  virtual XFontStruct *GetXFontStruct(void);
289
  virtual XFontStruct *GetXFontStruct(void);
290
  virtual nsXFont     *GetXFont(void);
290
  virtual nsXFont     *GetXFont(void);
291
  virtual PRBool       GetXFontIs10646(void);
291
  virtual PRBool       GetXFontIs10646(void);
292
#ifdef USE_FREETYPE
292
#ifdef MOZ_ENABLE_FREETYPE2
293
  virtual PRBool       IsFreeTypeFont(void);
293
  virtual PRBool       IsFreeTypeFont(void);
294
#endif /* USE_FREETYPE */
294
#endif /* MOZ_ENABLE_FREETYPE2 */
295
  virtual int          GetWidth(const PRUnichar* aString, PRUint32 aLength) = 0;
295
  virtual int          GetWidth(const PRUnichar* aString, PRUint32 aLength) = 0;
296
  virtual int          DrawString(nsRenderingContextXlib *aContext,
296
  virtual int          DrawString(nsRenderingContextXlib *aContext,
297
                                  nsIDrawingSurfaceXlib *aSurface, nscoord aX,
297
                                  nsIDrawingSurfaceXlib *aSurface, nscoord aX,
Lines 476-482 Link Here
476
 * GDK/GTK+ includes which are not available in Xlib builds (fix is to remove
476
 * GDK/GTK+ includes which are not available in Xlib builds (fix is to remove
477
 * the GDK/GTK+ dependicy from the code in gfx/src/x11shared/ ...)
477
 * the GDK/GTK+ dependicy from the code in gfx/src/x11shared/ ...)
478
 */
478
 */
479
#ifndef USE_FREETYPE
479
#ifndef MOZ_ENABLE_FREETYPE2
480
/*
480
/*
481
 * Defines for the TrueType codepage bits.
481
 * Defines for the TrueType codepage bits.
482
 * Used as a hint for the languages supported in a TrueType font.
482
 * Used as a hint for the languages supported in a TrueType font.
Lines 525-531 Link Here
525
#define TT_OS2_CPR2_ARABIC_708   (0x20000000) /* Arabic; ASMO 708            */
525
#define TT_OS2_CPR2_ARABIC_708   (0x20000000) /* Arabic; ASMO 708            */
526
#define TT_OS2_CPR2_WE_LATIN1    (0x40000000) /* WE/Latin 1                  */
526
#define TT_OS2_CPR2_WE_LATIN1    (0x40000000) /* WE/Latin 1                  */
527
#define TT_OS2_CPR2_US           (0x80000000) /* US                          */
527
#define TT_OS2_CPR2_US           (0x80000000) /* US                          */
528
#endif /* !USE_FREETYPE */
528
#endif /* !MOZ_ENABLE_FREETYPE2 */
529
529
530
#endif /* !nsFontMetricsXlib_h__ */
530
#endif /* !nsFontMetricsXlib_h__ */
531
531
532
-- gfx/src/nsRenderingContextImpl.h
532
++ gfx/src/nsRenderingContextImpl.h
Lines 138-143 Link Here
138
  NS_IMETHOD DrawScaledImage(imgIContainer *aImage, const nsRect * aSrcRect, const nsRect * aDestRect);
138
  NS_IMETHOD DrawScaledImage(imgIContainer *aImage, const nsRect * aSrcRect, const nsRect * aDestRect);
139
  NS_IMETHOD DrawTile(imgIContainer *aImage, nscoord aXOffset, nscoord aYOffset, const nsRect * aTargetRect);
139
  NS_IMETHOD DrawTile(imgIContainer *aImage, nscoord aXOffset, nscoord aYOffset, const nsRect * aTargetRect);
140
140
141
  NS_IMETHOD GetClusterInfo(const PRUnichar *aText,
142
                            PRUint32 aLength,
143
                            PRUint32 *aClusterStarts);
144
  NS_IMETHOD GetPosition(const PRUnichar *aText,
145
                         PRUint32 aLength,
146
                         nscoord aCoord,
147
                         PRUint32 &aInx);
148
  NS_IMETHOD GetRangeWidth(const PRUnichar *aText,
149
                           PRUint32 aLength,
150
                           PRUint32 aStart,
151
                           PRUint32 aEnd,
152
                           PRUint32 &aWidth);
153
141
protected:
154
protected:
142
  virtual ~nsRenderingContextImpl();
155
  virtual ~nsRenderingContextImpl();
143
156
144
-- gfx/gfx-config.h
157
++ gfx/gfx-config.h
Line 0 Link Here
0
-- htmlparser/src/nsParser.cpp
1
/* gfx/gfx-config.h.  Generated automatically by configure.  */
2
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
3
 *
4
 * The contents of this file are subject to the Mozilla Public
5
 * License Version 1.1 (the "License"); you may not use this file
6
 * except in compliance with the License. You may obtain a copy of
7
 * the License at http://www.mozilla.org/MPL/
8
 * 
9
 * Software distributed under the License is distributed on an "AS
10
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
11
 * implied. See the License for the specific language governing
12
 * rights and limitations under the License.
13
 * 
14
 * The Original Code is mozilla.org code.
15
 * 
16
 * The Initial Developer of the Original Code is Netscape
17
 * Communications Corporation.  Portions created by Netscape are
18
 * Copyright (C) 2003 Netscape Communications Corporation.
19
 * All Rights Reserved.
20
 * 
21
 * Contributor(s):
22
 *
23
 */
24
#ifndef _GFX_CONFIG_H_
25
#define _GFX_CONFIG_H_
26
27
/* Define if freetype support is enabled */
28
#define MOZ_ENABLE_FREETYPE2 1
29
30
#endif /* _GFX_CONFIG_H_ */
31
32
++ htmlparser/src/nsParser.cpp
Lines 2565-2585 Link Here
2565
  nsresult rv = NS_OK;
2565
  nsresult rv = NS_OK;
2566
  
2566
  
2567
  if(eOnStart==mParserContext->mStreamListenerState) {
2567
  if(eOnStart==mParserContext->mStreamListenerState) {
2568
    nsAutoString temp;
2568
    //Everybody can live with an empty input stream, so just resume parsing.
2569
2570
    //If you're here, then OnDataAvailable() never got called. 
2571
    //Prior to necko, we never dealt with this case, but the problem may have existed.
2572
    //What we'll do (for now at least) is construct a blank HTML document.
2573
    if (!mParserContext->mMimeType.Equals(NS_LITERAL_CSTRING(kPlainTextContentType)))
2574
    {
2575
      temp.Assign(NS_LITERAL_STRING("<html><body></body></html>"));
2576
    }
2577
    // XXX: until bug #108067 has been fixed we must ensure that *something*
2578
    //      is in the scanner!  so, for now just put in a single space.
2579
    else {
2580
      temp.Assign(NS_LITERAL_STRING(" "));
2581
    }
2582
    mParserContext->mScanner->Append(temp);
2583
    rv = ResumeParse(PR_TRUE,PR_TRUE);    
2569
    rv = ResumeParse(PR_TRUE,PR_TRUE);    
2584
  }
2570
  }
2585
2571
2586
-- layout/html/base/src/nsTextFrame.cpp
2572
++ layout/html/base/src/nsTextFrame.cpp
Lines 2339-2344 Link Here
2339
#endif
2339
#endif
2340
        sdptr = sdptr->mNext;
2340
        sdptr = sdptr->mNext;
2341
      }
2341
      }
2342
2343
      /*
2344
       * Text is drawn by drawing the entire string every time, but
2345
       * using clip regions to control which part of the text is shown
2346
       * (selected or unselected.)  We do this because you can't
2347
       * assume that the layout of a part of text will be the same
2348
       * when it's drawn apart from the entire string.  This is true
2349
       * in languages like arabic, where shaping affects entire words.
2350
       * Simply put: length("abcd") != length("ab") + length("cd") in
2351
       * some languages.
2352
       */
2353
2354
      // See if this rendering backend supports getting cluster
2355
      // information.
2356
      PRUint32 clusterHint = 0;
2357
      aRenderingContext.GetHints(clusterHint);
2358
      clusterHint &= NS_RENDERING_HINT_TEXT_CLUSTERS;
2359
2342
      //while we have substrings...
2360
      //while we have substrings...
2343
      //PRBool drawn = PR_FALSE;
2361
      //PRBool drawn = PR_FALSE;
2344
      DrawSelectionIterator iter(content, details,text,(PRUint32)textLength,aTextStyle, selectionValue, aPresContext, mStyleContext);
2362
      DrawSelectionIterator iter(content, details,text,(PRUint32)textLength,aTextStyle, selectionValue, aPresContext, mStyleContext);
Lines 2361-2397 Link Here
2361
          nscolor    currentBKColor;
2379
          nscolor    currentBKColor;
2362
          PRBool     isCurrentBKColorTransparent;
2380
          PRBool     isCurrentBKColorTransparent;
2363
2381
2364
#ifdef IBMBIDI
2382
          if (currentlength > 0)
2365
          if (currentlength > 0
2366
            && NS_SUCCEEDED(aRenderingContext.GetWidth(currenttext, currentlength,newWidth)))//ADJUST FOR CHAR SPACING
2367
          {
2383
          {
2368
2384
            if (clusterHint) {
2369
            if (isRightToLeftOnBidiPlatform)
2385
              PRUint32 tmpWidth;
2370
              currentX -= newWidth;
2386
              rv = aRenderingContext.GetRangeWidth(text, textLength, currenttext - text,
2371
#else // not IBMBIDI
2387
                                                   (currenttext - text) + currentlength,
2372
          if (NS_SUCCEEDED(aRenderingContext.GetWidth(currenttext, currentlength,newWidth)))//ADJUST FOR CHAR SPACING
2388
                                                   tmpWidth);
2373
          {
2389
              newWidth = nscoord(tmpWidth);
2374
#endif
2390
            }
2375
            if (iter.CurrentBackGroundColor(currentBKColor, &isCurrentBKColorTransparent) && !isPaginated)
2391
            else {
2376
            {//DRAW RECT HERE!!!
2392
              rv = aRenderingContext.GetWidth(currenttext, currentlength,newWidth); //ADJUST FOR CHAR SPACING
2377
              if (!isCurrentBKColorTransparent) {
2393
            }
2378
                aRenderingContext.SetColor(currentBKColor);
2394
            if (NS_SUCCEEDED(rv)) {
2379
                aRenderingContext.FillRect(currentX, dy, newWidth, mRect.height);
2395
              if (isRightToLeftOnBidiPlatform)
2396
                currentX -= newWidth;
2397
              if (iter.CurrentBackGroundColor(currentBKColor, &isCurrentBKColorTransparent) && !isPaginated)
2398
              {//DRAW RECT HERE!!!
2399
                if (!isCurrentBKColorTransparent) {
2400
                  aRenderingContext.SetColor(currentBKColor);
2401
                  aRenderingContext.FillRect(currentX, dy, newWidth, mRect.height);
2402
                }
2403
                currentFGColor = EnsureDifferentColors(currentFGColor, currentBKColor);
2380
              }
2404
              }
2381
              currentFGColor = EnsureDifferentColors(currentFGColor, currentBKColor);
2405
            }
2406
            else {
2407
              newWidth = 0;
2382
            }
2408
            }
2383
          }
2409
          }
2384
          else
2410
          else {
2385
            newWidth =0;
2411
            newWidth = 0;
2386
          
2412
          }
2413
2414
          aRenderingContext.PushState();
2415
2416
          nsRect rect(currentX, dy, newWidth, mRect.height);
2417
	  PRBool ignore;
2418
          aRenderingContext.SetClipRect(rect, nsClipCombine_kIntersect,
2419
					ignore);
2420
            
2387
          if (isPaginated && !iter.IsBeforeOrAfter()) {
2421
          if (isPaginated && !iter.IsBeforeOrAfter()) {
2388
            aRenderingContext.SetColor(nsCSSRendering::TransformColor(aTextStyle.mColor->mColor,canDarkenColor));
2422
            aRenderingContext.SetColor(nsCSSRendering::TransformColor(aTextStyle.mColor->mColor,canDarkenColor));
2389
            aRenderingContext.DrawString(currenttext, currentlength, currentX, dy + mAscent);
2423
            aRenderingContext.DrawString(text, PRUint32(textLength), dx, dy + mAscent);
2390
          } else if (!isPaginated) {
2424
          } else if (!isPaginated) {
2391
            aRenderingContext.SetColor(nsCSSRendering::TransformColor(currentFGColor,canDarkenColor));
2425
            aRenderingContext.SetColor(nsCSSRendering::TransformColor(currentFGColor,canDarkenColor));
2392
            aRenderingContext.DrawString(currenttext, currentlength, currentX, dy + mAscent);
2426
	    aRenderingContext.DrawString(text, PRUint32(textLength), dx, dy + mAscent);
2393
          }
2427
          }
2394
2428
2429
	  aRenderingContext.PopState(ignore);
2430
2395
#ifdef IBMBIDI
2431
#ifdef IBMBIDI
2396
          if (!isRightToLeftOnBidiPlatform)
2432
          if (!isRightToLeftOnBidiPlatform)
2397
#endif
2433
#endif
Lines 2932-2942 Link Here
2932
  if (0 != textLength) {
2968
  if (0 != textLength) {
2933
#ifdef IBMBIDI
2969
#ifdef IBMBIDI
2934
    PRBool bidiEnabled;
2970
    PRBool bidiEnabled;
2971
    PRBool isBidiSystem =PR_FALSE;
2972
    PRBool isRightToLeftOnBidiPlatform = PR_FALSE;
2935
    PRUint8 level = 0;
2973
    PRUint8 level = 0;
2974
    PRUint32 hints = 0;
2975
    aRenderingContext.GetHints(hints);
2976
    PRBool paintCharByChar = (0 == hints & NS_RENDERING_HINT_SPACING_RUNS) &&
2977
            ((0 != aTextStyle.mLetterSpacing) || 
2978
             (0 != aTextStyle.mWordSpacing) ||
2979
             aTextStyle.mJustifying);
2936
    nsCharType charType = eCharType_LeftToRight;
2980
    nsCharType charType = eCharType_LeftToRight;
2937
    aPresContext->GetBidiEnabled(&bidiEnabled);
2981
    aPresContext->GetBidiEnabled(&bidiEnabled);
2938
2982
2939
    if (bidiEnabled) {
2983
    if (bidiEnabled) {
2984
      isBidiSystem = aPresContext->IsBidiSystem();
2940
      nsBidiPresUtils* bidiUtils;
2985
      nsBidiPresUtils* bidiUtils;
2941
      aPresContext->GetBidiUtils(&bidiUtils);
2986
      aPresContext->GetBidiUtils(&bidiUtils);
2942
2987
Lines 2948-2956 Link Here
2948
#ifdef DEBUG
2993
#ifdef DEBUG
2949
        PRInt32 rememberTextLength = textLength;
2994
        PRInt32 rememberTextLength = textLength;
2950
#endif
2995
#endif
2951
        // Since we paint char by char, handle the text like on non-bidi platform
2996
        isRightToLeftOnBidiPlatform = (!paintCharByChar &&
2997
                                        isBidiSystem && 
2998
                                        (eCharType_RightToLeft == charType ||
2999
                                         eCharType_RightToLeftArabic == charType));
3000
        if (isRightToLeftOnBidiPlatform) {
3001
                // indicate that the platform should use its native
3002
                // capabilities to reorder the text with right-to-left
3003
                // base direction
3004
                aRenderingContext.SetRightToLeftText(PR_TRUE);
3005
        }
3006
        // If we will be painting char by char, handle the text like on non-bidi platform
2952
        bidiUtils->ReorderUnicodeText(text, textLength, charType,
3007
        bidiUtils->ReorderUnicodeText(text, textLength, charType,
2953
                                      level & 1, PR_FALSE);
3008
                                      level & 1, (paintCharByChar) ? PR_FALSE : isBidiSystem);
2954
        NS_ASSERTION(rememberTextLength == textLength, "Bidi formatting changed text length");
3009
        NS_ASSERTION(rememberTextLength == textLength, "Bidi formatting changed text length");
2955
      }
3010
      }
2956
    }
3011
    }
Lines 2992-2998 Link Here
2992
        sdptr->mStart = ip[sdptr->mStart] - mContentOffset;
3047
        sdptr->mStart = ip[sdptr->mStart] - mContentOffset;
2993
        sdptr->mEnd = ip[sdptr->mEnd]  - mContentOffset;
3048
        sdptr->mEnd = ip[sdptr->mEnd]  - mContentOffset;
2994
#ifdef IBMBIDI
3049
#ifdef IBMBIDI
2995
        AdjustSelectionPointsForBidi(sdptr, textLength, CHARTYPE_IS_RTL(charType), level & 1, PR_FALSE);
3050
        AdjustSelectionPointsForBidi(sdptr, textLength, 
3051
                                     CHARTYPE_IS_RTL(charType), level & 1, 
3052
                                     (paintCharByChar) ? PR_FALSE : isBidiSystem);
2996
#endif
3053
#endif
2997
        sdptr = sdptr->mNext;
3054
        sdptr = sdptr->mNext;
2998
      }
3055
      }
Lines 3002-3007 Link Here
3002
      {
3059
      {
3003
	      nscoord currentX = dx;
3060
	      nscoord currentX = dx;
3004
	      nsTextDimensions newDimensions;//temp
3061
	      nsTextDimensions newDimensions;//temp
3062
#ifdef IBMBIDI
3063
              if (isRightToLeftOnBidiPlatform)
3064
              {
3065
                      nsTextDimensions frameDimensions;
3066
                      GetTextDimensions(aRenderingContext, aTextStyle, text,
3067
                                        (PRInt32)textLength,  
3068
                                        &frameDimensions);
3069
                      currentX = dx + frameDimensions.width;
3070
              }
3071
#endif
3005
	      while (!iter.IsDone())
3072
	      while (!iter.IsDone())
3006
	      {
3073
	      {
3007
	      PRUnichar *currenttext  = iter.CurrentTextUnicharPtr();
3074
	      PRUnichar *currenttext  = iter.CurrentTextUnicharPtr();
Lines 3013-3018 Link Here
3013
	      GetTextDimensions(aRenderingContext,aTextStyle,currenttext, (PRInt32)currentlength,&newDimensions);
3080
	      GetTextDimensions(aRenderingContext,aTextStyle,currenttext, (PRInt32)currentlength,&newDimensions);
3014
	      if (newDimensions.width)
3081
	      if (newDimensions.width)
3015
	      {
3082
	      {
3083
#ifdef IBMBIDI
3084
                if (isRightToLeftOnBidiPlatform)
3085
                        currentX -= newDimensions.width;
3086
#endif
3016
            if (iter.CurrentBackGroundColor(currentBKColor, &isCurrentBKColorTransparent))
3087
            if (iter.CurrentBackGroundColor(currentBKColor, &isCurrentBKColorTransparent))
3017
            {//DRAW RECT HERE!!!
3088
            {//DRAW RECT HERE!!!
3018
              if (!isCurrentBKColorTransparent) {
3089
              if (!isCurrentBKColorTransparent) {
Lines 3035-3040 Link Here
3035
                       dy, width, details);
3106
                       dy, width, details);
3036
        }
3107
        }
3037
3108
3109
#ifdef IBMBIDI
3110
        if (!isRightToLeftOnBidiPlatform)
3111
#endif
3038
          //increment twips X start but remember to get ready for next draw by reducing current x by letter spacing amount
3112
          //increment twips X start but remember to get ready for next draw by reducing current x by letter spacing amount
3039
	      currentX+=newDimensions.width;// + aTextStyle.mLetterSpacing;
3113
	      currentX+=newDimensions.width;// + aTextStyle.mLetterSpacing;
3040
3114
Lines 3057-3062 Link Here
3057
        delete details;
3131
        delete details;
3058
      }
3132
      }
3059
    }
3133
    }
3134
#ifdef IBMBIDI
3135
    if (isRightToLeftOnBidiPlatform) {
3136
        // indicate that future text should not be reordered with
3137
        // right-to-left base direction 
3138
        aRenderingContext.SetRightToLeftText(PR_FALSE);
3139
    }
3140
#endif 
3060
  }
3141
  }
3061
}
3142
}
3062
3143
Lines 3429-3434 Link Here
3429
        PRInt32 textWidth = 0;
3510
        PRInt32 textWidth = 0;
3430
        PRUnichar* text = paintBuffer.mBuffer;
3511
        PRUnichar* text = paintBuffer.mBuffer;
3431
3512
3513
        // See if the font backend will do all the hard work for us.
3514
        PRUint32 clusterHint = 0;
3515
        acx->GetHints(clusterHint);
3516
        clusterHint &= NS_RENDERING_HINT_TEXT_CLUSTERS;
3517
        if (clusterHint) {
3518
          PRUint32 tmpIndx = indx;
3519
          acx->GetPosition(text, textLength, aPoint.x - origin.x, tmpIndx);
3520
          indx = tmpIndx;
3521
        }
3522
        else {
3432
#ifdef IBMBIDI
3523
#ifdef IBMBIDI
3433
        PRBool getReversedPos = PR_FALSE;
3524
        PRBool getReversedPos = PR_FALSE;
3434
        PRUint8 level  = 0;
3525
        PRUint8 level  = 0;
Lines 3465-3470 Link Here
3465
            indx++;
3556
            indx++;
3466
          }
3557
          }
3467
        }
3558
        }
3559
	}
3468
3560
3469
        aContentOffset = indx + mContentOffset;
3561
        aContentOffset = indx + mContentOffset;
3470
        //reusing wordBufMem
3562
        //reusing wordBufMem
Lines 3916-3921 Link Here
3916
  }
4008
  }
3917
  PRInt32* ip = indexBuffer.mBuffer;
4009
  PRInt32* ip = indexBuffer.mBuffer;
3918
4010
4011
  nsAutoIndexBuffer clusterBuffer;
4012
  rv = clusterBuffer.GrowTo(mContentLength + 1);
4013
  if (NS_FAILED(rv)) {
4014
    return rv;
4015
  }
4016
3919
  PRInt32 textLength;
4017
  PRInt32 textLength;
3920
  nsresult result(NS_ERROR_FAILURE);
4018
  nsresult result(NS_ERROR_FAILURE);
3921
  aPos->mResultContent = mContent;//do this right off
4019
  aPos->mResultContent = mContent;//do this right off
Lines 3981-3988 Link Here
3981
          aPos->mContentOffset = 0;
4079
          aPos->mContentOffset = 0;
3982
          PRInt32 i;
4080
          PRInt32 i;
3983
4081
4082
          // Fill in the cluster hint information, if it's available.
4083
          nsCOMPtr<nsIRenderingContext> acx;
4084
          PRUint32 clusterHint = 0;
4085
4086
          nsIPresShell *shell = aPresContext->GetPresShell();
4087
          if (shell) {
4088
            shell->CreateRenderingContext(this, getter_AddRefs(acx));
4089
4090
            // Find the font metrics for this text
4091
            SetFontFromStyle(acx, mStyleContext);
4092
4093
            if (acx)
4094
              acx->GetHints(clusterHint);
4095
            clusterHint &= NS_RENDERING_HINT_TEXT_CLUSTERS;
4096
          }
4097
4098
          if (clusterHint) {
4099
            acx->GetClusterInfo(paintBuffer.mBuffer, (PRUint32)textLength, (PRUint32 *)clusterBuffer.mBuffer);
4100
          }
4101
          else {
4102
            memset(clusterBuffer.mBuffer, 1, sizeof(PRInt32) * textLength);
4103
          }
4104
3984
          for (i = aPos->mStartOffset -1 - mContentOffset; i >=0;  i--){
4105
          for (i = aPos->mStartOffset -1 - mContentOffset; i >=0;  i--){
3985
            if ((ip[i] < ip[aPos->mStartOffset - mContentOffset]) &&
4106
            if ((ip[i] < ip[aPos->mStartOffset - mContentOffset]) &&
4107
                (clusterBuffer.mBuffer[ip[i] - mContentOffset]) &&
3986
                (! IS_LOW_SURROGATE(paintBuffer.mBuffer[ip[i]-mContentOffset])))
4108
                (! IS_LOW_SURROGATE(paintBuffer.mBuffer[ip[i]-mContentOffset])))
3987
            {
4109
            {
3988
              aPos->mContentOffset = i + mContentOffset;
4110
              aPos->mContentOffset = i + mContentOffset;
Lines 4033-4046 Link Here
4033
          PRInt32 i;
4155
          PRInt32 i;
4034
          aPos->mContentOffset = mContentLength;
4156
          aPos->mContentOffset = mContentLength;
4035
4157
4036
          for (i = aPos->mStartOffset +1 - mContentOffset; i <= mContentLength;  i++){
4158
          // Fill in the cluster hint information, if it's available.
4159
          nsCOMPtr<nsIRenderingContext> acx;
4160
          PRUint32 clusterHint = 0;
4161
4162
          nsIPresShell *shell = aPresContext->GetPresShell();
4163
          if (shell) {
4164
            shell->CreateRenderingContext(this, getter_AddRefs(acx));
4165
4166
            // Find the font metrics for this text
4167
            SetFontFromStyle(acx, mStyleContext);
4168
4169
            if (acx)
4170
              acx->GetHints(clusterHint);
4171
            clusterHint &= NS_RENDERING_HINT_TEXT_CLUSTERS;
4172
          }
4173
4174
          if (clusterHint) {
4175
            acx->GetClusterInfo(paintBuffer.mBuffer, (PRUint32)textLength, (PRUint32 *)clusterBuffer.mBuffer);
4176
          }
4177
          else {
4178
            memset(clusterBuffer.mBuffer, 1, sizeof(PRInt32) * textLength);
4179
          }
4180
4181
          for (i = aPos->mStartOffset - mContentOffset; i <= mContentLength; i++) {
4037
            if ((ip[i] > ip[aPos->mStartOffset - mContentOffset]) &&
4182
            if ((ip[i] > ip[aPos->mStartOffset - mContentOffset]) &&
4038
                (! IS_LOW_SURROGATE(paintBuffer.mBuffer[ip[i]-mContentOffset])))
4183
                ((i == mContentLength) ||
4039
            {
4184
                 (!IS_LOW_SURROGATE(paintBuffer.mBuffer[ip[i] - mContentOffset])) &&
4185
                 (clusterBuffer.mBuffer[ip[i] - mContentOffset]))) {
4040
              aPos->mContentOffset = i + mContentOffset;
4186
              aPos->mContentOffset = i + mContentOffset;
4041
              break;
4187
              break;
4042
            }
4188
            }
4043
          }
4189
          }
4190
4044
  #ifdef SUNCTL
4191
  #ifdef SUNCTL
4045
          static NS_DEFINE_CID(kLECID, NS_ULE_CID);
4192
          static NS_DEFINE_CID(kLECID, NS_ULE_CID);
4046
4193
4047
-- layout/html/document/src/html.css
4194
++ layout/html/document/src/html.css
Lines 441-446 Link Here
441
/* PRINT ONLY rules follow */
441
/* PRINT ONLY rules follow */
442
@media print {
442
@media print {
443
443
444
  body {
445
    font-family: times, serif;
446
  }
447
  tt, pre {
448
    font-family: courier, monospace;
449
  }
450
444
  marquee { -moz-binding: none; }
451
  marquee { -moz-binding: none; }
445
 
452
 
446
  *|*:-moz-any-link img, img[usemap], object[usemap],
453
  *|*:-moz-any-link img, img[usemap], object[usemap],
447
-- widget/public/nsGUIEvent.h
454
++ widget/public/nsGUIEvent.h
Lines 22-27 Link Here
22
 * Contributor(s):
22
 * Contributor(s):
23
 *   Makoto Kato  <m_kato@ga2.so-net.ne.jp>
23
 *   Makoto Kato  <m_kato@ga2.so-net.ne.jp>
24
 *   Dean Tessman <dean_tessman@hotmail.com>
24
 *   Dean Tessman <dean_tessman@hotmail.com>
25
 *   Andrew Wellington <proton@wiretapped.net>
26
 *   Graham Dennis <u3952328@anu.edu.au>
25
 *
27
 *
26
 * Alternatively, the contents of this file may be used under the terms of
28
 * Alternatively, the contents of this file may be used under the terms of
27
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
29
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
Lines 818-823 Link Here
818
  nsDragDropEventStatus_eDrop  
820
  nsDragDropEventStatus_eDrop  
819
};
821
};
820
822
823
/**
824
 * Event status for an extended mouse button event
825
 * The event (called clickCount) is type PRUint32:
826
 * hence this struct will be of the same size
827
 */
828
typedef struct {
829
  PRUint16 realClickCount;
830
  PRUint8  button;
831
  PRUint8  event;  // eg button went up / down
832
} nsExtendedMouseEventStatus;
833
834
enum {
835
  /// different types of events
836
  nsExtendedMouseEventStatus_up,
837
  nsExtendedMouseEventStatus_down
838
};
821
839
822
#define NS_IS_MOUSE_EVENT(evnt) \
840
#define NS_IS_MOUSE_EVENT(evnt) \
823
       (((evnt)->message == NS_MOUSE_LEFT_BUTTON_DOWN) || \
841
       (((evnt)->message == NS_MOUSE_LEFT_BUTTON_DOWN) || \
824
-- widget/src/gtk/nsGtkEventHandler.cpp
842
++ widget/src/gtk/nsGtkEventHandler.cpp
Lines 292-298 Link Here
292
      case GDK_KP_Add:
292
      case GDK_KP_Add:
293
        return '+';
293
        return '+';
294
      case GDK_KP_Separator:
294
      case GDK_KP_Separator:
295
        return '|';
295
        return ',';
296
      case GDK_KP_Subtract:
296
      case GDK_KP_Subtract:
297
        return '-';
297
        return '-';
298
      case GDK_KP_Decimal:
298
      case GDK_KP_Decimal:
299
-- widget/src/gtk2/Makefile.in
299
++ widget/src/gtk2/Makefile.in
Lines 41-46 Link Here
41
		  dom \
41
		  dom \
42
		  necko \
42
		  necko \
43
		  uconv \
43
		  uconv \
44
		  intl \
44
		  gtkxtbin \
45
		  gtkxtbin \
45
		  xremoteservice
46
		  xremoteservice
46
47
47
-- widget/src/gtk2/nsWindow.cpp
48
++ widget/src/gtk2/nsWindow.cpp
Lines 1396-1401 Link Here
1396
        return;
1396
        return;
1397
1397
1398
    switch (aEvent->button) {
1398
    switch (aEvent->button) {
1399
    case 1:
1400
        eventType = NS_MOUSE_LEFT_BUTTON_DOWN;
1401
        break;
1399
    case 2:
1402
    case 2:
1400
        eventType = NS_MOUSE_MIDDLE_BUTTON_DOWN;
1403
        eventType = NS_MOUSE_MIDDLE_BUTTON_DOWN;
1401
        break;
1404
        break;
Lines 1403-1409 Link Here
1403
        eventType = NS_MOUSE_RIGHT_BUTTON_DOWN;
1406
        eventType = NS_MOUSE_RIGHT_BUTTON_DOWN;
1404
        break;
1407
        break;
1405
    default:
1408
    default:
1406
        eventType = NS_MOUSE_LEFT_BUTTON_DOWN;
1407
        break;
1409
        break;
1408
    }
1410
    }
1409
1411
1410
-- widget/src/gtk2/nsWidgetFactory.cpp
1412
++ widget/src/gtk2/nsWidgetFactory.cpp
Lines 132-138 Link Here
132
  }
132
  }
133
133
134
  nsCOMPtr<nsIFilePicker> picker;
134
  nsCOMPtr<nsIFilePicker> picker;
135
  PRBool enabled = PR_FALSE;
135
  PRBool enabled = PR_TRUE;
136
136
137
  /* need pref fu */
137
  /* need pref fu */
138
138
139
-- widget/src/gtk2/nsGtkKeyUtils.cpp
139
++ widget/src/gtk2/nsGtkKeyUtils.cpp
Lines 270-276 Link Here
270
            case GDK_KP_Add:
270
            case GDK_KP_Add:
271
                return '+';
271
                return '+';
272
            case GDK_KP_Separator:
272
            case GDK_KP_Separator:
273
                return '|';
273
                return ',';
274
            case GDK_KP_Subtract:
274
            case GDK_KP_Subtract:
275
                return '-';
275
                return '-';
276
            case GDK_KP_Decimal:
276
            case GDK_KP_Decimal:
277
-- widget/src/gtk2/nsFilePicker.cpp
277
++ widget/src/gtk2/nsFilePicker.cpp
Lines 38-48 Link Here
38
#include <gtk/gtkwindow.h>
38
#include <gtk/gtkwindow.h>
39
#include <gtk/gtkdialog.h>
39
#include <gtk/gtkdialog.h>
40
#include <gtk/gtkstock.h>
40
#include <gtk/gtkstock.h>
41
#include <gtk/gtklabel.h>
42
#include <gtk/gtkimage.h>
43
#include <gtk/gtkhbox.h>
44
#include <gtk/gtkmessagedialog.h>
41
45
42
#include "nsIFileURL.h"
46
#include "nsIFileURL.h"
43
#include "nsIURI.h"
47
#include "nsIURI.h"
44
#include "nsIWidget.h"
48
#include "nsIWidget.h"
45
#include "nsILocalFile.h"
49
#include "nsILocalFile.h"
50
#include "nsIStringBundle.h"
51
46
#include "nsArrayEnumerator.h"
52
#include "nsArrayEnumerator.h"
47
#include "nsVoidArray.h"
53
#include "nsVoidArray.h"
48
#include "nsMemory.h"
54
#include "nsMemory.h"
Lines 91-96 Link Here
91
typedef void (*_gtk_file_chooser_set_current_name_fn)(GtkFileChooser* chooser, const gchar* name);
97
typedef void (*_gtk_file_chooser_set_current_name_fn)(GtkFileChooser* chooser, const gchar* name);
92
typedef void (*_gtk_file_chooser_set_current_folder_fn)(GtkFileChooser* chooser, const gchar* folder);
98
typedef void (*_gtk_file_chooser_set_current_folder_fn)(GtkFileChooser* chooser, const gchar* folder);
93
typedef void (*_gtk_file_chooser_add_filter_fn)(GtkFileChooser* chooser, GtkFileFilter* filter);
99
typedef void (*_gtk_file_chooser_add_filter_fn)(GtkFileChooser* chooser, GtkFileFilter* filter);
100
typedef void (*_gtk_file_chooser_set_filter_fn)(GtkFileChooser* chooser, GtkFileFilter* filter);
101
typedef GtkFileFilter* (*_gtk_file_chooser_get_filter_fn)(GtkFileChooser* chooser);
102
typedef GSList* (*_gtk_file_chooser_list_filters_fn)(GtkFileChooser* chooser);
94
typedef GtkFileFilter* (*_gtk_file_filter_new_fn)();
103
typedef GtkFileFilter* (*_gtk_file_filter_new_fn)();
95
typedef void (*_gtk_file_filter_add_pattern_fn)(GtkFileFilter* filter, const gchar* pattern);
104
typedef void (*_gtk_file_filter_add_pattern_fn)(GtkFileFilter* filter, const gchar* pattern);
96
typedef void (*_gtk_file_filter_set_name_fn)(GtkFileFilter* filter, const gchar* name);
105
typedef void (*_gtk_file_filter_set_name_fn)(GtkFileFilter* filter, const gchar* name);
Lines 103-108 Link Here
103
DECL_FUNC_PTR(gtk_file_chooser_set_current_name);
112
DECL_FUNC_PTR(gtk_file_chooser_set_current_name);
104
DECL_FUNC_PTR(gtk_file_chooser_set_current_folder);
113
DECL_FUNC_PTR(gtk_file_chooser_set_current_folder);
105
DECL_FUNC_PTR(gtk_file_chooser_add_filter);
114
DECL_FUNC_PTR(gtk_file_chooser_add_filter);
115
DECL_FUNC_PTR(gtk_file_chooser_set_filter);
116
DECL_FUNC_PTR(gtk_file_chooser_get_filter);
117
DECL_FUNC_PTR(gtk_file_chooser_list_filters);
106
DECL_FUNC_PTR(gtk_file_filter_new);
118
DECL_FUNC_PTR(gtk_file_filter_new);
107
DECL_FUNC_PTR(gtk_file_filter_add_pattern);
119
DECL_FUNC_PTR(gtk_file_filter_add_pattern);
108
DECL_FUNC_PTR(gtk_file_filter_set_name);
120
DECL_FUNC_PTR(gtk_file_filter_set_name);
Lines 179-184 Link Here
179
  GET_LIBGTK_FUNC(gtk_file_chooser_set_current_name);
191
  GET_LIBGTK_FUNC(gtk_file_chooser_set_current_name);
180
  GET_LIBGTK_FUNC(gtk_file_chooser_set_current_folder);
192
  GET_LIBGTK_FUNC(gtk_file_chooser_set_current_folder);
181
  GET_LIBGTK_FUNC(gtk_file_chooser_add_filter);
193
  GET_LIBGTK_FUNC(gtk_file_chooser_add_filter);
194
  GET_LIBGTK_FUNC(gtk_file_chooser_set_filter);
195
  GET_LIBGTK_FUNC(gtk_file_chooser_get_filter);
196
  GET_LIBGTK_FUNC(gtk_file_chooser_list_filters);
182
  GET_LIBGTK_FUNC(gtk_file_filter_new);
197
  GET_LIBGTK_FUNC(gtk_file_filter_new);
183
  GET_LIBGTK_FUNC(gtk_file_filter_add_pattern);
198
  GET_LIBGTK_FUNC(gtk_file_filter_add_pattern);
184
  GET_LIBGTK_FUNC(gtk_file_filter_set_name);
199
  GET_LIBGTK_FUNC(gtk_file_filter_set_name);
Lines 272-277 Link Here
272
    g_free(filename);
287
    g_free(filename);
273
  }
288
  }
274
289
290
  GtkFileFilter *filter = _gtk_file_chooser_get_filter (GTK_FILE_CHOOSER(file_chooser));
291
  GSList *filter_list = _gtk_file_chooser_list_filters (GTK_FILE_CHOOSER(file_chooser));
292
293
  mSelectedType = NS_STATIC_CAST(PRInt16, g_slist_index (filter_list, filter));
294
  g_slist_free(filter_list);
295
275
  // Remember last used directory.
296
  // Remember last used directory.
276
  nsCOMPtr<nsILocalFile> file;
297
  nsCOMPtr<nsILocalFile> file;
277
  GetFile(getter_AddRefs(file));
298
  GetFile(getter_AddRefs(file));
Lines 438-443 Link Here
438
  return NS_ERROR_FAILURE;
459
  return NS_ERROR_FAILURE;
439
}
460
}
440
461
462
PRBool
463
confirm_overwrite_file (GtkWidget *parent, nsILocalFile* file)
464
{
465
  nsCOMPtr<nsIStringBundleService> sbs = do_GetService(NS_STRINGBUNDLE_CONTRACTID);
466
  nsCOMPtr<nsIStringBundle> bundle;
467
  nsresult rv = sbs->CreateBundle("chrome://global/locale/filepicker.properties",
468
                                  getter_AddRefs(bundle));
469
  if (NS_FAILED(rv)) {
470
    return PR_FALSE;
471
  }
472
473
  nsAutoString leafName;
474
  file->GetLeafName(leafName);
475
  const PRUnichar *formatStrings[] =
476
  {
477
    leafName.get()
478
  };
479
480
  nsXPIDLString title, message;
481
  bundle->GetStringFromName(NS_LITERAL_STRING("confirmTitle").get(),
482
                            getter_Copies(title));
483
  bundle->FormatStringFromName(NS_LITERAL_STRING("confirmFileReplacing").get(),
484
                               formatStrings, NS_ARRAY_LENGTH(formatStrings),
485
                               getter_Copies(message));
486
487
  GtkWidget *dialog;
488
489
  /*
490
  dialog = gtk_dialog_new_with_buttons (NS_ConvertUCS2toUTF8(title).get(),
491
                                        GTK_WINDOW (parent),
492
                                        GTK_DIALOG_MODAL,
493
                                        GTK_STOCK_YES, GTK_RESPONSE_YES,
494
                                        GTK_STOCK_NO, GTK_RESPONSE_NO,
495
                                        NULL);
496
  hbox = gtk_hbox_new (FALSE, 6);
497
  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 12);
498
  image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
499
  gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
500
  gtk_box_pack_start (GTK_BOX (hbox), image, TRUE, TRUE, 0);
501
502
  label = gtk_label_new(NS_ConvertUCS2toUTF8(message).get());
503
  gtk_label_set_selectable (GTK_LABEL (label), TRUE);
504
  gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
505
  gtk_widget_show_all (hbox);
506
507
  gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
508
  gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog), TRUE);
509
  gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)), 6);
510
  gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_NO);
511
  */
512
  dialog = gtk_message_dialog_new(GTK_WINDOW(parent),
513
                                  GTK_DIALOG_DESTROY_WITH_PARENT,
514
                                  GTK_MESSAGE_QUESTION,
515
                                  GTK_BUTTONS_YES_NO,
516
                                  NS_ConvertUTF16toUTF8(message).get());
517
  gtk_window_set_title(GTK_WINDOW(dialog), NS_ConvertUTF16toUTF8(title).get());
518
  
519
  PRBool result = (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_YES);
520
521
  gtk_widget_destroy (dialog);
522
523
  return result;
524
}
525
441
NS_IMETHODIMP
526
NS_IMETHODIMP
442
nsFilePicker::Show(PRInt16 *aReturn)
527
nsFilePicker::Show(PRInt16 *aReturn)
443
{
528
{
Lines 508-513 Link Here
508
    }
593
    }
509
594
510
    _gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), filter);
595
    _gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), filter);
596
597
    // Set the initially selected filter
598
    if (mSelectedType == i)
599
      _gtk_file_chooser_set_filter (GTK_FILE_CHOOSER(file_chooser), filter);
511
  }
600
  }
512
601
513
  gint response = gtk_dialog_run (GTK_DIALOG (file_chooser));
602
  gint response = gtk_dialog_run (GTK_DIALOG (file_chooser));
Lines 516-529 Link Here
516
    case GTK_RESPONSE_ACCEPT:
605
    case GTK_RESPONSE_ACCEPT:
517
    ReadValuesFromFileChooser(file_chooser);
606
    ReadValuesFromFileChooser(file_chooser);
518
    *aReturn = nsIFilePicker::returnOK;
607
    *aReturn = nsIFilePicker::returnOK;
519
    if (mMode == modeSave) {
608
    if (mMode == nsIFilePicker::modeSave) {
520
      nsCOMPtr<nsILocalFile> file;
609
      nsCOMPtr<nsILocalFile> file;
521
      GetFile(getter_AddRefs(file));
610
      GetFile(getter_AddRefs(file));
522
      if (file) {
611
      if (file) {
523
        PRBool exists = PR_FALSE;
612
        PRBool exists = PR_FALSE;
524
        file->Exists(&exists);
613
        file->Exists(&exists);
525
        if (exists) {
614
        if (exists) {
526
          *aReturn = nsIFilePicker::returnReplace;
615
          PRBool overwrite = confirm_overwrite_file (file_chooser, file);
616
617
          if (overwrite) {
618
            *aReturn = nsIFilePicker::returnReplace;
619
          } else {
620
            *aReturn = nsIFilePicker::returnCancel;    
621
          }
527
        }
622
        }
528
      }
623
      }
529
    }
624
    }
530
-- widget/src/gtk2/nsLookAndFeel.cpp
625
++ widget/src/gtk2/nsLookAndFeel.cpp
Lines 87-108 Link Here
87
        // (except here at least TextSelectBackground and TextSelectForeground)
87
        // (except here at least TextSelectBackground and TextSelectForeground)
88
        // The CSS2 colors below are used.
88
        // The CSS2 colors below are used.
89
    case eColor_WindowBackground:
89
    case eColor_WindowBackground:
90
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
90
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_NORMAL]);
91
        break;
91
        break;
92
    case eColor_WindowForeground:
92
    case eColor_WindowForeground:
93
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
93
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_NORMAL]);
94
        break;
94
        break;
95
    case eColor_WidgetBackground:
95
    case eColor_WidgetBackground:
96
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
96
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_NORMAL]);
97
        break;
97
        break;
98
    case eColor_WidgetForeground:
98
    case eColor_WidgetForeground:
99
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
99
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_NORMAL]);
100
        break;
100
        break;
101
    case eColor_WidgetSelectBackground:
101
    case eColor_WidgetSelectBackground:
102
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_SELECTED]);
102
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_SELECTED]);
103
        break;
103
        break;
104
    case eColor_WidgetSelectForeground:
104
    case eColor_WidgetSelectForeground:
105
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_SELECTED]);
105
        aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_SELECTED]);
106
        break;
106
        break;
107
    case eColor_Widget3DHighlight:
107
    case eColor_Widget3DHighlight:
108
        aColor = NS_RGB(0xa0,0xa0,0xa0);
108
        aColor = NS_RGB(0xa0,0xa0,0xa0);
109
-- xpfe/components/filepicker/src/nsFilePicker.js
109
++ xpfe/components/filepicker/src/nsFilePicker.js
Line 0 Link Here
0
-- xpfe/components/search/src/nsInternetSearchService.cpp
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2
 *
3
 * The contents of this file are subject to the Mozilla Public
4
 * License Version 1.1 (the "License"); you may not use this file
5
 * except in compliance with the License. You may obtain a copy of
6
 * the License at http://www.mozilla.org/MPL/
7
 * 
8
 * Software distributed under the License is distributed on an "AS
9
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
10
 * implied. See the License for the specific language governing
11
 * rights and limitations under the License.
12
 * 
13
 * The Original Code is mozilla.org code.
14
 * 
15
 * The Initial Developer of the Original Code is Netscape
16
 * Communications Corporation.  Portions created by Netscape are
17
 * Copyright (C) 2000 Netscape Communications Corporation.  All
18
 * Rights Reserved.
19
 * 
20
 * Contributor(s): Stuart Parmenter <pavlov@netscape.com>
21
 */
22
23
/*
24
 * No magic constructor behaviour, as is de rigeur for XPCOM.
25
 * If you must perform some initialization, and it could possibly fail (even
26
 * due to an out-of-memory condition), you should use an Init method, which
27
 * can convey failure appropriately (thrown exception in JS,
28
 * NS_FAILED(nsresult) return in C++).
29
 *
30
 * In JS, you can actually cheat, because a thrown exception will cause the
31
 * CreateInstance call to fail in turn, but not all languages are so lucky.
32
 * (Though ANSI C++ provides exceptions, they are verboten in Mozilla code
33
 * for portability reasons -- and even when you're building completely
34
 * platform-specific code, you can't throw across an XPCOM method boundary.)
35
 */
36
37
38
const DEBUG = false; /* set to true to enable debug messages */
39
40
const FILEPICKER_CONTRACTID     = "@mozilla.org/filepicker;1";
41
const FILEPICKER_CID        = Components.ID("{54ae32f8-1dd2-11b2-a209-df7c505370f8}");
42
const LOCAL_FILE_CONTRACTID = "@mozilla.org/file/local;1";
43
const APPSHELL_SERV_CONTRACTID  = "@mozilla.org/appshell/appShellService;1";
44
const STRBUNDLE_SERV_CONTRACTID = "@mozilla.org/intl/stringbundle;1";
45
46
const nsIAppShellService    = Components.interfaces.nsIAppShellService;
47
const nsILocalFile          = Components.interfaces.nsILocalFile;
48
const nsIFileURL            = Components.interfaces.nsIFileURL;
49
const nsISupports           = Components.interfaces.nsISupports;
50
const nsIFactory            = Components.interfaces.nsIFactory;
51
const nsIFilePicker         = Components.interfaces.nsIFilePicker;
52
const nsIInterfaceRequestor = Components.interfaces.nsIInterfaceRequestor
53
const nsIDOMWindow          = Components.interfaces.nsIDOMWindow;
54
const nsIStringBundleService = Components.interfaces.nsIStringBundleService;
55
const nsIWebNavigation      = Components.interfaces.nsIWebNavigation;
56
const nsIDocShellTreeItem   = Components.interfaces.nsIDocShellTreeItem;
57
const nsIBaseWindow         = Components.interfaces.nsIBaseWindow;
58
59
var   bundle                = null;
60
var   lastDirectory         = null;
61
62
function nsFilePicker()
63
{
64
  if (!bundle)
65
    bundle = srGetStrBundle("chrome://global/locale/filepicker.properties");
66
67
  /* attributes */
68
  this.mDefaultString = "";
69
  this.mFilterIndex = 0;
70
  if (lastDirectory) {
71
    this.mDisplayDirectory = Components.classes[LOCAL_FILE_CONTRACTID].createInstance(nsILocalFile);
72
    this.mDisplayDirectory.initWithPath(lastDirectory);
73
  } else {
74
    this.mDisplayDirectory = null;
75
  }
76
  this.mFilterTitles = new Array();
77
  this.mFilters = new Array();
78
}
79
80
nsFilePicker.prototype = {
81
82
  /* attribute nsILocalFile displayDirectory; */
83
  set displayDirectory(a) { this.mDisplayDirectory = a; },
84
  get displayDirectory()  { return this.mDisplayDirectory; },
85
86
  /* readonly attribute nsILocalFile file; */
87
  set file(a) { throw "readonly property"; },
88
  get file()  { return this.mFilesEnumerator.mFiles[0]; },
89
90
  /* readonly attribute nsISimpleEnumerator files; */
91
  set files(a) { throw "readonly property"; },
92
  get files()  { return this.mFilesEnumerator; },
93
94
  /* readonly attribute nsIFileURL fileURL; */
95
  set fileURL(a) { throw "readonly property"; },
96
  get fileURL()  { 
97
    if (this.mFilesEnumerator) {
98
      var ioService = Components.classes["@mozilla.org/network/io-service;1"]
99
                    .getService(Components.interfaces.nsIIOService);
100
      var url       = ioService.newFileURI(this.file);
101
      return url;
102
    }
103
    return null;
104
  },
105
106
  /* attribute wstring defaultString; */
107
  set defaultString(a) { this.mDefaultString = a; },
108
  get defaultString()  { return this.mDefaultString; },
109
110
  /* attribute wstring defaultExtension */
111
  set defaultExtension(ext) { },
112
  get defaultExtension() { return ""; },
113
  
114
  /* attribute long filterIndex; */
115
  set filterIndex(a) { this.mFilterIndex = a; },
116
  get filterIndex() { return this.mFilterIndex; },
117
118
  /* members */
119
  mFilesEnumerator: undefined,
120
  mParentWindow: null,
121
122
  /* methods */
123
  init: function(parent, title, mode) {
124
    this.mParentWindow = parent;
125
    this.mTitle = title;
126
    this.mMode = mode;
127
  },
128
129
  appendFilters: function(filterMask) {
130
    if (filterMask & nsIFilePicker.filterHTML) {
131
      this.appendFilter(bundle.GetStringFromName("htmlTitle"),
132
                   bundle.GetStringFromName("htmlFilter"));
133
    }
134
    if (filterMask & nsIFilePicker.filterText) {
135
      this.appendFilter(bundle.GetStringFromName("textTitle"),
136
                   bundle.GetStringFromName("textFilter"));
137
    }
138
    if (filterMask & nsIFilePicker.filterImages) {
139
      this.appendFilter(bundle.GetStringFromName("imageTitle"),
140
                   bundle.GetStringFromName("imageFilter"));
141
    }
142
    if (filterMask & nsIFilePicker.filterXML) {
143
      this.appendFilter(bundle.GetStringFromName("xmlTitle"),
144
                   bundle.GetStringFromName("xmlFilter"));
145
    }
146
    if (filterMask & nsIFilePicker.filterXUL) {
147
      this.appendFilter(bundle.GetStringFromName("xulTitle"),
148
                   bundle.GetStringFromName("xulFilter"));
149
    }
150
    if (filterMask & nsIFilePicker.filterApps) {
151
      // We use "..apps" as a special filter for executable files
152
      this.appendFilter(bundle.GetStringFromName("appsTitle"),
153
                        "..apps");
154
    }
155
    if (filterMask & nsIFilePicker.filterAll) {
156
      this.appendFilter(bundle.GetStringFromName("allTitle"),
157
                   bundle.GetStringFromName("allFilter"));
158
    }
159
  },
160
161
  appendFilter: function(title, extensions) {
162
    this.mFilterTitles.push(title);
163
    this.mFilters.push(extensions);
164
  },
165
166
  QueryInterface: function(iid) {
167
    if (!iid.equals(nsIFilePicker) &&
168
        !iid.equals(nsISupports))
169
        throw Components.results.NS_ERROR_NO_INTERFACE;
170
    return this;
171
  },
172
173
  show: function() {
174
    var o = new Object();
175
    o.title = this.mTitle;
176
    o.mode = this.mMode;
177
    o.displayDirectory = this.mDisplayDirectory;
178
    o.defaultString = this.mDefaultString;
179
    o.filterIndex = this.mFilterIndex;
180
    o.filters = new Object();
181
    o.filters.titles = this.mFilterTitles;
182
    o.filters.types = this.mFilters;
183
    o.retvals = new Object();
184
185
    var parent;
186
    if (this.mParentWindow) {
187
      parent = this.mParentWindow;
188
    } else if (typeof(window) == "object" && window != null) {
189
      parent = window;
190
    } else {
191
      try {
192
        var appShellService = Components.classes[APPSHELL_SERV_CONTRACTID].getService(nsIAppShellService);
193
        parent = appShellService.hiddenDOMWindow;
194
      } catch(ex) {
195
        debug("Can't get parent.  xpconnect hates me so we can't get one from the appShellService.\n");
196
        debug(ex + "\n");
197
      }
198
    }
199
200
    var parentWin = null;
201
    try {
202
      parentWin = parent.QueryInterface(nsIInterfaceRequestor)
203
                        .getInterface(nsIWebNavigation)
204
                        .QueryInterface(nsIDocShellTreeItem)
205
                        .treeOwner
206
                        .QueryInterface(nsIInterfaceRequestor)
207
                        .getInterface(nsIBaseWindow);
208
    } catch(ex) {
209
      dump("file picker couldn't get base window\n"+ex+"\n");
210
    }
211
    try {
212
      if (parentWin)
213
        parentWin.blurSuppression = true;
214
      parent.openDialog("chrome://global/content/filepicker.xul",
215
                        "",
216
                        "chrome,modal,titlebar,resizable=yes,dependent=yes",
217
                        o);
218
      if (parentWin)
219
        parentWin.blurSuppression = false;
220
221
      this.mFilterIndex = o.retvals.filterIndex;
222
      this.mFilesEnumerator = o.retvals.files;
223
      lastDirectory = o.retvals.directory;
224
      return o.retvals.buttonStatus;
225
    } catch(ex) { dump("unable to open file picker\n" + ex + "\n"); }
226
227
    return null;
228
  }
229
}
230
231
if (DEBUG)
232
    debug = function (s) { dump("-*- filepicker: " + s + "\n"); }
233
else
234
    debug = function (s) {}
235
236
/* module foo */
237
238
var filePickerModule = new Object();
239
240
filePickerModule.registerSelf =
241
function (compMgr, fileSpec, location, type)
242
{
243
    debug("registering (all right -- a JavaScript module!)");
244
    compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
245
246
    compMgr.registerFactoryLocation(FILEPICKER_CID, 
247
                                    "FilePicker JS Component",
248
                                    "",
249
                                    fileSpec, 
250
                                    location,
251
                                    type);
252
}
253
254
filePickerModule.getClassObject =
255
function (compMgr, cid, iid) {
256
    if (!cid.equals(FILEPICKER_CID))
257
        throw Components.results.NS_ERROR_NO_INTERFACE;
258
    
259
    if (!iid.equals(Components.interfaces.nsIFactory))
260
        throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
261
    
262
    return filePickerFactory;
263
}
264
265
filePickerModule.canUnload =
266
function(compMgr)
267
{
268
    debug("Unloading component.");
269
    return true;
270
}
271
    
272
/* factory object */
273
var filePickerFactory = new Object();
274
275
filePickerFactory.createInstance =
276
function (outer, iid) {
277
    debug("CI: " + iid);
278
    debug("IID:" + nsIFilePicker);
279
    if (outer != null)
280
        throw Components.results.NS_ERROR_NO_AGGREGATION;
281
282
    return (new nsFilePicker()).QueryInterface(iid);
283
}
284
285
/* entrypoint */
286
function NSGetModule(compMgr, fileSpec) {
287
    return filePickerModule;
288
}
289
290
291
292
/* crap from strres.js that I want to use for string bundles since I can't include another .js file.... */
293
294
var strBundleService = null;
295
296
function srGetStrBundle(path)
297
{
298
  var strBundle = null;
299
300
  if (!strBundleService) {
301
    try {
302
      strBundleService = Components.classes[STRBUNDLE_SERV_CONTRACTID].getService(nsIStringBundleService);
303
    } catch (ex) {
304
      dump("\n--** strBundleService createInstance failed **--\n");
305
      return null;
306
    }
307
  }
308
309
  strBundle = strBundleService.createBundle(path); 
310
  if (!strBundle) {
311
	dump("\n--** strBundle createInstance failed **--\n");
312
  }
313
  return strBundle;
314
}
315
316
++ xpfe/components/search/src/nsInternetSearchService.cpp
Lines 997-1010 Link Here
997
997
998
		// get available search engines
998
		// get available search engines
999
		nsCOMPtr<nsIFile>			nativeDir;
999
		nsCOMPtr<nsIFile>			nativeDir;
1000
		if (NS_SUCCEEDED(rv = GetSearchFolder(getter_AddRefs(nativeDir))))
1000
                //in profile directory
1001
		{
1001
                rv = GetSearchFolder(getter_AddRefs(nativeDir));
1002
			rv = GetSearchEngineList(nativeDir, PR_FALSE, PR_FALSE);
1002
                NS_ENSURE_SUCCESS(rv, rv);
1003
			
1003
1004
			// read in category list
1004
                rv = GetSearchEngineList(nativeDir, PR_FALSE, PR_FALSE);
1005
			rv = GetCategoryList();
1005
                NS_ENSURE_SUCCESS(rv, rv);
1006
		}
1006
1007
1007
                // in application directory
1008
                rv = GetSearchAppFolder(getter_AddRefs(nativeDir));
1009
                NS_ENSURE_SUCCESS(rv, rv);
1010
                //DOn't return errors even if we failed to load search engines.
1011
                GetSearchEngineList(nativeDir, PR_FALSE, PR_FALSE);
1012
1013
                // read in category list
1014
                rv = GetCategoryList();
1015
                
1008
#ifdef	XP_MAC
1016
#ifdef	XP_MAC
1009
		// on Mac, use system's search files too
1017
		// on Mac, use system's search files too
1010
      	nsCOMPtr<nsIFile> macSearchDir;
1018
      	nsCOMPtr<nsIFile> macSearchDir;
Lines 1400-1411 Link Here
1400
	if (!remoteCategoryDataSource)	return(NS_ERROR_UNEXPECTED);
1408
	if (!remoteCategoryDataSource)	return(NS_ERROR_UNEXPECTED);
1401
1409
1402
	// get search.rdf
1410
	// get search.rdf
1403
		
1411
  
1404
  nsCOMPtr<nsIFile> searchFile;
1412
  nsCOMPtr<nsIFile> searchFile;
1405
  nsCAutoString searchFileURLSpec;
1413
  nsCAutoString searchFileURLSpec;
1406
1414
1407
  rv = NS_GetSpecialDirectory(NS_APP_SEARCH_50_FILE, getter_AddRefs(searchFile));
1415
  rv = GetSearchDatasourceFile(getter_AddRefs(searchFile));
1408
  if (NS_FAILED(rv)) return rv;
1416
  NS_ENSURE_SUCCESS(rv, rv);
1417
1409
  NS_GetURLSpecFromFile(searchFile, searchFileURLSpec);
1418
  NS_GetURLSpecFromFile(searchFile, searchFileURLSpec);
1410
  if (NS_FAILED(rv)) return rv;
1419
  if (NS_FAILED(rv)) return rv;
1411
	rv = remoteCategoryDataSource->Init(searchFileURLSpec.get());
1420
	rv = remoteCategoryDataSource->Init(searchFileURLSpec.get());
Lines 2560-2565 Link Here
2560
	nsCOMPtr<nsIFile>	outFile;
2569
	nsCOMPtr<nsIFile>	outFile;
2561
	if (NS_FAILED(rv = GetSearchFolder(getter_AddRefs(outFile))))		return(rv);
2570
	if (NS_FAILED(rv = GetSearchFolder(getter_AddRefs(outFile))))		return(rv);
2562
2571
2572
	PRBool exists; 
2573
	rv = outFile->Exists(&exists); 
2574
	if (NS_FAILED(rv)) return(rv);
2575
	if (!exists)
2576
	{
2577
		rv = outFile->Create(nsIFile::DIRECTORY_TYPE, 0755);
2578
		if (NS_FAILED(rv)) return(rv);
2579
	}
2580
2563
	const PRUnichar	*dataBuf = nsnull;
2581
	const PRUnichar	*dataBuf = nsnull;
2564
	if (NS_FAILED(rv = context->GetBufferConst(&dataBuf)))	return(rv);
2582
	if (NS_FAILED(rv = context->GetBufferConst(&dataBuf)))	return(rv);
2565
2583
Lines 4091-4114 Link Here
4091
	return(rv);
4109
	return(rv);
4092
}
4110
}
4093
4111
4112
nsresult
4113
InternetSearchDataSource::GetSearchAppFolder(nsIFile **aDir)
4114
{
4115
  NS_ENSURE_ARG_POINTER(aDir);
4116
  *aDir = nsnull;
4094
4117
4118
  nsCOMPtr<nsIFile> searchDir;
4119
  nsresult rv = NS_GetSpecialDirectory(NS_APP_SEARCH_DIR,
4120
                                       getter_AddRefs(searchDir));
4121
  NS_ENSURE_SUCCESS(rv, rv);
4122
4123
  // addref
4124
  *aDir = searchDir;
4125
  NS_ADDREF(*aDir);
4126
  return NS_OK;
4127
}
4095
4128
4096
nsresult
4129
nsresult
4097
InternetSearchDataSource::GetSearchFolder(nsIFile **searchDir)
4130
InternetSearchDataSource::GetSearchFolder(nsIFile **aDir)
4098
{
4131
{
4099
  NS_ENSURE_ARG_POINTER(searchDir);
4132
  NS_ENSURE_ARG_POINTER(aDir);
4100
  *searchDir = nsnull;
4133
  *aDir = nsnull;
4134
  PRBool exists;
4101
	
4135
	
4102
  nsCOMPtr<nsIFile> aDir;
4136
  nsCOMPtr<nsIFile> searchDir;
4103
  nsresult rv = NS_GetSpecialDirectory(NS_APP_SEARCH_DIR, getter_AddRefs(aDir));
4137
  nsresult rv = NS_GetSpecialDirectory(NS_APP_USER_SEARCH_50_DIR, 
4104
  if (NS_FAILED(rv)) return rv;
4138
                                       getter_AddRefs(searchDir));
4139
  NS_ENSURE_SUCCESS(rv, rv);
4140
  
4141
  // If target directory doesn't exist in profile,
4142
  // creates an empty directory
4143
4144
  rv = searchDir->Exists(&exists);
4145
  NS_ENSURE_SUCCESS(rv, rv);
4146
4147
  if(!exists){
4148
    rv = searchDir->Create(nsIFile::DIRECTORY_TYPE, 0700);
4149
    NS_ENSURE_SUCCESS(rv, rv);
4150
  }
4105
  
4151
  
4106
  *searchDir = aDir;
4152
  // addref
4107
  NS_ADDREF(*searchDir);
4153
  *aDir = searchDir;
4154
  NS_ADDREF(*aDir);
4108
  return NS_OK;
4155
  return NS_OK;
4109
}
4156
}
4110
4157
4158
nsresult
4159
InternetSearchDataSource::GetSearchDatasourceFile(nsIFile **aFile)
4160
{
4161
  NS_ENSURE_ARG_POINTER(aFile);
4111
4162
4163
  nsresult rv;
4164
4165
  nsCOMPtr<nsIFile> file;
4166
  rv = GetSearchFolder(getter_AddRefs(file));
4167
  NS_ENSURE_SUCCESS(rv, rv);
4168
4169
  // addref
4170
  *aFile = file;
4171
  NS_ADDREF(*aFile);
4172
  return NS_OK;
4173
}
4112
4174
4113
nsresult
4175
nsresult
4114
InternetSearchDataSource::SaveEngineInfoIntoGraph(nsIFile *file, nsIFile *icon,
4176
InternetSearchDataSource::SaveEngineInfoIntoGraph(nsIFile *file, nsIFile *icon,
Lines 4315-4321 Link Here
4315
InternetSearchDataSource::GetSearchEngineList(nsIFile *searchDir,
4377
InternetSearchDataSource::GetSearchEngineList(nsIFile *searchDir,
4316
              PRBool isSystemSearchFile, PRBool checkMacFileType)
4378
              PRBool isSystemSearchFile, PRBool checkMacFileType)
4317
{
4379
{
4318
        nsresult			rv = NS_OK;
4380
    nsresult			rv = NS_OK;
4319
4381
4320
    if (!mInner)
4382
    if (!mInner)
4321
    {
4383
    {
Lines 6435-6442 Link Here
6435
        {
6497
        {
6436
            // Delete search.rdf
6498
            // Delete search.rdf
6437
            nsCOMPtr<nsIFile> searchFile;
6499
            nsCOMPtr<nsIFile> searchFile;
6438
            rv = NS_GetSpecialDirectory(NS_APP_SEARCH_50_FILE, getter_AddRefs(searchFile));
6500
6439
            if (NS_SUCCEEDED(rv))
6501
            rv = GetSearchDatasourceFile(getter_AddRefs(searchFile));
6502
            NS_ENSURE_SUCCESS(rv, rv);
6503
6504
            PRBool exists;
6505
            rv = searchFile->Exists(&exists);
6506
            NS_ENSURE_SUCCESS(rv, rv);
6507
            
6508
            if (exists)
6440
                rv = searchFile->Remove(PR_FALSE);
6509
                rv = searchFile->Remove(PR_FALSE);
6441
        }
6510
        }
6442
    }
6511
    }
6443
-- xpfe/components/search/src/nsInternetSearchService.h
6512
++ xpfe/components/search/src/nsInternetSearchService.h
Lines 158-163 Link Here
158
  nsresult  GetSearchEngineList(nsIFile *spec, PRBool isSystemSearchFile, PRBool checkMacFileType);
158
  nsresult  GetSearchEngineList(nsIFile *spec, PRBool isSystemSearchFile, PRBool checkMacFileType);
159
  nsresult  GetCategoryList();
159
  nsresult  GetCategoryList();
160
  nsresult  GetSearchFolder(nsIFile **spec);
160
  nsresult  GetSearchFolder(nsIFile **spec);
161
  nsresult  GetSearchAppFolder(nsIFile **spec);
162
  nsresult  GetSearchDatasourceFile(nsIFile **spec);
161
  nsresult  ReadFileContents(nsILocalFile *baseFilename, nsString & sourceContents);
163
  nsresult  ReadFileContents(nsILocalFile *baseFilename, nsString & sourceContents);
162
  nsresult  DecodeData(const char *aCharset, const PRUnichar *aInString, PRUnichar **aOutString);
164
  nsresult  DecodeData(const char *aCharset, const PRUnichar *aInString, PRUnichar **aOutString);
163
  nsresult  GetData(const PRUnichar *data, const char *sectionToFind, PRUint32 sectionNum, const char *attribToFind, nsString &value);
165
  nsresult  GetData(const PRUnichar *data, const char *sectionToFind, PRUint32 sectionNum, const char *attribToFind, nsString &value);
164
-- xpfe/global/resources/content/bindings/browser.xml
166
++ xpfe/global/resources/content/bindings/browser.xml
Lines 322-327 Link Here
322
        null
322
        null
323
      </field>
323
      </field>
324
324
325
      <field name="mDestroyed">
326
        false
327
      </field>
328
325
      <property name="userTypedValue"
329
      <property name="userTypedValue"
326
                onget="return this._userTypedValue;"
330
                onget="return this._userTypedValue;"
327
                onset="this.userTypedClear = 0; return this._userTypedValue = val;"/>
331
                onset="this.userTypedClear = 0; return this._userTypedValue = val;"/>
Lines 360-371 Link Here
360
      
364
      
361
      <destructor>
365
      <destructor>
362
        <![CDATA[
366
        <![CDATA[
367
          this.destroy();
368
        ]]>
369
      </destructor>
370
371
      <!-- This is necessary because the destructor is not called
372
           promptly when we are removed from a tabbrowser. This will be
373
           explicitly called by tabbrowser -->
374
      <method name="destroy">
375
        <body>
376
        <![CDATA[
377
          if (this.mDestroyed)
378
            return;
379
          this.mDestroyed = true;
380
363
          if (this.mDragDropHandler)
381
          if (this.mDragDropHandler)
364
            this.mDragDropHandler.detach();
382
            this.mDragDropHandler.detach();
383
          this.mDragDropHandler = null;
365
384
366
          this.securityUI = null;
385
          this.securityUI = null;
386
          this.focusedWindow = null;
387
          this.focusedElement = null;
388
          this._webBrowserFind = null;
367
        ]]>
389
        ]]>
368
      </destructor>
390
        </body>
391
      </method>
369
    </implementation>
392
    </implementation>
370
393
371
    <handlers>
394
    <handlers>
372
-- xpfe/global/resources/content/bindings/tabbrowser.xml
395
++ xpfe/global/resources/content/bindings/tabbrowser.xml
Lines 995-1000 Link Here
995
            // clean up the before/afterselected attributes before removing the tab
995
            // clean up the before/afterselected attributes before removing the tab
996
            oldTab.selected = false;
996
            oldTab.selected = false;
997
997
998
            // Because of the way XBL works (fields just set JS
999
            // properties on the element) and the code we have in place
1000
            // to preserve the JS objects for any elements that have
1001
            // JS properties set on them, the browser element won't be
1002
            // destroyed until the document goes away.  So we force a
1003
            // cleanup ourselves.
1004
            // This has to hapen before we remove the child so that the
1005
            // XBL implementation of nsIObserver still works.
1006
            oldBrowser.destroy();
1007
1008
            if (oldBrowser == this.mCurrentBrowser)
1009
              this.mCurrentBrowser = null;
1010
998
            this.mTabContainer.removeChild(oldTab);
1011
            this.mTabContainer.removeChild(oldTab);
999
            this.mPanelContainer.removeChild(oldBrowser);
1012
            this.mPanelContainer.removeChild(oldBrowser);
1000
1013
1001
-- configure
1014
++ configure
Lines 90-101 Link Here
90
ac_help="$ac_help
90
ac_help="$ac_help
91
  --enable-xft            Enable Xft support "
91
  --enable-xft            Enable Xft support "
92
ac_help="$ac_help
92
ac_help="$ac_help
93
  --enable-pango          Enable Pango font rendering support"
94
ac_help="$ac_help
93
  --disable-postscript    Disable PostScript printing support "
95
  --disable-postscript    Disable PostScript printing support "
94
ac_help="$ac_help
96
ac_help="$ac_help
95
  --disable-xprint        Disable Xprint printing support "
97
  --disable-xprint        Disable Xprint printing support "
96
ac_help="$ac_help
98
ac_help="$ac_help
97
  --disable-gnomevfs      Disable GnomeVFS support "
99
  --disable-gnomevfs      Disable GnomeVFS support "
98
ac_help="$ac_help
100
ac_help="$ac_help
101
  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) "
102
ac_help="$ac_help
99
  --enable-crypto         Enable crypto support (Personal Security Manager)"
103
  --enable-crypto         Enable crypto support (Personal Security Manager)"
100
ac_help="$ac_help
104
ac_help="$ac_help
101
  --disable-jsd           Disable JavaScript debug library"
105
  --disable-jsd           Disable JavaScript debug library"
Lines 881-887 Link Here
881
fi
885
fi
882
886
883
echo $ac_n "checking host system type""... $ac_c" 1>&6
887
echo $ac_n "checking host system type""... $ac_c" 1>&6
884
echo "configure:885: checking host system type" >&5
888
echo "configure:889: checking host system type" >&5
885
889
886
host_alias=$host
890
host_alias=$host
887
case "$host_alias" in
891
case "$host_alias" in
Lines 902-908 Link Here
902
echo "$ac_t""$host" 1>&6
906
echo "$ac_t""$host" 1>&6
903
907
904
echo $ac_n "checking target system type""... $ac_c" 1>&6
908
echo $ac_n "checking target system type""... $ac_c" 1>&6
905
echo "configure:906: checking target system type" >&5
909
echo "configure:910: checking target system type" >&5
906
910
907
target_alias=$target
911
target_alias=$target
908
case "$target_alias" in
912
case "$target_alias" in
Lines 920-926 Link Here
920
echo "$ac_t""$target" 1>&6
924
echo "$ac_t""$target" 1>&6
921
925
922
echo $ac_n "checking build system type""... $ac_c" 1>&6
926
echo $ac_n "checking build system type""... $ac_c" 1>&6
923
echo "configure:924: checking build system type" >&5
927
echo "configure:928: checking build system type" >&5
924
928
925
build_alias=$build
929
build_alias=$build
926
case "$build_alias" in
930
case "$build_alias" in
Lines 981-986 Link Here
981
MAKE_VERSION=3.78
985
MAKE_VERSION=3.78
982
WINDRES_VERSION=2.14.90
986
WINDRES_VERSION=2.14.90
983
W32API_VERSION=2.4
987
W32API_VERSION=2.4
988
GNOMEUI_VERSION=2.0.6
984
GNOMEVFS_VERSION=2.0
989
GNOMEVFS_VERSION=2.0
985
GCONF_VERSION=1.2.1
990
GCONF_VERSION=1.2.1
986
LIBGNOME_VERSION=2.0
991
LIBGNOME_VERSION=2.0
Lines 1045-1057 Link Here
1045
    _SAVE_LDFLAGS="$LDFLAGS"
1050
    _SAVE_LDFLAGS="$LDFLAGS"
1046
1051
1047
    echo $ac_n "checking for host c compiler""... $ac_c" 1>&6
1052
    echo $ac_n "checking for host c compiler""... $ac_c" 1>&6
1048
echo "configure:1049: checking for host c compiler" >&5
1053
echo "configure:1054: checking for host c compiler" >&5
1049
    for ac_prog in $HOST_CC gcc cc /usr/ucb/cc cl icc
1054
    for ac_prog in $HOST_CC gcc cc /usr/ucb/cc cl icc
1050
do
1055
do
1051
# Extract the first word of "$ac_prog", so it can be a program name with args.
1056
# Extract the first word of "$ac_prog", so it can be a program name with args.
1052
set dummy $ac_prog; ac_word=$2
1057
set dummy $ac_prog; ac_word=$2
1053
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1058
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1054
echo "configure:1055: checking for $ac_word" >&5
1059
echo "configure:1060: checking for $ac_word" >&5
1055
if eval "test \"`echo '$''{'ac_cv_prog_HOST_CC'+set}'`\" = set"; then
1060
if eval "test \"`echo '$''{'ac_cv_prog_HOST_CC'+set}'`\" = set"; then
1056
  echo $ac_n "(cached) $ac_c" 1>&6
1061
  echo $ac_n "(cached) $ac_c" 1>&6
1057
else
1062
else
Lines 1086-1098 Link Here
1086
    fi
1091
    fi
1087
    echo "$ac_t""$HOST_CC" 1>&6
1092
    echo "$ac_t""$HOST_CC" 1>&6
1088
    echo $ac_n "checking for host c++ compiler""... $ac_c" 1>&6
1093
    echo $ac_n "checking for host c++ compiler""... $ac_c" 1>&6
1089
echo "configure:1090: checking for host c++ compiler" >&5
1094
echo "configure:1095: checking for host c++ compiler" >&5
1090
    for ac_prog in $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc
1095
    for ac_prog in $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc
1091
do
1096
do
1092
# Extract the first word of "$ac_prog", so it can be a program name with args.
1097
# Extract the first word of "$ac_prog", so it can be a program name with args.
1093
set dummy $ac_prog; ac_word=$2
1098
set dummy $ac_prog; ac_word=$2
1094
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1099
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1095
echo "configure:1096: checking for $ac_word" >&5
1100
echo "configure:1101: checking for $ac_word" >&5
1096
if eval "test \"`echo '$''{'ac_cv_prog_HOST_CXX'+set}'`\" = set"; then
1101
if eval "test \"`echo '$''{'ac_cv_prog_HOST_CXX'+set}'`\" = set"; then
1097
  echo $ac_n "(cached) $ac_c" 1>&6
1102
  echo $ac_n "(cached) $ac_c" 1>&6
1098
else
1103
else
Lines 1141-1147 Link Here
1141
# Extract the first word of "$ac_prog", so it can be a program name with args.
1146
# Extract the first word of "$ac_prog", so it can be a program name with args.
1142
set dummy $ac_prog; ac_word=$2
1147
set dummy $ac_prog; ac_word=$2
1143
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1148
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1144
echo "configure:1145: checking for $ac_word" >&5
1149
echo "configure:1150: checking for $ac_word" >&5
1145
if eval "test \"`echo '$''{'ac_cv_prog_HOST_RANLIB'+set}'`\" = set"; then
1150
if eval "test \"`echo '$''{'ac_cv_prog_HOST_RANLIB'+set}'`\" = set"; then
1146
  echo $ac_n "(cached) $ac_c" 1>&6
1151
  echo $ac_n "(cached) $ac_c" 1>&6
1147
else
1152
else
Lines 1176-1182 Link Here
1176
# Extract the first word of "$ac_prog", so it can be a program name with args.
1181
# Extract the first word of "$ac_prog", so it can be a program name with args.
1177
set dummy $ac_prog; ac_word=$2
1182
set dummy $ac_prog; ac_word=$2
1178
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1183
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1179
echo "configure:1180: checking for $ac_word" >&5
1184
echo "configure:1185: checking for $ac_word" >&5
1180
if eval "test \"`echo '$''{'ac_cv_prog_HOST_AR'+set}'`\" = set"; then
1185
if eval "test \"`echo '$''{'ac_cv_prog_HOST_AR'+set}'`\" = set"; then
1181
  echo $ac_n "(cached) $ac_c" 1>&6
1186
  echo $ac_n "(cached) $ac_c" 1>&6
1182
else
1187
else
Lines 1211-1226 Link Here
1211
    LDFLAGS="$HOST_LDFLAGS"
1216
    LDFLAGS="$HOST_LDFLAGS"
1212
1217
1213
    echo $ac_n "checking whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works""... $ac_c" 1>&6
1218
    echo $ac_n "checking whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works""... $ac_c" 1>&6
1214
echo "configure:1215: checking whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works" >&5
1219
echo "configure:1220: checking whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works" >&5
1215
    cat > conftest.$ac_ext <<EOF
1220
    cat > conftest.$ac_ext <<EOF
1216
#line 1217 "configure"
1221
#line 1222 "configure"
1217
#include "confdefs.h"
1222
#include "confdefs.h"
1218
1223
1219
int main() {
1224
int main() {
1220
return(0);
1225
return(0);
1221
; return 0; }
1226
; return 0; }
1222
EOF
1227
EOF
1223
if { (eval echo configure:1224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
1228
if { (eval echo configure:1229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
1224
  rm -rf conftest*
1229
  rm -rf conftest*
1225
  ac_cv_prog_hostcc_works=1 echo "$ac_t""yes" 1>&6
1230
  ac_cv_prog_hostcc_works=1 echo "$ac_t""yes" 1>&6
1226
else
1231
else
Lines 1235-1250 Link Here
1235
    CFLAGS="$HOST_CXXFLAGS"
1240
    CFLAGS="$HOST_CXXFLAGS"
1236
1241
1237
    echo $ac_n "checking whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works""... $ac_c" 1>&6
1242
    echo $ac_n "checking whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works""... $ac_c" 1>&6
1238
echo "configure:1239: checking whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works" >&5
1243
echo "configure:1244: checking whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works" >&5
1239
    cat > conftest.$ac_ext <<EOF
1244
    cat > conftest.$ac_ext <<EOF
1240
#line 1241 "configure"
1245
#line 1246 "configure"
1241
#include "confdefs.h"
1246
#include "confdefs.h"
1242
1247
1243
int main() {
1248
int main() {
1244
return(0);
1249
return(0);
1245
; return 0; }
1250
; return 0; }
1246
EOF
1251
EOF
1247
if { (eval echo configure:1248: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
1252
if { (eval echo configure:1253: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
1248
  rm -rf conftest*
1253
  rm -rf conftest*
1249
  ac_cv_prog_hostcxx_works=1 echo "$ac_t""yes" 1>&6
1254
  ac_cv_prog_hostcxx_works=1 echo "$ac_t""yes" 1>&6
1250
else
1255
else
Lines 1264-1270 Link Here
1264
# Extract the first word of "$ac_prog", so it can be a program name with args.
1269
# Extract the first word of "$ac_prog", so it can be a program name with args.
1265
set dummy $ac_prog; ac_word=$2
1270
set dummy $ac_prog; ac_word=$2
1266
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1271
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1267
echo "configure:1268: checking for $ac_word" >&5
1272
echo "configure:1273: checking for $ac_word" >&5
1268
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1273
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1269
  echo $ac_n "(cached) $ac_c" 1>&6
1274
  echo $ac_n "(cached) $ac_c" 1>&6
1270
else
1275
else
Lines 1298-1304 Link Here
1298
    # Extract the first word of "gcc", so it can be a program name with args.
1303
    # Extract the first word of "gcc", so it can be a program name with args.
1299
set dummy gcc; ac_word=$2
1304
set dummy gcc; ac_word=$2
1300
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1305
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1301
echo "configure:1302: checking for $ac_word" >&5
1306
echo "configure:1307: checking for $ac_word" >&5
1302
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1307
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1303
  echo $ac_n "(cached) $ac_c" 1>&6
1308
  echo $ac_n "(cached) $ac_c" 1>&6
1304
else
1309
else
Lines 1328-1334 Link Here
1328
  # Extract the first word of "cc", so it can be a program name with args.
1333
  # Extract the first word of "cc", so it can be a program name with args.
1329
set dummy cc; ac_word=$2
1334
set dummy cc; ac_word=$2
1330
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1335
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1331
echo "configure:1332: checking for $ac_word" >&5
1336
echo "configure:1337: checking for $ac_word" >&5
1332
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1337
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1333
  echo $ac_n "(cached) $ac_c" 1>&6
1338
  echo $ac_n "(cached) $ac_c" 1>&6
1334
else
1339
else
Lines 1379-1385 Link Here
1379
      # Extract the first word of "cl", so it can be a program name with args.
1384
      # Extract the first word of "cl", so it can be a program name with args.
1380
set dummy cl; ac_word=$2
1385
set dummy cl; ac_word=$2
1381
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1386
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1382
echo "configure:1383: checking for $ac_word" >&5
1387
echo "configure:1388: checking for $ac_word" >&5
1383
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1388
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1384
  echo $ac_n "(cached) $ac_c" 1>&6
1389
  echo $ac_n "(cached) $ac_c" 1>&6
1385
else
1390
else
Lines 1411-1417 Link Here
1411
fi
1416
fi
1412
1417
1413
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
1418
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
1414
echo "configure:1415: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
1419
echo "configure:1420: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
1415
1420
1416
ac_ext=c
1421
ac_ext=c
1417
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
1422
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
Lines 1422-1433 Link Here
1422
1427
1423
cat > conftest.$ac_ext << EOF
1428
cat > conftest.$ac_ext << EOF
1424
1429
1425
#line 1426 "configure"
1430
#line 1431 "configure"
1426
#include "confdefs.h"
1431
#include "confdefs.h"
1427
1432
1428
main(){return(0);}
1433
main(){return(0);}
1429
EOF
1434
EOF
1430
if { (eval echo configure:1431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
1435
if { (eval echo configure:1436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
1431
  ac_cv_prog_cc_works=yes
1436
  ac_cv_prog_cc_works=yes
1432
  # If we can't run a trivial program, we are probably using a cross compiler.
1437
  # If we can't run a trivial program, we are probably using a cross compiler.
1433
  if (./conftest; exit) 2>/dev/null; then
1438
  if (./conftest; exit) 2>/dev/null; then
Lines 1453-1464 Link Here
1453
  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
1458
  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
1454
fi
1459
fi
1455
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
1460
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
1456
echo "configure:1457: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
1461
echo "configure:1462: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
1457
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
1462
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
1458
cross_compiling=$ac_cv_prog_cc_cross
1463
cross_compiling=$ac_cv_prog_cc_cross
1459
1464
1460
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
1465
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
1461
echo "configure:1462: checking whether we are using GNU C" >&5
1466
echo "configure:1467: checking whether we are using GNU C" >&5
1462
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
1467
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
1463
  echo $ac_n "(cached) $ac_c" 1>&6
1468
  echo $ac_n "(cached) $ac_c" 1>&6
1464
else
1469
else
Lines 1467-1473 Link Here
1467
  yes;
1472
  yes;
1468
#endif
1473
#endif
1469
EOF
1474
EOF
1470
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
1475
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1476: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
1471
  ac_cv_prog_gcc=yes
1476
  ac_cv_prog_gcc=yes
1472
else
1477
else
1473
  ac_cv_prog_gcc=no
1478
  ac_cv_prog_gcc=no
Lines 1486-1492 Link Here
1486
ac_save_CFLAGS="$CFLAGS"
1491
ac_save_CFLAGS="$CFLAGS"
1487
CFLAGS=
1492
CFLAGS=
1488
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
1493
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
1489
echo "configure:1490: checking whether ${CC-cc} accepts -g" >&5
1494
echo "configure:1495: checking whether ${CC-cc} accepts -g" >&5
1490
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
1495
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
1491
  echo $ac_n "(cached) $ac_c" 1>&6
1496
  echo $ac_n "(cached) $ac_c" 1>&6
1492
else
1497
else
Lines 1522-1528 Link Here
1522
# Extract the first word of "$ac_prog", so it can be a program name with args.
1527
# Extract the first word of "$ac_prog", so it can be a program name with args.
1523
set dummy $ac_prog; ac_word=$2
1528
set dummy $ac_prog; ac_word=$2
1524
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1529
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1525
echo "configure:1526: checking for $ac_word" >&5
1530
echo "configure:1531: checking for $ac_word" >&5
1526
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
1531
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
1527
  echo $ac_n "(cached) $ac_c" 1>&6
1532
  echo $ac_n "(cached) $ac_c" 1>&6
1528
else
1533
else
Lines 1558-1564 Link Here
1558
# Extract the first word of "$ac_prog", so it can be a program name with args.
1563
# Extract the first word of "$ac_prog", so it can be a program name with args.
1559
set dummy $ac_prog; ac_word=$2
1564
set dummy $ac_prog; ac_word=$2
1560
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1565
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1561
echo "configure:1562: checking for $ac_word" >&5
1566
echo "configure:1567: checking for $ac_word" >&5
1562
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
1567
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
1563
  echo $ac_n "(cached) $ac_c" 1>&6
1568
  echo $ac_n "(cached) $ac_c" 1>&6
1564
else
1569
else
Lines 1590-1596 Link Here
1590
1595
1591
1596
1592
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
1597
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
1593
echo "configure:1594: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
1598
echo "configure:1599: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
1594
1599
1595
ac_ext=C
1600
ac_ext=C
1596
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
1601
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
Lines 1601-1612 Link Here
1601
1606
1602
cat > conftest.$ac_ext << EOF
1607
cat > conftest.$ac_ext << EOF
1603
1608
1604
#line 1605 "configure"
1609
#line 1610 "configure"
1605
#include "confdefs.h"
1610
#include "confdefs.h"
1606
1611
1607
int main(){return(0);}
1612
int main(){return(0);}
1608
EOF
1613
EOF
1609
if { (eval echo configure:1610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
1614
if { (eval echo configure:1615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
1610
  ac_cv_prog_cxx_works=yes
1615
  ac_cv_prog_cxx_works=yes
1611
  # If we can't run a trivial program, we are probably using a cross compiler.
1616
  # If we can't run a trivial program, we are probably using a cross compiler.
1612
  if (./conftest; exit) 2>/dev/null; then
1617
  if (./conftest; exit) 2>/dev/null; then
Lines 1632-1643 Link Here
1632
  { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
1637
  { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
1633
fi
1638
fi
1634
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
1639
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
1635
echo "configure:1636: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
1640
echo "configure:1641: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
1636
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
1641
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
1637
cross_compiling=$ac_cv_prog_cxx_cross
1642
cross_compiling=$ac_cv_prog_cxx_cross
1638
1643
1639
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
1644
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
1640
echo "configure:1641: checking whether we are using GNU C++" >&5
1645
echo "configure:1646: checking whether we are using GNU C++" >&5
1641
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
1646
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
1642
  echo $ac_n "(cached) $ac_c" 1>&6
1647
  echo $ac_n "(cached) $ac_c" 1>&6
1643
else
1648
else
Lines 1646-1652 Link Here
1646
  yes;
1651
  yes;
1647
#endif
1652
#endif
1648
EOF
1653
EOF
1649
if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1650: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
1654
if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
1650
  ac_cv_prog_gxx=yes
1655
  ac_cv_prog_gxx=yes
1651
else
1656
else
1652
  ac_cv_prog_gxx=no
1657
  ac_cv_prog_gxx=no
Lines 1665-1671 Link Here
1665
ac_save_CXXFLAGS="$CXXFLAGS"
1670
ac_save_CXXFLAGS="$CXXFLAGS"
1666
CXXFLAGS=
1671
CXXFLAGS=
1667
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
1672
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
1668
echo "configure:1669: checking whether ${CXX-g++} accepts -g" >&5
1673
echo "configure:1674: checking whether ${CXX-g++} accepts -g" >&5
1669
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
1674
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
1670
  echo $ac_n "(cached) $ac_c" 1>&6
1675
  echo $ac_n "(cached) $ac_c" 1>&6
1671
else
1676
else
Lines 1696-1758 Link Here
1696
  fi
1701
  fi
1697
fi
1702
fi
1698
1703
1699
for ac_declaration in \
1700
   ''\
1701
   '#include <stdlib.h>' \
1702
   'extern "C" void std::exit (int) throw (); using std::exit;' \
1703
   'extern "C" void std::exit (int); using std::exit;' \
1704
   'extern "C" void exit (int) throw ();' \
1705
   'extern "C" void exit (int);' \
1706
   'void exit (int);'
1707
do
1708
  cat > conftest.$ac_ext <<EOF
1709
#line 1710 "configure"
1710
#include "confdefs.h"
1711
#include <stdlib.h>
1712
$ac_declaration
1713
int main() {
1714
exit (42);
1715
; return 0; }
1716
EOF
1717
if { (eval echo configure:1718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
1718
  :
1719
else
1720
  echo "configure: failed program was:" >&5
1721
  cat conftest.$ac_ext >&5
1722
  rm -rf conftest*
1723
  continue
1724
fi
1725
rm -f conftest*
1726
  cat > conftest.$ac_ext <<EOF
1727
#line 1728 "configure"
1728
#include "confdefs.h"
1729
$ac_declaration
1730
int main() {
1731
exit (42);
1732
; return 0; }
1733
EOF
1734
if { (eval echo configure:1735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
1735
  rm -rf conftest*
1736
  break
1737
else
1738
  echo "configure: failed program was:" >&5
1739
  cat conftest.$ac_ext >&5
1740
fi
1741
rm -f conftest*
1742
done
1743
if test -n "$ac_declaration"; then
1744
  echo '#ifdef __cplusplus' >>confdefs.h
1745
  echo $ac_declaration      >>confdefs.h
1746
  echo '#endif'             >>confdefs.h
1747
fi
1748
1749
1750
    for ac_prog in $RANLIB "${target_alias}-ranlib" "${target}-ranlib"
1704
    for ac_prog in $RANLIB "${target_alias}-ranlib" "${target}-ranlib"
1751
do
1705
do
1752
# Extract the first word of "$ac_prog", so it can be a program name with args.
1706
# Extract the first word of "$ac_prog", so it can be a program name with args.
1753
set dummy $ac_prog; ac_word=$2
1707
set dummy $ac_prog; ac_word=$2
1754
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1708
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1755
echo "configure:1756: checking for $ac_word" >&5
1709
echo "configure:1710: checking for $ac_word" >&5
1756
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
1710
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
1757
  echo $ac_n "(cached) $ac_c" 1>&6
1711
  echo $ac_n "(cached) $ac_c" 1>&6
1758
else
1712
else
Lines 1787-1793 Link Here
1787
# Extract the first word of "$ac_prog", so it can be a program name with args.
1741
# Extract the first word of "$ac_prog", so it can be a program name with args.
1788
set dummy $ac_prog; ac_word=$2
1742
set dummy $ac_prog; ac_word=$2
1789
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1743
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1790
echo "configure:1791: checking for $ac_word" >&5
1744
echo "configure:1745: checking for $ac_word" >&5
1791
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
1745
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
1792
  echo $ac_n "(cached) $ac_c" 1>&6
1746
  echo $ac_n "(cached) $ac_c" 1>&6
1793
else
1747
else
Lines 1822-1828 Link Here
1822
# Extract the first word of "$ac_prog", so it can be a program name with args.
1776
# Extract the first word of "$ac_prog", so it can be a program name with args.
1823
set dummy $ac_prog; ac_word=$2
1777
set dummy $ac_prog; ac_word=$2
1824
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1778
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1825
echo "configure:1826: checking for $ac_word" >&5
1779
echo "configure:1780: checking for $ac_word" >&5
1826
if eval "test \"`echo '$''{'ac_cv_path_AS'+set}'`\" = set"; then
1780
if eval "test \"`echo '$''{'ac_cv_path_AS'+set}'`\" = set"; then
1827
  echo $ac_n "(cached) $ac_c" 1>&6
1781
  echo $ac_n "(cached) $ac_c" 1>&6
1828
else
1782
else
Lines 1863-1869 Link Here
1863
# Extract the first word of "$ac_prog", so it can be a program name with args.
1817
# Extract the first word of "$ac_prog", so it can be a program name with args.
1864
set dummy $ac_prog; ac_word=$2
1818
set dummy $ac_prog; ac_word=$2
1865
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1819
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1866
echo "configure:1867: checking for $ac_word" >&5
1820
echo "configure:1821: checking for $ac_word" >&5
1867
if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
1821
if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
1868
  echo $ac_n "(cached) $ac_c" 1>&6
1822
  echo $ac_n "(cached) $ac_c" 1>&6
1869
else
1823
else
Lines 1898-1904 Link Here
1898
# Extract the first word of "$ac_prog", so it can be a program name with args.
1852
# Extract the first word of "$ac_prog", so it can be a program name with args.
1899
set dummy $ac_prog; ac_word=$2
1853
set dummy $ac_prog; ac_word=$2
1900
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1854
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1901
echo "configure:1902: checking for $ac_word" >&5
1855
echo "configure:1856: checking for $ac_word" >&5
1902
if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
1856
if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
1903
  echo $ac_n "(cached) $ac_c" 1>&6
1857
  echo $ac_n "(cached) $ac_c" 1>&6
1904
else
1858
else
Lines 1933-1939 Link Here
1933
# Extract the first word of "$ac_prog", so it can be a program name with args.
1887
# Extract the first word of "$ac_prog", so it can be a program name with args.
1934
set dummy $ac_prog; ac_word=$2
1888
set dummy $ac_prog; ac_word=$2
1935
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1889
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1936
echo "configure:1937: checking for $ac_word" >&5
1890
echo "configure:1891: checking for $ac_word" >&5
1937
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
1891
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
1938
  echo $ac_n "(cached) $ac_c" 1>&6
1892
  echo $ac_n "(cached) $ac_c" 1>&6
1939
else
1893
else
Lines 1971-1977 Link Here
1971
    # Extract the first word of "gcc", so it can be a program name with args.
1925
    # Extract the first word of "gcc", so it can be a program name with args.
1972
set dummy gcc; ac_word=$2
1926
set dummy gcc; ac_word=$2
1973
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1927
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1974
echo "configure:1975: checking for $ac_word" >&5
1928
echo "configure:1929: checking for $ac_word" >&5
1975
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1929
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1976
  echo $ac_n "(cached) $ac_c" 1>&6
1930
  echo $ac_n "(cached) $ac_c" 1>&6
1977
else
1931
else
Lines 2001-2007 Link Here
2001
  # Extract the first word of "cc", so it can be a program name with args.
1955
  # Extract the first word of "cc", so it can be a program name with args.
2002
set dummy cc; ac_word=$2
1956
set dummy cc; ac_word=$2
2003
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
1957
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2004
echo "configure:2005: checking for $ac_word" >&5
1958
echo "configure:1959: checking for $ac_word" >&5
2005
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
1959
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
2006
  echo $ac_n "(cached) $ac_c" 1>&6
1960
  echo $ac_n "(cached) $ac_c" 1>&6
2007
else
1961
else
Lines 2052-2058 Link Here
2052
      # Extract the first word of "cl", so it can be a program name with args.
2006
      # Extract the first word of "cl", so it can be a program name with args.
2053
set dummy cl; ac_word=$2
2007
set dummy cl; ac_word=$2
2054
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2008
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2055
echo "configure:2056: checking for $ac_word" >&5
2009
echo "configure:2010: checking for $ac_word" >&5
2056
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
2010
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
2057
  echo $ac_n "(cached) $ac_c" 1>&6
2011
  echo $ac_n "(cached) $ac_c" 1>&6
2058
else
2012
else
Lines 2084-2090 Link Here
2084
fi
2038
fi
2085
2039
2086
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
2040
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
2087
echo "configure:2088: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
2041
echo "configure:2042: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
2088
2042
2089
ac_ext=c
2043
ac_ext=c
2090
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
2044
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
Lines 2095-2106 Link Here
2095
2049
2096
cat > conftest.$ac_ext << EOF
2050
cat > conftest.$ac_ext << EOF
2097
2051
2098
#line 2099 "configure"
2052
#line 2053 "configure"
2099
#include "confdefs.h"
2053
#include "confdefs.h"
2100
2054
2101
main(){return(0);}
2055
main(){return(0);}
2102
EOF
2056
EOF
2103
if { (eval echo configure:2104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
2057
if { (eval echo configure:2058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
2104
  ac_cv_prog_cc_works=yes
2058
  ac_cv_prog_cc_works=yes
2105
  # If we can't run a trivial program, we are probably using a cross compiler.
2059
  # If we can't run a trivial program, we are probably using a cross compiler.
2106
  if (./conftest; exit) 2>/dev/null; then
2060
  if (./conftest; exit) 2>/dev/null; then
Lines 2126-2137 Link Here
2126
  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
2080
  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
2127
fi
2081
fi
2128
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
2082
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
2129
echo "configure:2130: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
2083
echo "configure:2084: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
2130
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
2084
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
2131
cross_compiling=$ac_cv_prog_cc_cross
2085
cross_compiling=$ac_cv_prog_cc_cross
2132
2086
2133
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
2087
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
2134
echo "configure:2135: checking whether we are using GNU C" >&5
2088
echo "configure:2089: checking whether we are using GNU C" >&5
2135
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
2089
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
2136
  echo $ac_n "(cached) $ac_c" 1>&6
2090
  echo $ac_n "(cached) $ac_c" 1>&6
2137
else
2091
else
Lines 2140-2146 Link Here
2140
  yes;
2094
  yes;
2141
#endif
2095
#endif
2142
EOF
2096
EOF
2143
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2144: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
2097
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
2144
  ac_cv_prog_gcc=yes
2098
  ac_cv_prog_gcc=yes
2145
else
2099
else
2146
  ac_cv_prog_gcc=no
2100
  ac_cv_prog_gcc=no
Lines 2159-2165 Link Here
2159
ac_save_CFLAGS="$CFLAGS"
2113
ac_save_CFLAGS="$CFLAGS"
2160
CFLAGS=
2114
CFLAGS=
2161
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
2115
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
2162
echo "configure:2163: checking whether ${CC-cc} accepts -g" >&5
2116
echo "configure:2117: checking whether ${CC-cc} accepts -g" >&5
2163
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
2117
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
2164
  echo $ac_n "(cached) $ac_c" 1>&6
2118
  echo $ac_n "(cached) $ac_c" 1>&6
2165
else
2119
else
Lines 2195-2201 Link Here
2195
# Extract the first word of "$ac_prog", so it can be a program name with args.
2149
# Extract the first word of "$ac_prog", so it can be a program name with args.
2196
set dummy $ac_prog; ac_word=$2
2150
set dummy $ac_prog; ac_word=$2
2197
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2151
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2198
echo "configure:2199: checking for $ac_word" >&5
2152
echo "configure:2153: checking for $ac_word" >&5
2199
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
2153
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
2200
  echo $ac_n "(cached) $ac_c" 1>&6
2154
  echo $ac_n "(cached) $ac_c" 1>&6
2201
else
2155
else
Lines 2227-2233 Link Here
2227
2181
2228
2182
2229
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
2183
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
2230
echo "configure:2231: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
2184
echo "configure:2185: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
2231
2185
2232
ac_ext=C
2186
ac_ext=C
2233
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
2187
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
Lines 2238-2249 Link Here
2238
2192
2239
cat > conftest.$ac_ext << EOF
2193
cat > conftest.$ac_ext << EOF
2240
2194
2241
#line 2242 "configure"
2195
#line 2196 "configure"
2242
#include "confdefs.h"
2196
#include "confdefs.h"
2243
2197
2244
int main(){return(0);}
2198
int main(){return(0);}
2245
EOF
2199
EOF
2246
if { (eval echo configure:2247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
2200
if { (eval echo configure:2201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
2247
  ac_cv_prog_cxx_works=yes
2201
  ac_cv_prog_cxx_works=yes
2248
  # If we can't run a trivial program, we are probably using a cross compiler.
2202
  # If we can't run a trivial program, we are probably using a cross compiler.
2249
  if (./conftest; exit) 2>/dev/null; then
2203
  if (./conftest; exit) 2>/dev/null; then
Lines 2269-2280 Link Here
2269
  { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
2223
  { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
2270
fi
2224
fi
2271
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
2225
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
2272
echo "configure:2273: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
2226
echo "configure:2227: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
2273
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
2227
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
2274
cross_compiling=$ac_cv_prog_cxx_cross
2228
cross_compiling=$ac_cv_prog_cxx_cross
2275
2229
2276
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
2230
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
2277
echo "configure:2278: checking whether we are using GNU C++" >&5
2231
echo "configure:2232: checking whether we are using GNU C++" >&5
2278
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
2232
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
2279
  echo $ac_n "(cached) $ac_c" 1>&6
2233
  echo $ac_n "(cached) $ac_c" 1>&6
2280
else
2234
else
Lines 2283-2289 Link Here
2283
  yes;
2237
  yes;
2284
#endif
2238
#endif
2285
EOF
2239
EOF
2286
if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:2287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
2240
if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:2241: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
2287
  ac_cv_prog_gxx=yes
2241
  ac_cv_prog_gxx=yes
2288
else
2242
else
2289
  ac_cv_prog_gxx=no
2243
  ac_cv_prog_gxx=no
Lines 2302-2308 Link Here
2302
ac_save_CXXFLAGS="$CXXFLAGS"
2256
ac_save_CXXFLAGS="$CXXFLAGS"
2303
CXXFLAGS=
2257
CXXFLAGS=
2304
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
2258
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
2305
echo "configure:2306: checking whether ${CXX-g++} accepts -g" >&5
2259
echo "configure:2260: checking whether ${CXX-g++} accepts -g" >&5
2306
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
2260
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
2307
  echo $ac_n "(cached) $ac_c" 1>&6
2261
  echo $ac_n "(cached) $ac_c" 1>&6
2308
else
2262
else
Lines 2333-2393 Link Here
2333
  fi
2287
  fi
2334
fi
2288
fi
2335
2289
2336
for ac_declaration in \
2337
   ''\
2338
   '#include <stdlib.h>' \
2339
   'extern "C" void std::exit (int) throw (); using std::exit;' \
2340
   'extern "C" void std::exit (int); using std::exit;' \
2341
   'extern "C" void exit (int) throw ();' \
2342
   'extern "C" void exit (int);' \
2343
   'void exit (int);'
2344
do
2345
  cat > conftest.$ac_ext <<EOF
2346
#line 2347 "configure"
2347
#include "confdefs.h"
2348
#include <stdlib.h>
2349
$ac_declaration
2350
int main() {
2351
exit (42);
2352
; return 0; }
2353
EOF
2354
if { (eval echo configure:2355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
2355
  :
2356
else
2357
  echo "configure: failed program was:" >&5
2358
  cat conftest.$ac_ext >&5
2359
  rm -rf conftest*
2360
  continue
2361
fi
2362
rm -f conftest*
2363
  cat > conftest.$ac_ext <<EOF
2364
#line 2365 "configure"
2365
#include "confdefs.h"
2366
$ac_declaration
2367
int main() {
2368
exit (42);
2369
; return 0; }
2370
EOF
2371
if { (eval echo configure:2372: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
2372
  rm -rf conftest*
2373
  break
2374
else
2375
  echo "configure: failed program was:" >&5
2376
  cat conftest.$ac_ext >&5
2377
fi
2378
rm -f conftest*
2379
done
2380
if test -n "$ac_declaration"; then
2381
  echo '#ifdef __cplusplus' >>confdefs.h
2382
  echo $ac_declaration      >>confdefs.h
2383
  echo '#endif'             >>confdefs.h
2384
fi
2385
2386
2387
    # Extract the first word of "ranlib", so it can be a program name with args.
2290
    # Extract the first word of "ranlib", so it can be a program name with args.
2388
set dummy ranlib; ac_word=$2
2291
set dummy ranlib; ac_word=$2
2389
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2292
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2390
echo "configure:2391: checking for $ac_word" >&5
2293
echo "configure:2294: checking for $ac_word" >&5
2391
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
2294
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
2392
  echo $ac_n "(cached) $ac_c" 1>&6
2295
  echo $ac_n "(cached) $ac_c" 1>&6
2393
else
2296
else
Lines 2419-2425 Link Here
2419
# Extract the first word of "$ac_prog", so it can be a program name with args.
2322
# Extract the first word of "$ac_prog", so it can be a program name with args.
2420
set dummy $ac_prog; ac_word=$2
2323
set dummy $ac_prog; ac_word=$2
2421
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2324
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2422
echo "configure:2423: checking for $ac_word" >&5
2325
echo "configure:2326: checking for $ac_word" >&5
2423
if eval "test \"`echo '$''{'ac_cv_path_AS'+set}'`\" = set"; then
2326
if eval "test \"`echo '$''{'ac_cv_path_AS'+set}'`\" = set"; then
2424
  echo $ac_n "(cached) $ac_c" 1>&6
2327
  echo $ac_n "(cached) $ac_c" 1>&6
2425
else
2328
else
Lines 2460-2466 Link Here
2460
# Extract the first word of "$ac_prog", so it can be a program name with args.
2363
# Extract the first word of "$ac_prog", so it can be a program name with args.
2461
set dummy $ac_prog; ac_word=$2
2364
set dummy $ac_prog; ac_word=$2
2462
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2365
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2463
echo "configure:2464: checking for $ac_word" >&5
2366
echo "configure:2367: checking for $ac_word" >&5
2464
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
2367
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
2465
  echo $ac_n "(cached) $ac_c" 1>&6
2368
  echo $ac_n "(cached) $ac_c" 1>&6
2466
else
2369
else
Lines 2495-2501 Link Here
2495
# Extract the first word of "$ac_prog", so it can be a program name with args.
2398
# Extract the first word of "$ac_prog", so it can be a program name with args.
2496
set dummy $ac_prog; ac_word=$2
2399
set dummy $ac_prog; ac_word=$2
2497
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2400
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2498
echo "configure:2499: checking for $ac_word" >&5
2401
echo "configure:2402: checking for $ac_word" >&5
2499
if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
2402
if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
2500
  echo $ac_n "(cached) $ac_c" 1>&6
2403
  echo $ac_n "(cached) $ac_c" 1>&6
2501
else
2404
else
Lines 2530-2536 Link Here
2530
# Extract the first word of "$ac_prog", so it can be a program name with args.
2433
# Extract the first word of "$ac_prog", so it can be a program name with args.
2531
set dummy $ac_prog; ac_word=$2
2434
set dummy $ac_prog; ac_word=$2
2532
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2435
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2533
echo "configure:2534: checking for $ac_word" >&5
2436
echo "configure:2437: checking for $ac_word" >&5
2534
if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
2437
if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
2535
  echo $ac_n "(cached) $ac_c" 1>&6
2438
  echo $ac_n "(cached) $ac_c" 1>&6
2536
else
2439
else
Lines 2565-2571 Link Here
2565
# Extract the first word of "$ac_prog", so it can be a program name with args.
2468
# Extract the first word of "$ac_prog", so it can be a program name with args.
2566
set dummy $ac_prog; ac_word=$2
2469
set dummy $ac_prog; ac_word=$2
2567
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2470
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2568
echo "configure:2569: checking for $ac_word" >&5
2471
echo "configure:2472: checking for $ac_word" >&5
2569
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
2472
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
2570
  echo $ac_n "(cached) $ac_c" 1>&6
2473
  echo $ac_n "(cached) $ac_c" 1>&6
2571
else
2474
else
Lines 2644-2655 Link Here
2644
    fi
2547
    fi
2645
fi
2548
fi
2646
2549
2647
for ac_prog in gawk mawk nawk awk
2550
for ac_prog in mawk gawk nawk awk
2648
do
2551
do
2649
# Extract the first word of "$ac_prog", so it can be a program name with args.
2552
# Extract the first word of "$ac_prog", so it can be a program name with args.
2650
set dummy $ac_prog; ac_word=$2
2553
set dummy $ac_prog; ac_word=$2
2651
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2554
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2652
echo "configure:2653: checking for $ac_word" >&5
2555
echo "configure:2556: checking for $ac_word" >&5
2653
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
2556
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
2654
  echo $ac_n "(cached) $ac_c" 1>&6
2557
  echo $ac_n "(cached) $ac_c" 1>&6
2655
else
2558
else
Lines 2689-2695 Link Here
2689
# Extract the first word of "$ac_prog", so it can be a program name with args.
2592
# Extract the first word of "$ac_prog", so it can be a program name with args.
2690
set dummy $ac_prog; ac_word=$2
2593
set dummy $ac_prog; ac_word=$2
2691
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2594
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
2692
echo "configure:2693: checking for $ac_word" >&5
2595
echo "configure:2596: checking for $ac_word" >&5
2693
if eval "test \"`echo '$''{'ac_cv_prog_MIDL'+set}'`\" = set"; then
2596
if eval "test \"`echo '$''{'ac_cv_prog_MIDL'+set}'`\" = set"; then
2694
  echo $ac_n "(cached) $ac_c" 1>&6
2597
  echo $ac_n "(cached) $ac_c" 1>&6
2695
else
2598
else
Lines 2731-2744 Link Here
2731
cross_compiling=$ac_cv_prog_cc_cross
2634
cross_compiling=$ac_cv_prog_cc_cross
2732
2635
2733
        cat > conftest.$ac_ext <<EOF
2636
        cat > conftest.$ac_ext <<EOF
2734
#line 2735 "configure"
2637
#line 2638 "configure"
2735
#include "confdefs.h"
2638
#include "confdefs.h"
2736
#include <stdio.h>
2639
#include <stdio.h>
2737
int main() {
2640
int main() {
2738
 printf("Hello World\n"); 
2641
 printf("Hello World\n"); 
2739
; return 0; }
2642
; return 0; }
2740
EOF
2643
EOF
2741
if { (eval echo configure:2742: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
2644
if { (eval echo configure:2645: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
2742
  :
2645
  :
2743
else
2646
else
2744
  echo "configure: failed program was:" >&5
2647
  echo "configure: failed program was:" >&5
Lines 2756-2769 Link Here
2756
cross_compiling=$ac_cv_prog_cxx_cross
2659
cross_compiling=$ac_cv_prog_cxx_cross
2757
2660
2758
        cat > conftest.$ac_ext <<EOF
2661
        cat > conftest.$ac_ext <<EOF
2759
#line 2760 "configure"
2662
#line 2663 "configure"
2760
#include "confdefs.h"
2663
#include "confdefs.h"
2761
#include <new.h>
2664
#include <new.h>
2762
int main() {
2665
int main() {
2763
 unsigned *test = new unsigned(42); 
2666
 unsigned *test = new unsigned(42); 
2764
; return 0; }
2667
; return 0; }
2765
EOF
2668
EOF
2766
if { (eval echo configure:2767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
2669
if { (eval echo configure:2670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
2767
  :
2670
  :
2768
else
2671
else
2769
  echo "configure: failed program was:" >&5
2672
  echo "configure: failed program was:" >&5
Lines 2817-2823 Link Here
2817
2720
2818
         # Add flags if necessary
2721
         # Add flags if necessary
2819
         echo $ac_n "checking for midl flags""... $ac_c" 1>&6
2722
         echo $ac_n "checking for midl flags""... $ac_c" 1>&6
2820
echo "configure:2821: checking for midl flags" >&5
2723
echo "configure:2724: checking for midl flags" >&5
2821
         if test \( "$_MIDL_MAJOR_VERSION" -gt "6" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" -gt "0" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" -gt "359" \); then
2724
         if test \( "$_MIDL_MAJOR_VERSION" -gt "6" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" -gt "0" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" -gt "359" \); then
2822
             # Starting with MIDL version 6.0.359, the MIDL compiler
2725
             # Starting with MIDL version 6.0.359, the MIDL compiler
2823
             # generates /Oicf /robust stubs by default, which is not
2726
             # generates /Oicf /robust stubs by default, which is not
Lines 2836-2844 Link Here
2836
        _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
2739
        _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
2837
        _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
2740
        _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
2838
        echo $ac_n "checking for w32api version >= $W32API_VERSION""... $ac_c" 1>&6
2741
        echo $ac_n "checking for w32api version >= $W32API_VERSION""... $ac_c" 1>&6
2839
echo "configure:2840: checking for w32api version >= $W32API_VERSION" >&5
2742
echo "configure:2743: checking for w32api version >= $W32API_VERSION" >&5
2840
        cat > conftest.$ac_ext <<EOF
2743
        cat > conftest.$ac_ext <<EOF
2841
#line 2842 "configure"
2744
#line 2745 "configure"
2842
#include "confdefs.h"
2745
#include "confdefs.h"
2843
#include <w32api.h>
2746
#include <w32api.h>
2844
int main() {
2747
int main() {
Lines 2850-2856 Link Here
2850
            
2753
            
2851
; return 0; }
2754
; return 0; }
2852
EOF
2755
EOF
2853
if { (eval echo configure:2854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
2756
if { (eval echo configure:2757: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
2854
  rm -rf conftest*
2757
  rm -rf conftest*
2855
   res=yes 
2758
   res=yes 
2856
else
2759
else
Lines 2866-2872 Link Here
2866
        fi
2769
        fi
2867
        # Check windres version
2770
        # Check windres version
2868
        echo $ac_n "checking for windres version >= $WINDRES_VERSION""... $ac_c" 1>&6
2771
        echo $ac_n "checking for windres version >= $WINDRES_VERSION""... $ac_c" 1>&6
2869
echo "configure:2870: checking for windres version >= $WINDRES_VERSION" >&5
2772
echo "configure:2773: checking for windres version >= $WINDRES_VERSION" >&5
2870
        _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
2773
        _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
2871
        echo "$ac_t""$_WINDRES_VERSION" 1>&6
2774
        echo "$ac_t""$_WINDRES_VERSION" 1>&6
2872
        _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
2775
        _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
Lines 2895-2901 Link Here
2895
    SKIP_COMPILER_CHECKS=1
2798
    SKIP_COMPILER_CHECKS=1
2896
    SKIP_LIBRARY_CHECKS=1
2799
    SKIP_LIBRARY_CHECKS=1
2897
    echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
2800
    echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
2898
echo "configure:2899: checking how to run the C preprocessor" >&5
2801
echo "configure:2802: checking how to run the C preprocessor" >&5
2899
# On Suns, sometimes $CPP names a directory.
2802
# On Suns, sometimes $CPP names a directory.
2900
if test -n "$CPP" && test -d "$CPP"; then
2803
if test -n "$CPP" && test -d "$CPP"; then
2901
  CPP=
2804
  CPP=
Lines 2910-2922 Link Here
2910
  # On the NeXT, cc -E runs the code through the compiler's parser,
2813
  # On the NeXT, cc -E runs the code through the compiler's parser,
2911
  # not just through cpp.
2814
  # not just through cpp.
2912
  cat > conftest.$ac_ext <<EOF
2815
  cat > conftest.$ac_ext <<EOF
2913
#line 2914 "configure"
2816
#line 2817 "configure"
2914
#include "confdefs.h"
2817
#include "confdefs.h"
2915
#include <assert.h>
2818
#include <assert.h>
2916
Syntax Error
2819
Syntax Error
2917
EOF
2820
EOF
2918
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
2821
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
2919
{ (eval echo configure:2920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
2822
{ (eval echo configure:2823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
2920
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
2823
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
2921
if test -z "$ac_err"; then
2824
if test -z "$ac_err"; then
2922
  :
2825
  :
Lines 2927-2939 Link Here
2927
  rm -rf conftest*
2830
  rm -rf conftest*
2928
  CPP="${CC-cc} -E -traditional-cpp"
2831
  CPP="${CC-cc} -E -traditional-cpp"
2929
  cat > conftest.$ac_ext <<EOF
2832
  cat > conftest.$ac_ext <<EOF
2930
#line 2931 "configure"
2833
#line 2834 "configure"
2931
#include "confdefs.h"
2834
#include "confdefs.h"
2932
#include <assert.h>
2835
#include <assert.h>
2933
Syntax Error
2836
Syntax Error
2934
EOF
2837
EOF
2935
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
2838
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
2936
{ (eval echo configure:2937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
2839
{ (eval echo configure:2840: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
2937
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
2840
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
2938
if test -z "$ac_err"; then
2841
if test -z "$ac_err"; then
2939
  :
2842
  :
Lines 2944-2956 Link Here
2944
  rm -rf conftest*
2847
  rm -rf conftest*
2945
  CPP="${CC-cc} -nologo -E"
2848
  CPP="${CC-cc} -nologo -E"
2946
  cat > conftest.$ac_ext <<EOF
2849
  cat > conftest.$ac_ext <<EOF
2947
#line 2948 "configure"
2850
#line 2851 "configure"
2948
#include "confdefs.h"
2851
#include "confdefs.h"
2949
#include <assert.h>
2852
#include <assert.h>
2950
Syntax Error
2853
Syntax Error
2951
EOF
2854
EOF
2952
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
2855
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
2953
{ (eval echo configure:2954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
2856
{ (eval echo configure:2857: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
2954
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
2857
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
2955
if test -z "$ac_err"; then
2858
if test -z "$ac_err"; then
2956
  :
2859
  :
Lines 2978-2994 Link Here
2978
do
2881
do
2979
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
2882
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
2980
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
2883
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
2981
echo "configure:2982: checking for $ac_hdr" >&5
2884
echo "configure:2885: checking for $ac_hdr" >&5
2982
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
2885
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
2983
  echo $ac_n "(cached) $ac_c" 1>&6
2886
  echo $ac_n "(cached) $ac_c" 1>&6
2984
else
2887
else
2985
  cat > conftest.$ac_ext <<EOF
2888
  cat > conftest.$ac_ext <<EOF
2986
#line 2987 "configure"
2889
#line 2890 "configure"
2987
#include "confdefs.h"
2890
#include "confdefs.h"
2988
#include <$ac_hdr>
2891
#include <$ac_hdr>
2989
EOF
2892
EOF
2990
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
2893
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
2991
{ (eval echo configure:2992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
2894
{ (eval echo configure:2895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
2992
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
2895
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
2993
if test -z "$ac_err"; then
2896
if test -z "$ac_err"; then
2994
  rm -rf conftest*
2897
  rm -rf conftest*
Lines 3019-3028 Link Here
3019
if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
2922
if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
3020
    if test "x$CC" != xcc; then
2923
    if test "x$CC" != xcc; then
3021
  echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
2924
  echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
3022
echo "configure:3023: checking whether $CC and cc understand -c and -o together" >&5
2925
echo "configure:2926: checking whether $CC and cc understand -c and -o together" >&5
3023
else
2926
else
3024
  echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
2927
  echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
3025
echo "configure:3026: checking whether cc understands -c and -o together" >&5
2928
echo "configure:2929: checking whether cc understands -c and -o together" >&5
3026
fi
2929
fi
3027
set dummy $CC; ac_cc="`echo $2 |
2930
set dummy $CC; ac_cc="`echo $2 |
3028
		       sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
2931
		       sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
Lines 3034-3049 Link Here
3034
# We do the test twice because some compilers refuse to overwrite an
2937
# We do the test twice because some compilers refuse to overwrite an
3035
# existing .o file with -o, though they will create one.
2938
# existing .o file with -o, though they will create one.
3036
ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5'
2939
ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5'
3037
if { (eval echo configure:3038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
2940
if { (eval echo configure:2941: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
3038
   test -f conftest.o && { (eval echo configure:3039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
2941
   test -f conftest.o && { (eval echo configure:2942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
3039
then
2942
then
3040
  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
2943
  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
3041
  if test "x$CC" != xcc; then
2944
  if test "x$CC" != xcc; then
3042
    # Test first that cc exists at all.
2945
    # Test first that cc exists at all.
3043
    if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:3044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
2946
    if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:2947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
3044
      ac_try='cc -c conftest.c -o conftest.o 1>&5'
2947
      ac_try='cc -c conftest.c -o conftest.o 1>&5'
3045
      if { (eval echo configure:3046: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
2948
      if { (eval echo configure:2949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
3046
	 test -f conftest.o && { (eval echo configure:3047: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
2949
	 test -f conftest.o && { (eval echo configure:2950: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
3047
      then
2950
      then
3048
        # cc works too.
2951
        # cc works too.
3049
        :
2952
        :
Lines 3104-3110 Link Here
3104
fi
3007
fi
3105
3008
3106
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
3009
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
3107
echo "configure:3108: checking how to run the C preprocessor" >&5
3010
echo "configure:3011: checking how to run the C preprocessor" >&5
3108
# On Suns, sometimes $CPP names a directory.
3011
# On Suns, sometimes $CPP names a directory.
3109
if test -n "$CPP" && test -d "$CPP"; then
3012
if test -n "$CPP" && test -d "$CPP"; then
3110
  CPP=
3013
  CPP=
Lines 3119-3131 Link Here
3119
  # On the NeXT, cc -E runs the code through the compiler's parser,
3022
  # On the NeXT, cc -E runs the code through the compiler's parser,
3120
  # not just through cpp.
3023
  # not just through cpp.
3121
  cat > conftest.$ac_ext <<EOF
3024
  cat > conftest.$ac_ext <<EOF
3122
#line 3123 "configure"
3025
#line 3026 "configure"
3123
#include "confdefs.h"
3026
#include "confdefs.h"
3124
#include <assert.h>
3027
#include <assert.h>
3125
Syntax Error
3028
Syntax Error
3126
EOF
3029
EOF
3127
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3030
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3128
{ (eval echo configure:3129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3031
{ (eval echo configure:3032: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3129
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3032
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3130
if test -z "$ac_err"; then
3033
if test -z "$ac_err"; then
3131
  :
3034
  :
Lines 3136-3148 Link Here
3136
  rm -rf conftest*
3039
  rm -rf conftest*
3137
  CPP="${CC-cc} -E -traditional-cpp"
3040
  CPP="${CC-cc} -E -traditional-cpp"
3138
  cat > conftest.$ac_ext <<EOF
3041
  cat > conftest.$ac_ext <<EOF
3139
#line 3140 "configure"
3042
#line 3043 "configure"
3140
#include "confdefs.h"
3043
#include "confdefs.h"
3141
#include <assert.h>
3044
#include <assert.h>
3142
Syntax Error
3045
Syntax Error
3143
EOF
3046
EOF
3144
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3047
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3145
{ (eval echo configure:3146: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3048
{ (eval echo configure:3049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3146
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3049
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3147
if test -z "$ac_err"; then
3050
if test -z "$ac_err"; then
3148
  :
3051
  :
Lines 3153-3165 Link Here
3153
  rm -rf conftest*
3056
  rm -rf conftest*
3154
  CPP="${CC-cc} -nologo -E"
3057
  CPP="${CC-cc} -nologo -E"
3155
  cat > conftest.$ac_ext <<EOF
3058
  cat > conftest.$ac_ext <<EOF
3156
#line 3157 "configure"
3059
#line 3060 "configure"
3157
#include "confdefs.h"
3060
#include "confdefs.h"
3158
#include <assert.h>
3061
#include <assert.h>
3159
Syntax Error
3062
Syntax Error
3160
EOF
3063
EOF
3161
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3064
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3162
{ (eval echo configure:3163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3065
{ (eval echo configure:3066: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3163
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3066
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3164
if test -z "$ac_err"; then
3067
if test -z "$ac_err"; then
3165
  :
3068
  :
Lines 3184-3190 Link Here
3184
echo "$ac_t""$CPP" 1>&6
3087
echo "$ac_t""$CPP" 1>&6
3185
3088
3186
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
3089
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
3187
echo "configure:3188: checking how to run the C++ preprocessor" >&5
3090
echo "configure:3091: checking how to run the C++ preprocessor" >&5
3188
if test -z "$CXXCPP"; then
3091
if test -z "$CXXCPP"; then
3189
if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
3092
if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
3190
  echo $ac_n "(cached) $ac_c" 1>&6
3093
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 3197-3208 Link Here
3197
cross_compiling=$ac_cv_prog_cxx_cross
3100
cross_compiling=$ac_cv_prog_cxx_cross
3198
  CXXCPP="${CXX-g++} -E"
3101
  CXXCPP="${CXX-g++} -E"
3199
  cat > conftest.$ac_ext <<EOF
3102
  cat > conftest.$ac_ext <<EOF
3200
#line 3201 "configure"
3103
#line 3104 "configure"
3201
#include "confdefs.h"
3104
#include "confdefs.h"
3202
#include <stdlib.h>
3105
#include <stdlib.h>
3203
EOF
3106
EOF
3204
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3107
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3205
{ (eval echo configure:3206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3108
{ (eval echo configure:3109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3206
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3109
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3207
if test -z "$ac_err"; then
3110
if test -z "$ac_err"; then
3208
  :
3111
  :
Lines 3238-3244 Link Here
3238
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
3141
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
3239
# ./install, which can be erroneously created by make from ./install.sh.
3142
# ./install, which can be erroneously created by make from ./install.sh.
3240
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
3143
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
3241
echo "configure:3242: checking for a BSD compatible install" >&5
3144
echo "configure:3145: checking for a BSD compatible install" >&5
3242
if test -z "$INSTALL"; then
3145
if test -z "$INSTALL"; then
3243
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
3146
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
3244
  echo $ac_n "(cached) $ac_c" 1>&6
3147
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 3291-3297 Link Here
3291
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
3194
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
3292
3195
3293
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
3196
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
3294
echo "configure:3295: checking whether ln -s works" >&5
3197
echo "configure:3198: checking whether ln -s works" >&5
3295
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
3198
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
3296
  echo $ac_n "(cached) $ac_c" 1>&6
3199
  echo $ac_n "(cached) $ac_c" 1>&6
3297
else
3200
else
Lines 3316-3322 Link Here
3316
# Extract the first word of "$ac_prog", so it can be a program name with args.
3219
# Extract the first word of "$ac_prog", so it can be a program name with args.
3317
set dummy $ac_prog; ac_word=$2
3220
set dummy $ac_prog; ac_word=$2
3318
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3221
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3319
echo "configure:3320: checking for $ac_word" >&5
3222
echo "configure:3223: checking for $ac_word" >&5
3320
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
3223
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
3321
  echo $ac_n "(cached) $ac_c" 1>&6
3224
  echo $ac_n "(cached) $ac_c" 1>&6
3322
else
3225
else
Lines 3356-3362 Link Here
3356
fi
3259
fi
3357
3260
3358
echo $ac_n "checking for minimum required perl version >= $PERL_VERSION""... $ac_c" 1>&6
3261
echo $ac_n "checking for minimum required perl version >= $PERL_VERSION""... $ac_c" 1>&6
3359
echo "configure:3360: checking for minimum required perl version >= $PERL_VERSION" >&5
3262
echo "configure:3263: checking for minimum required perl version >= $PERL_VERSION" >&5
3360
_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
3263
_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
3361
_perl_res=$?
3264
_perl_res=$?
3362
echo "$ac_t""$_perl_version" 1>&6
3265
echo "$ac_t""$_perl_version" 1>&6
Lines 3366-3372 Link Here
3366
fi
3269
fi
3367
3270
3368
echo $ac_n "checking for full perl installation""... $ac_c" 1>&6
3271
echo $ac_n "checking for full perl installation""... $ac_c" 1>&6
3369
echo "configure:3370: checking for full perl installation" >&5
3272
echo "configure:3273: checking for full perl installation" >&5
3370
_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
3273
_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
3371
_perl_res=$?
3274
_perl_res=$?
3372
if test "$_perl_res" != 0; then
3275
if test "$_perl_res" != 0; then
Lines 3379-3385 Link Here
3379
# Extract the first word of "doxygen", so it can be a program name with args.
3282
# Extract the first word of "doxygen", so it can be a program name with args.
3380
set dummy doxygen; ac_word=$2
3283
set dummy doxygen; ac_word=$2
3381
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3284
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3382
echo "configure:3383: checking for $ac_word" >&5
3285
echo "configure:3286: checking for $ac_word" >&5
3383
if eval "test \"`echo '$''{'ac_cv_path_DOXYGEN'+set}'`\" = set"; then
3286
if eval "test \"`echo '$''{'ac_cv_path_DOXYGEN'+set}'`\" = set"; then
3384
  echo $ac_n "(cached) $ac_c" 1>&6
3287
  echo $ac_n "(cached) $ac_c" 1>&6
3385
else
3288
else
Lines 3415-3421 Link Here
3415
# Extract the first word of "whoami", so it can be a program name with args.
3318
# Extract the first word of "whoami", so it can be a program name with args.
3416
set dummy whoami; ac_word=$2
3319
set dummy whoami; ac_word=$2
3417
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3320
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3418
echo "configure:3419: checking for $ac_word" >&5
3321
echo "configure:3322: checking for $ac_word" >&5
3419
if eval "test \"`echo '$''{'ac_cv_path_WHOAMI'+set}'`\" = set"; then
3322
if eval "test \"`echo '$''{'ac_cv_path_WHOAMI'+set}'`\" = set"; then
3420
  echo $ac_n "(cached) $ac_c" 1>&6
3323
  echo $ac_n "(cached) $ac_c" 1>&6
3421
else
3324
else
Lines 3451-3457 Link Here
3451
# Extract the first word of "autoconf", so it can be a program name with args.
3354
# Extract the first word of "autoconf", so it can be a program name with args.
3452
set dummy autoconf; ac_word=$2
3355
set dummy autoconf; ac_word=$2
3453
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3356
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3454
echo "configure:3455: checking for $ac_word" >&5
3357
echo "configure:3358: checking for $ac_word" >&5
3455
if eval "test \"`echo '$''{'ac_cv_path_AUTOCONF'+set}'`\" = set"; then
3358
if eval "test \"`echo '$''{'ac_cv_path_AUTOCONF'+set}'`\" = set"; then
3456
  echo $ac_n "(cached) $ac_c" 1>&6
3359
  echo $ac_n "(cached) $ac_c" 1>&6
3457
else
3360
else
Lines 3487-3493 Link Here
3487
# Extract the first word of "unzip", so it can be a program name with args.
3390
# Extract the first word of "unzip", so it can be a program name with args.
3488
set dummy unzip; ac_word=$2
3391
set dummy unzip; ac_word=$2
3489
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3392
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3490
echo "configure:3491: checking for $ac_word" >&5
3393
echo "configure:3394: checking for $ac_word" >&5
3491
if eval "test \"`echo '$''{'ac_cv_path_UNZIP'+set}'`\" = set"; then
3394
if eval "test \"`echo '$''{'ac_cv_path_UNZIP'+set}'`\" = set"; then
3492
  echo $ac_n "(cached) $ac_c" 1>&6
3395
  echo $ac_n "(cached) $ac_c" 1>&6
3493
else
3396
else
Lines 3525-3531 Link Here
3525
# Extract the first word of "$ac_prog", so it can be a program name with args.
3428
# Extract the first word of "$ac_prog", so it can be a program name with args.
3526
set dummy $ac_prog; ac_word=$2
3429
set dummy $ac_prog; ac_word=$2
3527
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3430
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3528
echo "configure:3529: checking for $ac_word" >&5
3431
echo "configure:3432: checking for $ac_word" >&5
3529
if eval "test \"`echo '$''{'ac_cv_path_ZIP'+set}'`\" = set"; then
3432
if eval "test \"`echo '$''{'ac_cv_path_ZIP'+set}'`\" = set"; then
3530
  echo $ac_n "(cached) $ac_c" 1>&6
3433
  echo $ac_n "(cached) $ac_c" 1>&6
3531
else
3434
else
Lines 3566-3572 Link Here
3566
# Extract the first word of "makedepend", so it can be a program name with args.
3469
# Extract the first word of "makedepend", so it can be a program name with args.
3567
set dummy makedepend; ac_word=$2
3470
set dummy makedepend; ac_word=$2
3568
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3471
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3569
echo "configure:3570: checking for $ac_word" >&5
3472
echo "configure:3473: checking for $ac_word" >&5
3570
if eval "test \"`echo '$''{'ac_cv_path_SYSTEM_MAKEDEPEND'+set}'`\" = set"; then
3473
if eval "test \"`echo '$''{'ac_cv_path_SYSTEM_MAKEDEPEND'+set}'`\" = set"; then
3571
  echo $ac_n "(cached) $ac_c" 1>&6
3474
  echo $ac_n "(cached) $ac_c" 1>&6
3572
else
3475
else
Lines 3601-3607 Link Here
3601
# Extract the first word of "xargs", so it can be a program name with args.
3504
# Extract the first word of "xargs", so it can be a program name with args.
3602
set dummy xargs; ac_word=$2
3505
set dummy xargs; ac_word=$2
3603
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3506
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3604
echo "configure:3605: checking for $ac_word" >&5
3507
echo "configure:3508: checking for $ac_word" >&5
3605
if eval "test \"`echo '$''{'ac_cv_path_XARGS'+set}'`\" = set"; then
3508
if eval "test \"`echo '$''{'ac_cv_path_XARGS'+set}'`\" = set"; then
3606
  echo $ac_n "(cached) $ac_c" 1>&6
3509
  echo $ac_n "(cached) $ac_c" 1>&6
3607
else
3510
else
Lines 3643-3649 Link Here
3643
# Extract the first word of "$ac_prog", so it can be a program name with args.
3546
# Extract the first word of "$ac_prog", so it can be a program name with args.
3644
set dummy $ac_prog; ac_word=$2
3547
set dummy $ac_prog; ac_word=$2
3645
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3548
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3646
echo "configure:3647: checking for $ac_word" >&5
3549
echo "configure:3550: checking for $ac_word" >&5
3647
if eval "test \"`echo '$''{'ac_cv_path_PBBUILD'+set}'`\" = set"; then
3550
if eval "test \"`echo '$''{'ac_cv_path_PBBUILD'+set}'`\" = set"; then
3648
  echo $ac_n "(cached) $ac_c" 1>&6
3551
  echo $ac_n "(cached) $ac_c" 1>&6
3649
else
3552
else
Lines 3688-3694 Link Here
3688
# Extract the first word of "$ac_prog", so it can be a program name with args.
3591
# Extract the first word of "$ac_prog", so it can be a program name with args.
3689
set dummy $ac_prog; ac_word=$2
3592
set dummy $ac_prog; ac_word=$2
3690
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3593
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3691
echo "configure:3692: checking for $ac_word" >&5
3594
echo "configure:3595: checking for $ac_word" >&5
3692
if eval "test \"`echo '$''{'ac_cv_path_MAKE'+set}'`\" = set"; then
3595
if eval "test \"`echo '$''{'ac_cv_path_MAKE'+set}'`\" = set"; then
3693
  echo $ac_n "(cached) $ac_c" 1>&6
3596
  echo $ac_n "(cached) $ac_c" 1>&6
3694
else
3597
else
Lines 3731-3737 Link Here
3731
# Extract the first word of "$ac_prog", so it can be a program name with args.
3634
# Extract the first word of "$ac_prog", so it can be a program name with args.
3732
set dummy $ac_prog; ac_word=$2
3635
set dummy $ac_prog; ac_word=$2
3733
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3636
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
3734
echo "configure:3735: checking for $ac_word" >&5
3637
echo "configure:3638: checking for $ac_word" >&5
3735
if eval "test \"`echo '$''{'ac_cv_path_MAKE'+set}'`\" = set"; then
3638
if eval "test \"`echo '$''{'ac_cv_path_MAKE'+set}'`\" = set"; then
3736
  echo $ac_n "(cached) $ac_c" 1>&6
3639
  echo $ac_n "(cached) $ac_c" 1>&6
3737
else
3640
else
Lines 3797-3803 Link Here
3797
# Uses ac_ vars as temps to allow command line to override cache and checks.
3700
# Uses ac_ vars as temps to allow command line to override cache and checks.
3798
# --without-x overrides everything else, but does not touch the cache.
3701
# --without-x overrides everything else, but does not touch the cache.
3799
echo $ac_n "checking for X""... $ac_c" 1>&6
3702
echo $ac_n "checking for X""... $ac_c" 1>&6
3800
echo "configure:3801: checking for X" >&5
3703
echo "configure:3704: checking for X" >&5
3801
3704
3802
# Check whether --with-x or --without-x was given.
3705
# Check whether --with-x or --without-x was given.
3803
if test "${with_x+set}" = set; then
3706
if test "${with_x+set}" = set; then
Lines 3859-3870 Link Here
3859
3762
3860
  # First, try using that file with no special directory specified.
3763
  # First, try using that file with no special directory specified.
3861
cat > conftest.$ac_ext <<EOF
3764
cat > conftest.$ac_ext <<EOF
3862
#line 3863 "configure"
3765
#line 3766 "configure"
3863
#include "confdefs.h"
3766
#include "confdefs.h"
3864
#include <$x_direct_test_include>
3767
#include <$x_direct_test_include>
3865
EOF
3768
EOF
3866
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3769
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
3867
{ (eval echo configure:3868: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3770
{ (eval echo configure:3771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
3868
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3771
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
3869
if test -z "$ac_err"; then
3772
if test -z "$ac_err"; then
3870
  rm -rf conftest*
3773
  rm -rf conftest*
Lines 3933-3946 Link Here
3933
  ac_save_LIBS="$LIBS"
3836
  ac_save_LIBS="$LIBS"
3934
  LIBS="-l$x_direct_test_library $LIBS"
3837
  LIBS="-l$x_direct_test_library $LIBS"
3935
cat > conftest.$ac_ext <<EOF
3838
cat > conftest.$ac_ext <<EOF
3936
#line 3937 "configure"
3839
#line 3840 "configure"
3937
#include "confdefs.h"
3840
#include "confdefs.h"
3938
3841
3939
int main() {
3842
int main() {
3940
${x_direct_test_function}()
3843
${x_direct_test_function}()
3941
; return 0; }
3844
; return 0; }
3942
EOF
3845
EOF
3943
if { (eval echo configure:3944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
3846
if { (eval echo configure:3847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
3944
  rm -rf conftest*
3847
  rm -rf conftest*
3945
  LIBS="$ac_save_LIBS"
3848
  LIBS="$ac_save_LIBS"
3946
# We can link X programs with no special library path.
3849
# We can link X programs with no special library path.
Lines 4046-4062 Link Here
4046
    case "`(uname -sr) 2>/dev/null`" in
3949
    case "`(uname -sr) 2>/dev/null`" in
4047
    "SunOS 5"*)
3950
    "SunOS 5"*)
4048
      echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
3951
      echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
4049
echo "configure:4050: checking whether -R must be followed by a space" >&5
3952
echo "configure:3953: checking whether -R must be followed by a space" >&5
4050
      ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
3953
      ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
4051
      cat > conftest.$ac_ext <<EOF
3954
      cat > conftest.$ac_ext <<EOF
4052
#line 4053 "configure"
3955
#line 3956 "configure"
4053
#include "confdefs.h"
3956
#include "confdefs.h"
4054
3957
4055
int main() {
3958
int main() {
4056
3959
4057
; return 0; }
3960
; return 0; }
4058
EOF
3961
EOF
4059
if { (eval echo configure:4060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
3962
if { (eval echo configure:3963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4060
  rm -rf conftest*
3963
  rm -rf conftest*
4061
  ac_R_nospace=yes
3964
  ac_R_nospace=yes
4062
else
3965
else
Lines 4072-4085 Link Here
4072
      else
3975
      else
4073
	LIBS="$ac_xsave_LIBS -R $x_libraries"
3976
	LIBS="$ac_xsave_LIBS -R $x_libraries"
4074
	cat > conftest.$ac_ext <<EOF
3977
	cat > conftest.$ac_ext <<EOF
4075
#line 4076 "configure"
3978
#line 3979 "configure"
4076
#include "confdefs.h"
3979
#include "confdefs.h"
4077
3980
4078
int main() {
3981
int main() {
4079
3982
4080
; return 0; }
3983
; return 0; }
4081
EOF
3984
EOF
4082
if { (eval echo configure:4083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
3985
if { (eval echo configure:3986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4083
  rm -rf conftest*
3986
  rm -rf conftest*
4084
  ac_R_space=yes
3987
  ac_R_space=yes
4085
else
3988
else
Lines 4111-4117 Link Here
4111
    # libraries were built with DECnet support.  And karl@cs.umb.edu says
4014
    # libraries were built with DECnet support.  And karl@cs.umb.edu says
4112
    # the Alpha needs dnet_stub (dnet does not exist).
4015
    # the Alpha needs dnet_stub (dnet does not exist).
4113
    echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
4016
    echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
4114
echo "configure:4115: checking for dnet_ntoa in -ldnet" >&5
4017
echo "configure:4018: checking for dnet_ntoa in -ldnet" >&5
4115
ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
4018
ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
4116
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4019
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4117
  echo $ac_n "(cached) $ac_c" 1>&6
4020
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 4119-4125 Link Here
4119
  ac_save_LIBS="$LIBS"
4022
  ac_save_LIBS="$LIBS"
4120
LIBS="-ldnet  $LIBS"
4023
LIBS="-ldnet  $LIBS"
4121
cat > conftest.$ac_ext <<EOF
4024
cat > conftest.$ac_ext <<EOF
4122
#line 4123 "configure"
4025
#line 4026 "configure"
4123
#include "confdefs.h"
4026
#include "confdefs.h"
4124
/* Override any gcc2 internal prototype to avoid an error.  */
4027
/* Override any gcc2 internal prototype to avoid an error.  */
4125
/* We use char because int might match the return type of a gcc2
4028
/* We use char because int might match the return type of a gcc2
Lines 4130-4136 Link Here
4130
dnet_ntoa()
4033
dnet_ntoa()
4131
; return 0; }
4034
; return 0; }
4132
EOF
4035
EOF
4133
if { (eval echo configure:4134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4036
if { (eval echo configure:4037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4134
  rm -rf conftest*
4037
  rm -rf conftest*
4135
  eval "ac_cv_lib_$ac_lib_var=yes"
4038
  eval "ac_cv_lib_$ac_lib_var=yes"
4136
else
4039
else
Lines 4152-4158 Link Here
4152
4055
4153
    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
4056
    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
4154
      echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
4057
      echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
4155
echo "configure:4156: checking for dnet_ntoa in -ldnet_stub" >&5
4058
echo "configure:4059: checking for dnet_ntoa in -ldnet_stub" >&5
4156
ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
4059
ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
4157
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4060
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4158
  echo $ac_n "(cached) $ac_c" 1>&6
4061
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 4160-4166 Link Here
4160
  ac_save_LIBS="$LIBS"
4063
  ac_save_LIBS="$LIBS"
4161
LIBS="-ldnet_stub  $LIBS"
4064
LIBS="-ldnet_stub  $LIBS"
4162
cat > conftest.$ac_ext <<EOF
4065
cat > conftest.$ac_ext <<EOF
4163
#line 4164 "configure"
4066
#line 4067 "configure"
4164
#include "confdefs.h"
4067
#include "confdefs.h"
4165
/* Override any gcc2 internal prototype to avoid an error.  */
4068
/* Override any gcc2 internal prototype to avoid an error.  */
4166
/* We use char because int might match the return type of a gcc2
4069
/* We use char because int might match the return type of a gcc2
Lines 4171-4177 Link Here
4171
dnet_ntoa()
4074
dnet_ntoa()
4172
; return 0; }
4075
; return 0; }
4173
EOF
4076
EOF
4174
if { (eval echo configure:4175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4077
if { (eval echo configure:4078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4175
  rm -rf conftest*
4078
  rm -rf conftest*
4176
  eval "ac_cv_lib_$ac_lib_var=yes"
4079
  eval "ac_cv_lib_$ac_lib_var=yes"
4177
else
4080
else
Lines 4200-4211 Link Here
4200
    # The nsl library prevents programs from opening the X display
4103
    # The nsl library prevents programs from opening the X display
4201
    # on Irix 5.2, according to dickey@clark.net.
4104
    # on Irix 5.2, according to dickey@clark.net.
4202
    echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
4105
    echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
4203
echo "configure:4204: checking for gethostbyname" >&5
4106
echo "configure:4107: checking for gethostbyname" >&5
4204
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
4107
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
4205
  echo $ac_n "(cached) $ac_c" 1>&6
4108
  echo $ac_n "(cached) $ac_c" 1>&6
4206
else
4109
else
4207
  cat > conftest.$ac_ext <<EOF
4110
  cat > conftest.$ac_ext <<EOF
4208
#line 4209 "configure"
4111
#line 4112 "configure"
4209
#include "confdefs.h"
4112
#include "confdefs.h"
4210
/* System header to define __stub macros and hopefully few prototypes,
4113
/* System header to define __stub macros and hopefully few prototypes,
4211
    which can conflict with char gethostbyname(); below.  */
4114
    which can conflict with char gethostbyname(); below.  */
Lines 4228-4234 Link Here
4228
4131
4229
; return 0; }
4132
; return 0; }
4230
EOF
4133
EOF
4231
if { (eval echo configure:4232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4134
if { (eval echo configure:4135: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4232
  rm -rf conftest*
4135
  rm -rf conftest*
4233
  eval "ac_cv_func_gethostbyname=yes"
4136
  eval "ac_cv_func_gethostbyname=yes"
4234
else
4137
else
Lines 4249-4255 Link Here
4249
4152
4250
    if test $ac_cv_func_gethostbyname = no; then
4153
    if test $ac_cv_func_gethostbyname = no; then
4251
      echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
4154
      echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
4252
echo "configure:4253: checking for gethostbyname in -lnsl" >&5
4155
echo "configure:4156: checking for gethostbyname in -lnsl" >&5
4253
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
4156
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
4254
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4157
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4255
  echo $ac_n "(cached) $ac_c" 1>&6
4158
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 4257-4263 Link Here
4257
  ac_save_LIBS="$LIBS"
4160
  ac_save_LIBS="$LIBS"
4258
LIBS="-lnsl  $LIBS"
4161
LIBS="-lnsl  $LIBS"
4259
cat > conftest.$ac_ext <<EOF
4162
cat > conftest.$ac_ext <<EOF
4260
#line 4261 "configure"
4163
#line 4164 "configure"
4261
#include "confdefs.h"
4164
#include "confdefs.h"
4262
/* Override any gcc2 internal prototype to avoid an error.  */
4165
/* Override any gcc2 internal prototype to avoid an error.  */
4263
/* We use char because int might match the return type of a gcc2
4166
/* We use char because int might match the return type of a gcc2
Lines 4268-4274 Link Here
4268
gethostbyname()
4171
gethostbyname()
4269
; return 0; }
4172
; return 0; }
4270
EOF
4173
EOF
4271
if { (eval echo configure:4272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4174
if { (eval echo configure:4175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4272
  rm -rf conftest*
4175
  rm -rf conftest*
4273
  eval "ac_cv_lib_$ac_lib_var=yes"
4176
  eval "ac_cv_lib_$ac_lib_var=yes"
4274
else
4177
else
Lines 4298-4309 Link Here
4298
    # -lsocket must be given before -lnsl if both are needed.
4201
    # -lsocket must be given before -lnsl if both are needed.
4299
    # We assume that if connect needs -lnsl, so does gethostbyname.
4202
    # We assume that if connect needs -lnsl, so does gethostbyname.
4300
    echo $ac_n "checking for connect""... $ac_c" 1>&6
4203
    echo $ac_n "checking for connect""... $ac_c" 1>&6
4301
echo "configure:4302: checking for connect" >&5
4204
echo "configure:4205: checking for connect" >&5
4302
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
4205
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
4303
  echo $ac_n "(cached) $ac_c" 1>&6
4206
  echo $ac_n "(cached) $ac_c" 1>&6
4304
else
4207
else
4305
  cat > conftest.$ac_ext <<EOF
4208
  cat > conftest.$ac_ext <<EOF
4306
#line 4307 "configure"
4209
#line 4210 "configure"
4307
#include "confdefs.h"
4210
#include "confdefs.h"
4308
/* System header to define __stub macros and hopefully few prototypes,
4211
/* System header to define __stub macros and hopefully few prototypes,
4309
    which can conflict with char connect(); below.  */
4212
    which can conflict with char connect(); below.  */
Lines 4326-4332 Link Here
4326
4229
4327
; return 0; }
4230
; return 0; }
4328
EOF
4231
EOF
4329
if { (eval echo configure:4330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4232
if { (eval echo configure:4233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4330
  rm -rf conftest*
4233
  rm -rf conftest*
4331
  eval "ac_cv_func_connect=yes"
4234
  eval "ac_cv_func_connect=yes"
4332
else
4235
else
Lines 4347-4353 Link Here
4347
4250
4348
    if test $ac_cv_func_connect = no; then
4251
    if test $ac_cv_func_connect = no; then
4349
      echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
4252
      echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
4350
echo "configure:4351: checking for connect in -lsocket" >&5
4253
echo "configure:4254: checking for connect in -lsocket" >&5
4351
ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
4254
ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
4352
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4255
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4353
  echo $ac_n "(cached) $ac_c" 1>&6
4256
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 4355-4361 Link Here
4355
  ac_save_LIBS="$LIBS"
4258
  ac_save_LIBS="$LIBS"
4356
LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
4259
LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
4357
cat > conftest.$ac_ext <<EOF
4260
cat > conftest.$ac_ext <<EOF
4358
#line 4359 "configure"
4261
#line 4262 "configure"
4359
#include "confdefs.h"
4262
#include "confdefs.h"
4360
/* Override any gcc2 internal prototype to avoid an error.  */
4263
/* Override any gcc2 internal prototype to avoid an error.  */
4361
/* We use char because int might match the return type of a gcc2
4264
/* We use char because int might match the return type of a gcc2
Lines 4366-4372 Link Here
4366
connect()
4269
connect()
4367
; return 0; }
4270
; return 0; }
4368
EOF
4271
EOF
4369
if { (eval echo configure:4370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4272
if { (eval echo configure:4273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4370
  rm -rf conftest*
4273
  rm -rf conftest*
4371
  eval "ac_cv_lib_$ac_lib_var=yes"
4274
  eval "ac_cv_lib_$ac_lib_var=yes"
4372
else
4275
else
Lines 4390-4401 Link Here
4390
4293
4391
    # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
4294
    # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
4392
    echo $ac_n "checking for remove""... $ac_c" 1>&6
4295
    echo $ac_n "checking for remove""... $ac_c" 1>&6
4393
echo "configure:4394: checking for remove" >&5
4296
echo "configure:4297: checking for remove" >&5
4394
if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then
4297
if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then
4395
  echo $ac_n "(cached) $ac_c" 1>&6
4298
  echo $ac_n "(cached) $ac_c" 1>&6
4396
else
4299
else
4397
  cat > conftest.$ac_ext <<EOF
4300
  cat > conftest.$ac_ext <<EOF
4398
#line 4399 "configure"
4301
#line 4302 "configure"
4399
#include "confdefs.h"
4302
#include "confdefs.h"
4400
/* System header to define __stub macros and hopefully few prototypes,
4303
/* System header to define __stub macros and hopefully few prototypes,
4401
    which can conflict with char remove(); below.  */
4304
    which can conflict with char remove(); below.  */
Lines 4418-4424 Link Here
4418
4321
4419
; return 0; }
4322
; return 0; }
4420
EOF
4323
EOF
4421
if { (eval echo configure:4422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4324
if { (eval echo configure:4325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4422
  rm -rf conftest*
4325
  rm -rf conftest*
4423
  eval "ac_cv_func_remove=yes"
4326
  eval "ac_cv_func_remove=yes"
4424
else
4327
else
Lines 4439-4445 Link Here
4439
4342
4440
    if test $ac_cv_func_remove = no; then
4343
    if test $ac_cv_func_remove = no; then
4441
      echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
4344
      echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
4442
echo "configure:4443: checking for remove in -lposix" >&5
4345
echo "configure:4346: checking for remove in -lposix" >&5
4443
ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
4346
ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
4444
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4347
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4445
  echo $ac_n "(cached) $ac_c" 1>&6
4348
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 4447-4453 Link Here
4447
  ac_save_LIBS="$LIBS"
4350
  ac_save_LIBS="$LIBS"
4448
LIBS="-lposix  $LIBS"
4351
LIBS="-lposix  $LIBS"
4449
cat > conftest.$ac_ext <<EOF
4352
cat > conftest.$ac_ext <<EOF
4450
#line 4451 "configure"
4353
#line 4354 "configure"
4451
#include "confdefs.h"
4354
#include "confdefs.h"
4452
/* Override any gcc2 internal prototype to avoid an error.  */
4355
/* Override any gcc2 internal prototype to avoid an error.  */
4453
/* We use char because int might match the return type of a gcc2
4356
/* We use char because int might match the return type of a gcc2
Lines 4458-4464 Link Here
4458
remove()
4361
remove()
4459
; return 0; }
4362
; return 0; }
4460
EOF
4363
EOF
4461
if { (eval echo configure:4462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4364
if { (eval echo configure:4365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4462
  rm -rf conftest*
4365
  rm -rf conftest*
4463
  eval "ac_cv_lib_$ac_lib_var=yes"
4366
  eval "ac_cv_lib_$ac_lib_var=yes"
4464
else
4367
else
Lines 4482-4493 Link Here
4482
4385
4483
    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
4386
    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
4484
    echo $ac_n "checking for shmat""... $ac_c" 1>&6
4387
    echo $ac_n "checking for shmat""... $ac_c" 1>&6
4485
echo "configure:4486: checking for shmat" >&5
4388
echo "configure:4389: checking for shmat" >&5
4486
if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then
4389
if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then
4487
  echo $ac_n "(cached) $ac_c" 1>&6
4390
  echo $ac_n "(cached) $ac_c" 1>&6
4488
else
4391
else
4489
  cat > conftest.$ac_ext <<EOF
4392
  cat > conftest.$ac_ext <<EOF
4490
#line 4491 "configure"
4393
#line 4394 "configure"
4491
#include "confdefs.h"
4394
#include "confdefs.h"
4492
/* System header to define __stub macros and hopefully few prototypes,
4395
/* System header to define __stub macros and hopefully few prototypes,
4493
    which can conflict with char shmat(); below.  */
4396
    which can conflict with char shmat(); below.  */
Lines 4510-4516 Link Here
4510
4413
4511
; return 0; }
4414
; return 0; }
4512
EOF
4415
EOF
4513
if { (eval echo configure:4514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4416
if { (eval echo configure:4417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4514
  rm -rf conftest*
4417
  rm -rf conftest*
4515
  eval "ac_cv_func_shmat=yes"
4418
  eval "ac_cv_func_shmat=yes"
4516
else
4419
else
Lines 4531-4537 Link Here
4531
4434
4532
    if test $ac_cv_func_shmat = no; then
4435
    if test $ac_cv_func_shmat = no; then
4533
      echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
4436
      echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
4534
echo "configure:4535: checking for shmat in -lipc" >&5
4437
echo "configure:4438: checking for shmat in -lipc" >&5
4535
ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
4438
ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
4536
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4439
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4537
  echo $ac_n "(cached) $ac_c" 1>&6
4440
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 4539-4545 Link Here
4539
  ac_save_LIBS="$LIBS"
4442
  ac_save_LIBS="$LIBS"
4540
LIBS="-lipc  $LIBS"
4443
LIBS="-lipc  $LIBS"
4541
cat > conftest.$ac_ext <<EOF
4444
cat > conftest.$ac_ext <<EOF
4542
#line 4543 "configure"
4445
#line 4446 "configure"
4543
#include "confdefs.h"
4446
#include "confdefs.h"
4544
/* Override any gcc2 internal prototype to avoid an error.  */
4447
/* Override any gcc2 internal prototype to avoid an error.  */
4545
/* We use char because int might match the return type of a gcc2
4448
/* We use char because int might match the return type of a gcc2
Lines 4550-4556 Link Here
4550
shmat()
4453
shmat()
4551
; return 0; }
4454
; return 0; }
4552
EOF
4455
EOF
4553
if { (eval echo configure:4554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4456
if { (eval echo configure:4457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4554
  rm -rf conftest*
4457
  rm -rf conftest*
4555
  eval "ac_cv_lib_$ac_lib_var=yes"
4458
  eval "ac_cv_lib_$ac_lib_var=yes"
4556
else
4459
else
Lines 4583-4589 Link Here
4583
  # libraries we check for below, so use a different variable.
4486
  # libraries we check for below, so use a different variable.
4584
  #  --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
4487
  #  --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
4585
  echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
4488
  echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
4586
echo "configure:4587: checking for IceConnectionNumber in -lICE" >&5
4489
echo "configure:4490: checking for IceConnectionNumber in -lICE" >&5
4587
ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
4490
ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
4588
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4491
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
4589
  echo $ac_n "(cached) $ac_c" 1>&6
4492
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 4591-4597 Link Here
4591
  ac_save_LIBS="$LIBS"
4494
  ac_save_LIBS="$LIBS"
4592
LIBS="-lICE $X_EXTRA_LIBS $LIBS"
4495
LIBS="-lICE $X_EXTRA_LIBS $LIBS"
4593
cat > conftest.$ac_ext <<EOF
4496
cat > conftest.$ac_ext <<EOF
4594
#line 4595 "configure"
4497
#line 4498 "configure"
4595
#include "confdefs.h"
4498
#include "confdefs.h"
4596
/* Override any gcc2 internal prototype to avoid an error.  */
4499
/* Override any gcc2 internal prototype to avoid an error.  */
4597
/* We use char because int might match the return type of a gcc2
4500
/* We use char because int might match the return type of a gcc2
Lines 4602-4608 Link Here
4602
IceConnectionNumber()
4505
IceConnectionNumber()
4603
; return 0; }
4506
; return 0; }
4604
EOF
4507
EOF
4605
if { (eval echo configure:4606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4508
if { (eval echo configure:4509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4606
  rm -rf conftest*
4509
  rm -rf conftest*
4607
  eval "ac_cv_lib_$ac_lib_var=yes"
4510
  eval "ac_cv_lib_$ac_lib_var=yes"
4608
else
4511
else
Lines 4865-4871 Link Here
4865
MKSHLIB_UNFORCE_ALL=
4768
MKSHLIB_UNFORCE_ALL=
4866
if test "$GNU_CC"; then
4769
if test "$GNU_CC"; then
4867
  echo $ac_n "checking whether ld has archive extraction flags""... $ac_c" 1>&6
4770
  echo $ac_n "checking whether ld has archive extraction flags""... $ac_c" 1>&6
4868
echo "configure:4869: checking whether ld has archive extraction flags" >&5
4771
echo "configure:4772: checking whether ld has archive extraction flags" >&5
4869
  if eval "test \"`echo '$''{'ac_cv_mkshlib_force_and_unforce'+set}'`\" = set"; then
4772
  if eval "test \"`echo '$''{'ac_cv_mkshlib_force_and_unforce'+set}'`\" = set"; then
4870
  echo $ac_n "(cached) $ac_c" 1>&6
4773
  echo $ac_n "(cached) $ac_c" 1>&6
4871
else
4774
else
Lines 4882-4895 Link Here
4882
      LDFLAGS=$force
4785
      LDFLAGS=$force
4883
      LIBS=$unforce
4786
      LIBS=$unforce
4884
      cat > conftest.$ac_ext <<EOF
4787
      cat > conftest.$ac_ext <<EOF
4885
#line 4886 "configure"
4788
#line 4789 "configure"
4886
#include "confdefs.h"
4789
#include "confdefs.h"
4887
4790
4888
int main() {
4791
int main() {
4889
4792
4890
; return 0; }
4793
; return 0; }
4891
EOF
4794
EOF
4892
if { (eval echo configure:4893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4795
if { (eval echo configure:4796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
4893
  rm -rf conftest*
4796
  rm -rf conftest*
4894
  ac_cv_mkshlib_force_and_unforce=$line; break
4797
  ac_cv_mkshlib_force_and_unforce=$line; break
4895
else
4798
else
Lines 4922-4938 Link Here
4922
cross_compiling=$ac_cv_prog_cc_cross
4825
cross_compiling=$ac_cv_prog_cc_cross
4923
4826
4924
echo $ac_n "checking for 64-bit OS""... $ac_c" 1>&6
4827
echo $ac_n "checking for 64-bit OS""... $ac_c" 1>&6
4925
echo "configure:4926: checking for 64-bit OS" >&5
4828
echo "configure:4829: checking for 64-bit OS" >&5
4926
if test "$cross_compiling" = yes; then
4829
if test "$cross_compiling" = yes; then
4927
  result="maybe" 
4830
  result="maybe" 
4928
else
4831
else
4929
  cat > conftest.$ac_ext <<EOF
4832
  cat > conftest.$ac_ext <<EOF
4930
#line 4931 "configure"
4833
#line 4834 "configure"
4931
#include "confdefs.h"
4834
#include "confdefs.h"
4932
 int main () {
4835
 int main () {
4933
    if (sizeof(long) == 8) { return 0; } return 1; } 
4836
    if (sizeof(long) == 8) { return 0; } return 1; } 
4934
EOF
4837
EOF
4935
if { (eval echo configure:4936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
4838
if { (eval echo configure:4839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
4936
then
4839
then
4937
  result="yes"
4840
  result="yes"
4938
else
4841
else
Lines 5068-5076 Link Here
5068
cross_compiling=$ac_cv_prog_cxx_cross
4971
cross_compiling=$ac_cv_prog_cxx_cross
5069
4972
5070
        echo $ac_n "checking for VisualAge C++ compiler version >= 5.0.2.0""... $ac_c" 1>&6
4973
        echo $ac_n "checking for VisualAge C++ compiler version >= 5.0.2.0""... $ac_c" 1>&6
5071
echo "configure:5072: checking for VisualAge C++ compiler version >= 5.0.2.0" >&5
4974
echo "configure:4975: checking for VisualAge C++ compiler version >= 5.0.2.0" >&5
5072
        cat > conftest.$ac_ext <<EOF
4975
        cat > conftest.$ac_ext <<EOF
5073
#line 5074 "configure"
4976
#line 4977 "configure"
5074
#include "confdefs.h"
4977
#include "confdefs.h"
5075
4978
5076
int main() {
4979
int main() {
Lines 5079-5085 Link Here
5079
             #endif
4982
             #endif
5080
; return 0; }
4983
; return 0; }
5081
EOF
4984
EOF
5082
if { (eval echo configure:5083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
4985
if { (eval echo configure:4986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
5083
  rm -rf conftest*
4986
  rm -rf conftest*
5084
  _BAD_COMPILER=
4987
  _BAD_COMPILER=
5085
else
4988
else
Lines 5114-5130 Link Here
5114
do
5017
do
5115
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
5018
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
5116
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
5019
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
5117
echo "configure:5118: checking for $ac_hdr" >&5
5020
echo "configure:5021: checking for $ac_hdr" >&5
5118
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
5021
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
5119
  echo $ac_n "(cached) $ac_c" 1>&6
5022
  echo $ac_n "(cached) $ac_c" 1>&6
5120
else
5023
else
5121
  cat > conftest.$ac_ext <<EOF
5024
  cat > conftest.$ac_ext <<EOF
5122
#line 5123 "configure"
5025
#line 5026 "configure"
5123
#include "confdefs.h"
5026
#include "confdefs.h"
5124
#include <$ac_hdr>
5027
#include <$ac_hdr>
5125
EOF
5028
EOF
5126
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
5029
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
5127
{ (eval echo configure:5128: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
5030
{ (eval echo configure:5031: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
5128
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
5031
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
5129
if test -z "$ac_err"; then
5032
if test -z "$ac_err"; then
5130
  rm -rf conftest*
5033
  rm -rf conftest*
Lines 5164-5170 Link Here
5164
    TK_LIBS='-lbe -lroot'
5067
    TK_LIBS='-lbe -lroot'
5165
    LIBS="$LIBS -lbe"
5068
    LIBS="$LIBS -lbe"
5166
    echo $ac_n "checking for main in -lbind""... $ac_c" 1>&6
5069
    echo $ac_n "checking for main in -lbind""... $ac_c" 1>&6
5167
echo "configure:5168: checking for main in -lbind" >&5
5070
echo "configure:5071: checking for main in -lbind" >&5
5168
ac_lib_var=`echo bind'_'main | sed 'y%./+-%__p_%'`
5071
ac_lib_var=`echo bind'_'main | sed 'y%./+-%__p_%'`
5169
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
5072
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
5170
  echo $ac_n "(cached) $ac_c" 1>&6
5073
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 5172-5185 Link Here
5172
  ac_save_LIBS="$LIBS"
5075
  ac_save_LIBS="$LIBS"
5173
LIBS="-lbind  $LIBS"
5076
LIBS="-lbind  $LIBS"
5174
cat > conftest.$ac_ext <<EOF
5077
cat > conftest.$ac_ext <<EOF
5175
#line 5176 "configure"
5078
#line 5079 "configure"
5176
#include "confdefs.h"
5079
#include "confdefs.h"
5177
5080
5178
int main() {
5081
int main() {
5179
main()
5082
main()
5180
; return 0; }
5083
; return 0; }
5181
EOF
5084
EOF
5182
if { (eval echo configure:5183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
5085
if { (eval echo configure:5086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
5183
  rm -rf conftest*
5086
  rm -rf conftest*
5184
  eval "ac_cv_lib_$ac_lib_var=yes"
5087
  eval "ac_cv_lib_$ac_lib_var=yes"
5185
else
5088
else
Lines 5357-5364 Link Here
5357
        MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
5260
        MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
5358
    ;;
5261
    ;;
5359
    mips*)
5262
    mips*)
5360
        CFLAGS="$CFLAGS -Wa,-xgot"
5263
        MOZ_DEBUG_FLAGS="-g"   # We want inlining
5361
        CXXFLAGS="$CXXFLAGS -Wa,-xgot"
5362
    ;;
5264
    ;;
5363
    esac
5265
    esac
5364
    ;;
5266
    ;;
Lines 5923-5931 Link Here
5923
        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
5825
        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
5924
        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
5826
        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
5925
       echo $ac_n "checking for Forte compiler version >= WS6U2""... $ac_c" 1>&6
5827
       echo $ac_n "checking for Forte compiler version >= WS6U2""... $ac_c" 1>&6
5926
echo "configure:5927: checking for Forte compiler version >= WS6U2" >&5
5828
echo "configure:5829: checking for Forte compiler version >= WS6U2" >&5
5927
       cat > conftest.$ac_ext <<EOF
5829
       cat > conftest.$ac_ext <<EOF
5928
#line 5929 "configure"
5830
#line 5831 "configure"
5929
#include "confdefs.h"
5831
#include "confdefs.h"
5930
5832
5931
int main() {
5833
int main() {
Lines 5934-5940 Link Here
5934
           #endif
5836
           #endif
5935
; return 0; }
5837
; return 0; }
5936
EOF
5838
EOF
5937
if { (eval echo configure:5938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
5839
if { (eval echo configure:5840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
5938
  rm -rf conftest*
5840
  rm -rf conftest*
5939
  _BAD_COMPILER=
5841
  _BAD_COMPILER=
5940
else
5842
else
Lines 6056-6062 Link Here
6056
        ;;
5958
        ;;
6057
    *-darwin*)
5959
    *-darwin*)
6058
        echo $ac_n "checking for -exported_symbols_list option to ld""... $ac_c" 1>&6
5960
        echo $ac_n "checking for -exported_symbols_list option to ld""... $ac_c" 1>&6
6059
echo "configure:6060: checking for -exported_symbols_list option to ld" >&5
5961
echo "configure:5962: checking for -exported_symbols_list option to ld" >&5
6060
        if eval "test \"`echo '$''{'ac_cv_exported_symbols_list'+set}'`\" = set"; then
5962
        if eval "test \"`echo '$''{'ac_cv_exported_symbols_list'+set}'`\" = set"; then
6061
  echo $ac_n "(cached) $ac_c" 1>&6
5963
  echo $ac_n "(cached) $ac_c" 1>&6
6062
else
5964
else
Lines 6092-6103 Link Here
6092
cross_compiling=$ac_cv_prog_cc_cross
5994
cross_compiling=$ac_cv_prog_cc_cross
6093
5995
6094
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
5996
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
6095
echo "configure:6096: checking for ANSI C header files" >&5
5997
echo "configure:5998: checking for ANSI C header files" >&5
6096
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
5998
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
6097
  echo $ac_n "(cached) $ac_c" 1>&6
5999
  echo $ac_n "(cached) $ac_c" 1>&6
6098
else
6000
else
6099
  cat > conftest.$ac_ext <<EOF
6001
  cat > conftest.$ac_ext <<EOF
6100
#line 6101 "configure"
6002
#line 6003 "configure"
6101
#include "confdefs.h"
6003
#include "confdefs.h"
6102
#include <stdlib.h>
6004
#include <stdlib.h>
6103
#include <stdarg.h>
6005
#include <stdarg.h>
Lines 6105-6111 Link Here
6105
#include <float.h>
6007
#include <float.h>
6106
EOF
6008
EOF
6107
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
6009
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
6108
{ (eval echo configure:6109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
6010
{ (eval echo configure:6011: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
6109
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
6011
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
6110
if test -z "$ac_err"; then
6012
if test -z "$ac_err"; then
6111
  rm -rf conftest*
6013
  rm -rf conftest*
Lines 6122-6128 Link Here
6122
if test $ac_cv_header_stdc = yes; then
6024
if test $ac_cv_header_stdc = yes; then
6123
  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
6025
  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
6124
cat > conftest.$ac_ext <<EOF
6026
cat > conftest.$ac_ext <<EOF
6125
#line 6126 "configure"
6027
#line 6028 "configure"
6126
#include "confdefs.h"
6028
#include "confdefs.h"
6127
#include <string.h>
6029
#include <string.h>
6128
EOF
6030
EOF
Lines 6140-6146 Link Here
6140
if test $ac_cv_header_stdc = yes; then
6042
if test $ac_cv_header_stdc = yes; then
6141
  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
6043
  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
6142
cat > conftest.$ac_ext <<EOF
6044
cat > conftest.$ac_ext <<EOF
6143
#line 6144 "configure"
6045
#line 6046 "configure"
6144
#include "confdefs.h"
6046
#include "confdefs.h"
6145
#include <stdlib.h>
6047
#include <stdlib.h>
6146
EOF
6048
EOF
Lines 6161-6167 Link Here
6161
  :
6063
  :
6162
else
6064
else
6163
  cat > conftest.$ac_ext <<EOF
6065
  cat > conftest.$ac_ext <<EOF
6164
#line 6165 "configure"
6066
#line 6067 "configure"
6165
#include "confdefs.h"
6067
#include "confdefs.h"
6166
#include <ctype.h>
6068
#include <ctype.h>
6167
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
6069
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
Lines 6172-6178 Link Here
6172
exit (0); }
6074
exit (0); }
6173
6075
6174
EOF
6076
EOF
6175
if { (eval echo configure:6176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
6077
if { (eval echo configure:6078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
6176
then
6078
then
6177
  :
6079
  :
6178
else
6080
else
Lines 6196-6207 Link Here
6196
fi
6098
fi
6197
6099
6198
echo $ac_n "checking for working const""... $ac_c" 1>&6
6100
echo $ac_n "checking for working const""... $ac_c" 1>&6
6199
echo "configure:6200: checking for working const" >&5
6101
echo "configure:6102: checking for working const" >&5
6200
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
6102
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
6201
  echo $ac_n "(cached) $ac_c" 1>&6
6103
  echo $ac_n "(cached) $ac_c" 1>&6
6202
else
6104
else
6203
  cat > conftest.$ac_ext <<EOF
6105
  cat > conftest.$ac_ext <<EOF
6204
#line 6205 "configure"
6106
#line 6107 "configure"
6205
#include "confdefs.h"
6107
#include "confdefs.h"
6206
6108
6207
int main() {
6109
int main() {
Lines 6250-6256 Link Here
6250
6152
6251
; return 0; }
6153
; return 0; }
6252
EOF
6154
EOF
6253
if { (eval echo configure:6254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6155
if { (eval echo configure:6156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6254
  rm -rf conftest*
6156
  rm -rf conftest*
6255
  ac_cv_c_const=yes
6157
  ac_cv_c_const=yes
6256
else
6158
else
Lines 6271-6282 Link Here
6271
fi
6173
fi
6272
6174
6273
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
6175
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
6274
echo "configure:6275: checking for mode_t" >&5
6176
echo "configure:6177: checking for mode_t" >&5
6275
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
6177
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
6276
  echo $ac_n "(cached) $ac_c" 1>&6
6178
  echo $ac_n "(cached) $ac_c" 1>&6
6277
else
6179
else
6278
  cat > conftest.$ac_ext <<EOF
6180
  cat > conftest.$ac_ext <<EOF
6279
#line 6280 "configure"
6181
#line 6182 "configure"
6280
#include "confdefs.h"
6182
#include "confdefs.h"
6281
#include <sys/types.h>
6183
#include <sys/types.h>
6282
#if STDC_HEADERS
6184
#if STDC_HEADERS
Lines 6304-6315 Link Here
6304
fi
6206
fi
6305
6207
6306
echo $ac_n "checking for off_t""... $ac_c" 1>&6
6208
echo $ac_n "checking for off_t""... $ac_c" 1>&6
6307
echo "configure:6308: checking for off_t" >&5
6209
echo "configure:6210: checking for off_t" >&5
6308
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
6210
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
6309
  echo $ac_n "(cached) $ac_c" 1>&6
6211
  echo $ac_n "(cached) $ac_c" 1>&6
6310
else
6212
else
6311
  cat > conftest.$ac_ext <<EOF
6213
  cat > conftest.$ac_ext <<EOF
6312
#line 6313 "configure"
6214
#line 6215 "configure"
6313
#include "confdefs.h"
6215
#include "confdefs.h"
6314
#include <sys/types.h>
6216
#include <sys/types.h>
6315
#if STDC_HEADERS
6217
#if STDC_HEADERS
Lines 6337-6348 Link Here
6337
fi
6239
fi
6338
6240
6339
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
6241
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
6340
echo "configure:6341: checking for pid_t" >&5
6242
echo "configure:6243: checking for pid_t" >&5
6341
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
6243
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
6342
  echo $ac_n "(cached) $ac_c" 1>&6
6244
  echo $ac_n "(cached) $ac_c" 1>&6
6343
else
6245
else
6344
  cat > conftest.$ac_ext <<EOF
6246
  cat > conftest.$ac_ext <<EOF
6345
#line 6346 "configure"
6247
#line 6248 "configure"
6346
#include "confdefs.h"
6248
#include "confdefs.h"
6347
#include <sys/types.h>
6249
#include <sys/types.h>
6348
#if STDC_HEADERS
6250
#if STDC_HEADERS
Lines 6370-6381 Link Here
6370
fi
6272
fi
6371
6273
6372
echo $ac_n "checking for size_t""... $ac_c" 1>&6
6274
echo $ac_n "checking for size_t""... $ac_c" 1>&6
6373
echo "configure:6374: checking for size_t" >&5
6275
echo "configure:6276: checking for size_t" >&5
6374
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
6276
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
6375
  echo $ac_n "(cached) $ac_c" 1>&6
6277
  echo $ac_n "(cached) $ac_c" 1>&6
6376
else
6278
else
6377
  cat > conftest.$ac_ext <<EOF
6279
  cat > conftest.$ac_ext <<EOF
6378
#line 6379 "configure"
6280
#line 6281 "configure"
6379
#include "confdefs.h"
6281
#include "confdefs.h"
6380
#include <sys/types.h>
6282
#include <sys/types.h>
6381
#if STDC_HEADERS
6283
#if STDC_HEADERS
Lines 6403-6414 Link Here
6403
fi
6305
fi
6404
6306
6405
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
6307
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
6406
echo "configure:6407: checking for uid_t in sys/types.h" >&5
6308
echo "configure:6309: checking for uid_t in sys/types.h" >&5
6407
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
6309
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
6408
  echo $ac_n "(cached) $ac_c" 1>&6
6310
  echo $ac_n "(cached) $ac_c" 1>&6
6409
else
6311
else
6410
  cat > conftest.$ac_ext <<EOF
6312
  cat > conftest.$ac_ext <<EOF
6411
#line 6412 "configure"
6313
#line 6314 "configure"
6412
#include "confdefs.h"
6314
#include "confdefs.h"
6413
#include <sys/types.h>
6315
#include <sys/types.h>
6414
EOF
6316
EOF
Lines 6437-6448 Link Here
6437
fi
6339
fi
6438
6340
6439
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
6341
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
6440
echo "configure:6441: checking for st_blksize in struct stat" >&5
6342
echo "configure:6343: checking for st_blksize in struct stat" >&5
6441
if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
6343
if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
6442
  echo $ac_n "(cached) $ac_c" 1>&6
6344
  echo $ac_n "(cached) $ac_c" 1>&6
6443
else
6345
else
6444
  cat > conftest.$ac_ext <<EOF
6346
  cat > conftest.$ac_ext <<EOF
6445
#line 6446 "configure"
6347
#line 6348 "configure"
6446
#include "confdefs.h"
6348
#include "confdefs.h"
6447
#include <sys/types.h>
6349
#include <sys/types.h>
6448
#include <sys/stat.h>
6350
#include <sys/stat.h>
Lines 6450-6456 Link Here
6450
struct stat s; s.st_blksize;
6352
struct stat s; s.st_blksize;
6451
; return 0; }
6353
; return 0; }
6452
EOF
6354
EOF
6453
if { (eval echo configure:6454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6355
if { (eval echo configure:6356: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6454
  rm -rf conftest*
6356
  rm -rf conftest*
6455
  ac_cv_struct_st_blksize=yes
6357
  ac_cv_struct_st_blksize=yes
6456
else
6358
else
Lines 6471-6482 Link Here
6471
fi
6373
fi
6472
6374
6473
echo $ac_n "checking for siginfo_t""... $ac_c" 1>&6
6375
echo $ac_n "checking for siginfo_t""... $ac_c" 1>&6
6474
echo "configure:6475: checking for siginfo_t" >&5
6376
echo "configure:6377: checking for siginfo_t" >&5
6475
if eval "test \"`echo '$''{'ac_cv_siginfo_t'+set}'`\" = set"; then
6377
if eval "test \"`echo '$''{'ac_cv_siginfo_t'+set}'`\" = set"; then
6476
  echo $ac_n "(cached) $ac_c" 1>&6
6378
  echo $ac_n "(cached) $ac_c" 1>&6
6477
else
6379
else
6478
  cat > conftest.$ac_ext <<EOF
6380
  cat > conftest.$ac_ext <<EOF
6479
#line 6480 "configure"
6381
#line 6382 "configure"
6480
#include "confdefs.h"
6382
#include "confdefs.h"
6481
#define _POSIX_C_SOURCE 199506L
6383
#define _POSIX_C_SOURCE 199506L
6482
                  #include <signal.h>
6384
                  #include <signal.h>
Lines 6484-6490 Link Here
6484
siginfo_t* info;
6386
siginfo_t* info;
6485
; return 0; }
6387
; return 0; }
6486
EOF
6388
EOF
6487
if { (eval echo configure:6488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6389
if { (eval echo configure:6390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6488
  rm -rf conftest*
6390
  rm -rf conftest*
6489
  ac_cv_siginfo_t=true
6391
  ac_cv_siginfo_t=true
6490
else
6392
else
Lines 6518-6529 Link Here
6518
fi
6420
fi
6519
6421
6520
echo $ac_n "checking for int16_t""... $ac_c" 1>&6
6422
echo $ac_n "checking for int16_t""... $ac_c" 1>&6
6521
echo "configure:6522: checking for int16_t" >&5
6423
echo "configure:6424: checking for int16_t" >&5
6522
if eval "test \"`echo '$''{'ac_cv_int16_t'+set}'`\" = set"; then
6424
if eval "test \"`echo '$''{'ac_cv_int16_t'+set}'`\" = set"; then
6523
  echo $ac_n "(cached) $ac_c" 1>&6
6425
  echo $ac_n "(cached) $ac_c" 1>&6
6524
else
6426
else
6525
  cat > conftest.$ac_ext <<EOF
6427
  cat > conftest.$ac_ext <<EOF
6526
#line 6527 "configure"
6428
#line 6429 "configure"
6527
#include "confdefs.h"
6429
#include "confdefs.h"
6528
#include <stdio.h>
6430
#include <stdio.h>
6529
                  #include <sys/types.h>
6431
                  #include <sys/types.h>
Lines 6531-6537 Link Here
6531
int16_t foo = 0;
6433
int16_t foo = 0;
6532
; return 0; }
6434
; return 0; }
6533
EOF
6435
EOF
6534
if { (eval echo configure:6535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6436
if { (eval echo configure:6437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6535
  rm -rf conftest*
6437
  rm -rf conftest*
6536
  ac_cv_int16_t=true
6438
  ac_cv_int16_t=true
6537
else
6439
else
Lines 6553-6564 Link Here
6553
  echo "$ac_t""no" 1>&6
6455
  echo "$ac_t""no" 1>&6
6554
fi
6456
fi
6555
echo $ac_n "checking for int32_t""... $ac_c" 1>&6
6457
echo $ac_n "checking for int32_t""... $ac_c" 1>&6
6556
echo "configure:6557: checking for int32_t" >&5
6458
echo "configure:6459: checking for int32_t" >&5
6557
if eval "test \"`echo '$''{'ac_cv_int32_t'+set}'`\" = set"; then
6459
if eval "test \"`echo '$''{'ac_cv_int32_t'+set}'`\" = set"; then
6558
  echo $ac_n "(cached) $ac_c" 1>&6
6460
  echo $ac_n "(cached) $ac_c" 1>&6
6559
else
6461
else
6560
  cat > conftest.$ac_ext <<EOF
6462
  cat > conftest.$ac_ext <<EOF
6561
#line 6562 "configure"
6463
#line 6464 "configure"
6562
#include "confdefs.h"
6464
#include "confdefs.h"
6563
#include <stdio.h>
6465
#include <stdio.h>
6564
                  #include <sys/types.h>
6466
                  #include <sys/types.h>
Lines 6566-6572 Link Here
6566
int32_t foo = 0;
6468
int32_t foo = 0;
6567
; return 0; }
6469
; return 0; }
6568
EOF
6470
EOF
6569
if { (eval echo configure:6570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6471
if { (eval echo configure:6472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6570
  rm -rf conftest*
6472
  rm -rf conftest*
6571
  ac_cv_int32_t=true
6473
  ac_cv_int32_t=true
6572
else
6474
else
Lines 6588-6599 Link Here
6588
  echo "$ac_t""no" 1>&6
6490
  echo "$ac_t""no" 1>&6
6589
fi
6491
fi
6590
echo $ac_n "checking for int64_t""... $ac_c" 1>&6
6492
echo $ac_n "checking for int64_t""... $ac_c" 1>&6
6591
echo "configure:6592: checking for int64_t" >&5
6493
echo "configure:6494: checking for int64_t" >&5
6592
if eval "test \"`echo '$''{'ac_cv_int64_t'+set}'`\" = set"; then
6494
if eval "test \"`echo '$''{'ac_cv_int64_t'+set}'`\" = set"; then
6593
  echo $ac_n "(cached) $ac_c" 1>&6
6495
  echo $ac_n "(cached) $ac_c" 1>&6
6594
else
6496
else
6595
  cat > conftest.$ac_ext <<EOF
6497
  cat > conftest.$ac_ext <<EOF
6596
#line 6597 "configure"
6498
#line 6499 "configure"
6597
#include "confdefs.h"
6499
#include "confdefs.h"
6598
#include <stdio.h>
6500
#include <stdio.h>
6599
                  #include <sys/types.h>
6501
                  #include <sys/types.h>
Lines 6601-6607 Link Here
6601
int64_t foo = 0;
6503
int64_t foo = 0;
6602
; return 0; }
6504
; return 0; }
6603
EOF
6505
EOF
6604
if { (eval echo configure:6605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6506
if { (eval echo configure:6507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6605
  rm -rf conftest*
6507
  rm -rf conftest*
6606
  ac_cv_int64_t=true
6508
  ac_cv_int64_t=true
6607
else
6509
else
Lines 6623-6634 Link Here
6623
  echo "$ac_t""no" 1>&6
6525
  echo "$ac_t""no" 1>&6
6624
fi
6526
fi
6625
echo $ac_n "checking for int64""... $ac_c" 1>&6
6527
echo $ac_n "checking for int64""... $ac_c" 1>&6
6626
echo "configure:6627: checking for int64" >&5
6528
echo "configure:6529: checking for int64" >&5
6627
if eval "test \"`echo '$''{'ac_cv_int64'+set}'`\" = set"; then
6529
if eval "test \"`echo '$''{'ac_cv_int64'+set}'`\" = set"; then
6628
  echo $ac_n "(cached) $ac_c" 1>&6
6530
  echo $ac_n "(cached) $ac_c" 1>&6
6629
else
6531
else
6630
  cat > conftest.$ac_ext <<EOF
6532
  cat > conftest.$ac_ext <<EOF
6631
#line 6632 "configure"
6533
#line 6534 "configure"
6632
#include "confdefs.h"
6534
#include "confdefs.h"
6633
#include <stdio.h>
6535
#include <stdio.h>
6634
                  #include <sys/types.h>
6536
                  #include <sys/types.h>
Lines 6636-6642 Link Here
6636
int64 foo = 0;
6538
int64 foo = 0;
6637
; return 0; }
6539
; return 0; }
6638
EOF
6540
EOF
6639
if { (eval echo configure:6640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6541
if { (eval echo configure:6542: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6640
  rm -rf conftest*
6542
  rm -rf conftest*
6641
  ac_cv_int64=true
6543
  ac_cv_int64=true
6642
else
6544
else
Lines 6658-6669 Link Here
6658
  echo "$ac_t""no" 1>&6
6560
  echo "$ac_t""no" 1>&6
6659
fi
6561
fi
6660
echo $ac_n "checking for uint""... $ac_c" 1>&6
6562
echo $ac_n "checking for uint""... $ac_c" 1>&6
6661
echo "configure:6662: checking for uint" >&5
6563
echo "configure:6564: checking for uint" >&5
6662
if eval "test \"`echo '$''{'ac_cv_uint'+set}'`\" = set"; then
6564
if eval "test \"`echo '$''{'ac_cv_uint'+set}'`\" = set"; then
6663
  echo $ac_n "(cached) $ac_c" 1>&6
6565
  echo $ac_n "(cached) $ac_c" 1>&6
6664
else
6566
else
6665
  cat > conftest.$ac_ext <<EOF
6567
  cat > conftest.$ac_ext <<EOF
6666
#line 6667 "configure"
6568
#line 6569 "configure"
6667
#include "confdefs.h"
6569
#include "confdefs.h"
6668
#include <stdio.h>
6570
#include <stdio.h>
6669
                  #include <sys/types.h>
6571
                  #include <sys/types.h>
Lines 6671-6677 Link Here
6671
uint foo = 0;
6573
uint foo = 0;
6672
; return 0; }
6574
; return 0; }
6673
EOF
6575
EOF
6674
if { (eval echo configure:6675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6576
if { (eval echo configure:6577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6675
  rm -rf conftest*
6577
  rm -rf conftest*
6676
  ac_cv_uint=true
6578
  ac_cv_uint=true
6677
else
6579
else
Lines 6693-6704 Link Here
6693
  echo "$ac_t""no" 1>&6
6595
  echo "$ac_t""no" 1>&6
6694
fi
6596
fi
6695
echo $ac_n "checking for uint_t""... $ac_c" 1>&6
6597
echo $ac_n "checking for uint_t""... $ac_c" 1>&6
6696
echo "configure:6697: checking for uint_t" >&5
6598
echo "configure:6599: checking for uint_t" >&5
6697
if eval "test \"`echo '$''{'ac_cv_uint_t'+set}'`\" = set"; then
6599
if eval "test \"`echo '$''{'ac_cv_uint_t'+set}'`\" = set"; then
6698
  echo $ac_n "(cached) $ac_c" 1>&6
6600
  echo $ac_n "(cached) $ac_c" 1>&6
6699
else
6601
else
6700
  cat > conftest.$ac_ext <<EOF
6602
  cat > conftest.$ac_ext <<EOF
6701
#line 6702 "configure"
6603
#line 6604 "configure"
6702
#include "confdefs.h"
6604
#include "confdefs.h"
6703
#include <stdio.h>
6605
#include <stdio.h>
6704
                  #include <sys/types.h>
6606
                  #include <sys/types.h>
Lines 6706-6712 Link Here
6706
uint_t foo = 0;
6608
uint_t foo = 0;
6707
; return 0; }
6609
; return 0; }
6708
EOF
6610
EOF
6709
if { (eval echo configure:6710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6611
if { (eval echo configure:6612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6710
  rm -rf conftest*
6612
  rm -rf conftest*
6711
  ac_cv_uint_t=true
6613
  ac_cv_uint_t=true
6712
else
6614
else
Lines 6728-6739 Link Here
6728
  echo "$ac_t""no" 1>&6
6630
  echo "$ac_t""no" 1>&6
6729
fi
6631
fi
6730
echo $ac_n "checking for uint16_t""... $ac_c" 1>&6
6632
echo $ac_n "checking for uint16_t""... $ac_c" 1>&6
6731
echo "configure:6732: checking for uint16_t" >&5
6633
echo "configure:6634: checking for uint16_t" >&5
6732
if eval "test \"`echo '$''{'ac_cv_uint16_t'+set}'`\" = set"; then
6634
if eval "test \"`echo '$''{'ac_cv_uint16_t'+set}'`\" = set"; then
6733
  echo $ac_n "(cached) $ac_c" 1>&6
6635
  echo $ac_n "(cached) $ac_c" 1>&6
6734
else
6636
else
6735
  cat > conftest.$ac_ext <<EOF
6637
  cat > conftest.$ac_ext <<EOF
6736
#line 6737 "configure"
6638
#line 6639 "configure"
6737
#include "confdefs.h"
6639
#include "confdefs.h"
6738
#include <stdio.h>
6640
#include <stdio.h>
6739
                  #include <sys/types.h>
6641
                  #include <sys/types.h>
Lines 6741-6747 Link Here
6741
uint16_t foo = 0;
6643
uint16_t foo = 0;
6742
; return 0; }
6644
; return 0; }
6743
EOF
6645
EOF
6744
if { (eval echo configure:6745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6646
if { (eval echo configure:6647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6745
  rm -rf conftest*
6647
  rm -rf conftest*
6746
  ac_cv_uint16_t=true
6648
  ac_cv_uint16_t=true
6747
else
6649
else
Lines 6772-6783 Link Here
6772
6674
6773
6675
6774
echo $ac_n "checking for uname.domainname""... $ac_c" 1>&6
6676
echo $ac_n "checking for uname.domainname""... $ac_c" 1>&6
6775
echo "configure:6776: checking for uname.domainname" >&5
6677
echo "configure:6678: checking for uname.domainname" >&5
6776
if eval "test \"`echo '$''{'ac_cv_have_uname_domainname_field'+set}'`\" = set"; then
6678
if eval "test \"`echo '$''{'ac_cv_have_uname_domainname_field'+set}'`\" = set"; then
6777
  echo $ac_n "(cached) $ac_c" 1>&6
6679
  echo $ac_n "(cached) $ac_c" 1>&6
6778
else
6680
else
6779
  cat > conftest.$ac_ext <<EOF
6681
  cat > conftest.$ac_ext <<EOF
6780
#line 6781 "configure"
6682
#line 6683 "configure"
6781
#include "confdefs.h"
6683
#include "confdefs.h"
6782
#include <sys/utsname.h>
6684
#include <sys/utsname.h>
6783
int main() {
6685
int main() {
Lines 6785-6791 Link Here
6785
            (void)uname(res);  if (res != 0) { domain = res->domainname; } 
6687
            (void)uname(res);  if (res != 0) { domain = res->domainname; } 
6786
; return 0; }
6688
; return 0; }
6787
EOF
6689
EOF
6788
if { (eval echo configure:6789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6690
if { (eval echo configure:6691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6789
  rm -rf conftest*
6691
  rm -rf conftest*
6790
  ac_cv_have_uname_domainname_field=true
6692
  ac_cv_have_uname_domainname_field=true
6791
else
6693
else
Lines 6809-6820 Link Here
6809
fi
6711
fi
6810
6712
6811
echo $ac_n "checking for uname.__domainname""... $ac_c" 1>&6
6713
echo $ac_n "checking for uname.__domainname""... $ac_c" 1>&6
6812
echo "configure:6813: checking for uname.__domainname" >&5
6714
echo "configure:6715: checking for uname.__domainname" >&5
6813
if eval "test \"`echo '$''{'ac_cv_have_uname_us_domainname_field'+set}'`\" = set"; then
6715
if eval "test \"`echo '$''{'ac_cv_have_uname_us_domainname_field'+set}'`\" = set"; then
6814
  echo $ac_n "(cached) $ac_c" 1>&6
6716
  echo $ac_n "(cached) $ac_c" 1>&6
6815
else
6717
else
6816
  cat > conftest.$ac_ext <<EOF
6718
  cat > conftest.$ac_ext <<EOF
6817
#line 6818 "configure"
6719
#line 6720 "configure"
6818
#include "confdefs.h"
6720
#include "confdefs.h"
6819
#include <sys/utsname.h>
6721
#include <sys/utsname.h>
6820
int main() {
6722
int main() {
Lines 6822-6828 Link Here
6822
            (void)uname(res);  if (res != 0) { domain = res->__domainname; } 
6724
            (void)uname(res);  if (res != 0) { domain = res->__domainname; } 
6823
; return 0; }
6725
; return 0; }
6824
EOF
6726
EOF
6825
if { (eval echo configure:6826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6727
if { (eval echo configure:6728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6826
  rm -rf conftest*
6728
  rm -rf conftest*
6827
  ac_cv_have_uname_us_domainname_field=true
6729
  ac_cv_have_uname_us_domainname_field=true
6828
else
6730
else
Lines 6855-6861 Link Here
6855
6757
6856
6758
6857
echo $ac_n "checking for usable wchar_t (2 bytes, unsigned)""... $ac_c" 1>&6
6759
echo $ac_n "checking for usable wchar_t (2 bytes, unsigned)""... $ac_c" 1>&6
6858
echo "configure:6859: checking for usable wchar_t (2 bytes, unsigned)" >&5
6760
echo "configure:6761: checking for usable wchar_t (2 bytes, unsigned)" >&5
6859
if eval "test \"`echo '$''{'ac_cv_have_usable_wchar'+set}'`\" = set"; then
6761
if eval "test \"`echo '$''{'ac_cv_have_usable_wchar'+set}'`\" = set"; then
6860
  echo $ac_n "(cached) $ac_c" 1>&6
6762
  echo $ac_n "(cached) $ac_c" 1>&6
6861
else
6763
else
Lines 6863-6876 Link Here
6863
  ac_cv_have_usable_wchar="maybe"
6765
  ac_cv_have_usable_wchar="maybe"
6864
else
6766
else
6865
  cat > conftest.$ac_ext <<EOF
6767
  cat > conftest.$ac_ext <<EOF
6866
#line 6867 "configure"
6768
#line 6769 "configure"
6867
#include "confdefs.h"
6769
#include "confdefs.h"
6868
#include <stddef.h>
6770
#include <stddef.h>
6869
                 int main () {
6771
                 int main () {
6870
                   return (sizeof(wchar_t) != 2) ||
6772
                   return (sizeof(wchar_t) != 2) ||
6871
                          (wchar_t)-1 < (wchar_t) 0 ; } 
6773
                          (wchar_t)-1 < (wchar_t) 0 ; } 
6872
EOF
6774
EOF
6873
if { (eval echo configure:6874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
6775
if { (eval echo configure:6776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
6874
then
6776
then
6875
  ac_cv_have_usable_wchar="yes"
6777
  ac_cv_have_usable_wchar="yes"
6876
else
6778
else
Lines 6905-6911 Link Here
6905
    CXXFLAGS="$CXXFLAGS -fshort-wchar"
6807
    CXXFLAGS="$CXXFLAGS -fshort-wchar"
6906
6808
6907
    echo $ac_n "checking for compiler -fshort-wchar option""... $ac_c" 1>&6
6809
    echo $ac_n "checking for compiler -fshort-wchar option""... $ac_c" 1>&6
6908
echo "configure:6909: checking for compiler -fshort-wchar option" >&5
6810
echo "configure:6811: checking for compiler -fshort-wchar option" >&5
6909
if eval "test \"`echo '$''{'ac_cv_have_usable_wchar_option'+set}'`\" = set"; then
6811
if eval "test \"`echo '$''{'ac_cv_have_usable_wchar_option'+set}'`\" = set"; then
6910
  echo $ac_n "(cached) $ac_c" 1>&6
6812
  echo $ac_n "(cached) $ac_c" 1>&6
6911
else
6813
else
Lines 6913-6926 Link Here
6913
  ac_cv_have_usable_wchar_option="maybe"
6815
  ac_cv_have_usable_wchar_option="maybe"
6914
else
6816
else
6915
  cat > conftest.$ac_ext <<EOF
6817
  cat > conftest.$ac_ext <<EOF
6916
#line 6917 "configure"
6818
#line 6819 "configure"
6917
#include "confdefs.h"
6819
#include "confdefs.h"
6820
#ifdef __cplusplus
6821
extern "C" void exit(int);
6822
#endif
6918
#include <stddef.h>
6823
#include <stddef.h>
6919
                     int main () {
6824
                     int main () {
6920
                       return (sizeof(wchar_t) != 2) ||
6825
                       return (sizeof(wchar_t) != 2) ||
6921
                              (wchar_t)-1 < (wchar_t) 0 ; } 
6826
                              (wchar_t)-1 < (wchar_t) 0 ; } 
6922
EOF
6827
EOF
6923
if { (eval echo configure:6924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
6828
if { (eval echo configure:6829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
6924
then
6829
then
6925
  ac_cv_have_usable_wchar_option="yes"
6830
  ac_cv_have_usable_wchar_option="yes"
6926
else
6831
else
Lines 6956-6962 Link Here
6956
6861
6957
if test "$GNU_CC"; then
6862
if test "$GNU_CC"; then
6958
  echo $ac_n "checking for .hidden assembler directive""... $ac_c" 1>&6
6863
  echo $ac_n "checking for .hidden assembler directive""... $ac_c" 1>&6
6959
echo "configure:6960: checking for .hidden assembler directive" >&5
6864
echo "configure:6865: checking for .hidden assembler directive" >&5
6960
if eval "test \"`echo '$''{'ac_cv_asm_hidden_directive'+set}'`\" = set"; then
6865
if eval "test \"`echo '$''{'ac_cv_asm_hidden_directive'+set}'`\" = set"; then
6961
  echo $ac_n "(cached) $ac_c" 1>&6
6866
  echo $ac_n "(cached) $ac_c" 1>&6
6962
else
6867
else
Lines 6964-6970 Link Here
6964
.hidden foo
6869
.hidden foo
6965
foo:
6870
foo:
6966
EOF
6871
EOF
6967
    if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:6968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
6872
    if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:6873: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
6968
      ac_cv_asm_hidden_directive=yes
6873
      ac_cv_asm_hidden_directive=yes
6969
    else
6874
    else
6970
      ac_cv_asm_hidden_directive=no
6875
      ac_cv_asm_hidden_directive=no
Lines 6976-6982 Link Here
6976
6881
6977
  if test $ac_cv_asm_hidden_directive = yes; then
6882
  if test $ac_cv_asm_hidden_directive = yes; then
6978
    echo $ac_n "checking whether __attribute__((visibility())) is supported""... $ac_c" 1>&6
6883
    echo $ac_n "checking whether __attribute__((visibility())) is supported""... $ac_c" 1>&6
6979
echo "configure:6980: checking whether __attribute__((visibility())) is supported" >&5
6884
echo "configure:6885: checking whether __attribute__((visibility())) is supported" >&5
6980
if eval "test \"`echo '$''{'ac_cv_visibility_attribute'+set}'`\" = set"; then
6885
if eval "test \"`echo '$''{'ac_cv_visibility_attribute'+set}'`\" = set"; then
6981
  echo $ac_n "(cached) $ac_c" 1>&6
6886
  echo $ac_n "(cached) $ac_c" 1>&6
6982
else
6887
else
Lines 7008-7019 Link Here
7008
do
6913
do
7009
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
6914
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7010
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
6915
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
7011
echo "configure:7012: checking for $ac_hdr that defines DIR" >&5
6916
echo "configure:6917: checking for $ac_hdr that defines DIR" >&5
7012
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
6917
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
7013
  echo $ac_n "(cached) $ac_c" 1>&6
6918
  echo $ac_n "(cached) $ac_c" 1>&6
7014
else
6919
else
7015
  cat > conftest.$ac_ext <<EOF
6920
  cat > conftest.$ac_ext <<EOF
7016
#line 7017 "configure"
6921
#line 6922 "configure"
7017
#include "confdefs.h"
6922
#include "confdefs.h"
7018
#include <sys/types.h>
6923
#include <sys/types.h>
7019
#include <$ac_hdr>
6924
#include <$ac_hdr>
Lines 7021-7027 Link Here
7021
DIR *dirp = 0;
6926
DIR *dirp = 0;
7022
; return 0; }
6927
; return 0; }
7023
EOF
6928
EOF
7024
if { (eval echo configure:7025: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
6929
if { (eval echo configure:6930: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
7025
  rm -rf conftest*
6930
  rm -rf conftest*
7026
  eval "ac_cv_header_dirent_$ac_safe=yes"
6931
  eval "ac_cv_header_dirent_$ac_safe=yes"
7027
else
6932
else
Lines 7046-7052 Link Here
7046
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
6951
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
7047
if test $ac_header_dirent = dirent.h; then
6952
if test $ac_header_dirent = dirent.h; then
7048
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
6953
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
7049
echo "configure:7050: checking for opendir in -ldir" >&5
6954
echo "configure:6955: checking for opendir in -ldir" >&5
7050
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
6955
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
7051
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
6956
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7052
  echo $ac_n "(cached) $ac_c" 1>&6
6957
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7054-7060 Link Here
7054
  ac_save_LIBS="$LIBS"
6959
  ac_save_LIBS="$LIBS"
7055
LIBS="-ldir  $LIBS"
6960
LIBS="-ldir  $LIBS"
7056
cat > conftest.$ac_ext <<EOF
6961
cat > conftest.$ac_ext <<EOF
7057
#line 7058 "configure"
6962
#line 6963 "configure"
7058
#include "confdefs.h"
6963
#include "confdefs.h"
7059
/* Override any gcc2 internal prototype to avoid an error.  */
6964
/* Override any gcc2 internal prototype to avoid an error.  */
7060
/* We use char because int might match the return type of a gcc2
6965
/* We use char because int might match the return type of a gcc2
Lines 7065-7071 Link Here
7065
opendir()
6970
opendir()
7066
; return 0; }
6971
; return 0; }
7067
EOF
6972
EOF
7068
if { (eval echo configure:7069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
6973
if { (eval echo configure:6974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7069
  rm -rf conftest*
6974
  rm -rf conftest*
7070
  eval "ac_cv_lib_$ac_lib_var=yes"
6975
  eval "ac_cv_lib_$ac_lib_var=yes"
7071
else
6976
else
Lines 7087-7093 Link Here
7087
6992
7088
else
6993
else
7089
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
6994
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
7090
echo "configure:7091: checking for opendir in -lx" >&5
6995
echo "configure:6996: checking for opendir in -lx" >&5
7091
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
6996
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
7092
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
6997
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7093
  echo $ac_n "(cached) $ac_c" 1>&6
6998
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7095-7101 Link Here
7095
  ac_save_LIBS="$LIBS"
7000
  ac_save_LIBS="$LIBS"
7096
LIBS="-lx  $LIBS"
7001
LIBS="-lx  $LIBS"
7097
cat > conftest.$ac_ext <<EOF
7002
cat > conftest.$ac_ext <<EOF
7098
#line 7099 "configure"
7003
#line 7004 "configure"
7099
#include "confdefs.h"
7004
#include "confdefs.h"
7100
/* Override any gcc2 internal prototype to avoid an error.  */
7005
/* Override any gcc2 internal prototype to avoid an error.  */
7101
/* We use char because int might match the return type of a gcc2
7006
/* We use char because int might match the return type of a gcc2
Lines 7106-7112 Link Here
7106
opendir()
7011
opendir()
7107
; return 0; }
7012
; return 0; }
7108
EOF
7013
EOF
7109
if { (eval echo configure:7110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7014
if { (eval echo configure:7015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7110
  rm -rf conftest*
7015
  rm -rf conftest*
7111
  eval "ac_cv_lib_$ac_lib_var=yes"
7016
  eval "ac_cv_lib_$ac_lib_var=yes"
7112
else
7017
else
Lines 7138-7154 Link Here
7138
do
7043
do
7139
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7044
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7140
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7045
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7141
echo "configure:7142: checking for $ac_hdr" >&5
7046
echo "configure:7047: checking for $ac_hdr" >&5
7142
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7047
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7143
  echo $ac_n "(cached) $ac_c" 1>&6
7048
  echo $ac_n "(cached) $ac_c" 1>&6
7144
else
7049
else
7145
  cat > conftest.$ac_ext <<EOF
7050
  cat > conftest.$ac_ext <<EOF
7146
#line 7147 "configure"
7051
#line 7052 "configure"
7147
#include "confdefs.h"
7052
#include "confdefs.h"
7148
#include <$ac_hdr>
7053
#include <$ac_hdr>
7149
EOF
7054
EOF
7150
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7055
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7151
{ (eval echo configure:7152: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7056
{ (eval echo configure:7057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7152
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7057
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7153
if test -z "$ac_err"; then
7058
if test -z "$ac_err"; then
7154
  rm -rf conftest*
7059
  rm -rf conftest*
Lines 7178-7194 Link Here
7178
do
7083
do
7179
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7084
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7180
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7085
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7181
echo "configure:7182: checking for $ac_hdr" >&5
7086
echo "configure:7087: checking for $ac_hdr" >&5
7182
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7087
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7183
  echo $ac_n "(cached) $ac_c" 1>&6
7088
  echo $ac_n "(cached) $ac_c" 1>&6
7184
else
7089
else
7185
  cat > conftest.$ac_ext <<EOF
7090
  cat > conftest.$ac_ext <<EOF
7186
#line 7187 "configure"
7091
#line 7092 "configure"
7187
#include "confdefs.h"
7092
#include "confdefs.h"
7188
#include <$ac_hdr>
7093
#include <$ac_hdr>
7189
EOF
7094
EOF
7190
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7095
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7191
{ (eval echo configure:7192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7096
{ (eval echo configure:7097: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7192
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7097
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7193
if test -z "$ac_err"; then
7098
if test -z "$ac_err"; then
7194
  rm -rf conftest*
7099
  rm -rf conftest*
Lines 7218-7234 Link Here
7218
do
7123
do
7219
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7124
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7220
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7125
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7221
echo "configure:7222: checking for $ac_hdr" >&5
7126
echo "configure:7127: checking for $ac_hdr" >&5
7222
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7127
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7223
  echo $ac_n "(cached) $ac_c" 1>&6
7128
  echo $ac_n "(cached) $ac_c" 1>&6
7224
else
7129
else
7225
  cat > conftest.$ac_ext <<EOF
7130
  cat > conftest.$ac_ext <<EOF
7226
#line 7227 "configure"
7131
#line 7132 "configure"
7227
#include "confdefs.h"
7132
#include "confdefs.h"
7228
#include <$ac_hdr>
7133
#include <$ac_hdr>
7229
EOF
7134
EOF
7230
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7135
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7231
{ (eval echo configure:7232: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7136
{ (eval echo configure:7137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7232
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7137
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7233
if test -z "$ac_err"; then
7138
if test -z "$ac_err"; then
7234
  rm -rf conftest*
7139
  rm -rf conftest*
Lines 7258-7274 Link Here
7258
do
7163
do
7259
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7164
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7260
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7165
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7261
echo "configure:7262: checking for $ac_hdr" >&5
7166
echo "configure:7167: checking for $ac_hdr" >&5
7262
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7167
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7263
  echo $ac_n "(cached) $ac_c" 1>&6
7168
  echo $ac_n "(cached) $ac_c" 1>&6
7264
else
7169
else
7265
  cat > conftest.$ac_ext <<EOF
7170
  cat > conftest.$ac_ext <<EOF
7266
#line 7267 "configure"
7171
#line 7172 "configure"
7267
#include "confdefs.h"
7172
#include "confdefs.h"
7268
#include <$ac_hdr>
7173
#include <$ac_hdr>
7269
EOF
7174
EOF
7270
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7175
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7271
{ (eval echo configure:7272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7176
{ (eval echo configure:7177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7272
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7177
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7273
if test -z "$ac_err"; then
7178
if test -z "$ac_err"; then
7274
  rm -rf conftest*
7179
  rm -rf conftest*
Lines 7298-7314 Link Here
7298
do
7203
do
7299
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7204
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7300
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7205
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7301
echo "configure:7302: checking for $ac_hdr" >&5
7206
echo "configure:7207: checking for $ac_hdr" >&5
7302
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7207
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7303
  echo $ac_n "(cached) $ac_c" 1>&6
7208
  echo $ac_n "(cached) $ac_c" 1>&6
7304
else
7209
else
7305
  cat > conftest.$ac_ext <<EOF
7210
  cat > conftest.$ac_ext <<EOF
7306
#line 7307 "configure"
7211
#line 7212 "configure"
7307
#include "confdefs.h"
7212
#include "confdefs.h"
7308
#include <$ac_hdr>
7213
#include <$ac_hdr>
7309
EOF
7214
EOF
7310
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7215
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7311
{ (eval echo configure:7312: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7216
{ (eval echo configure:7217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7312
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7217
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7313
if test -z "$ac_err"; then
7218
if test -z "$ac_err"; then
7314
  rm -rf conftest*
7219
  rm -rf conftest*
Lines 7339-7355 Link Here
7339
do
7244
do
7340
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7245
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7341
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7246
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7342
echo "configure:7343: checking for $ac_hdr" >&5
7247
echo "configure:7248: checking for $ac_hdr" >&5
7343
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7248
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7344
  echo $ac_n "(cached) $ac_c" 1>&6
7249
  echo $ac_n "(cached) $ac_c" 1>&6
7345
else
7250
else
7346
  cat > conftest.$ac_ext <<EOF
7251
  cat > conftest.$ac_ext <<EOF
7347
#line 7348 "configure"
7252
#line 7253 "configure"
7348
#include "confdefs.h"
7253
#include "confdefs.h"
7349
#include <$ac_hdr>
7254
#include <$ac_hdr>
7350
EOF
7255
EOF
7351
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7256
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7352
{ (eval echo configure:7353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7257
{ (eval echo configure:7258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7353
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7258
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7354
if test -z "$ac_err"; then
7259
if test -z "$ac_err"; then
7355
  rm -rf conftest*
7260
  rm -rf conftest*
Lines 7380-7396 Link Here
7380
do
7285
do
7381
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7286
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7382
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7287
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7383
echo "configure:7384: checking for $ac_hdr" >&5
7288
echo "configure:7289: checking for $ac_hdr" >&5
7384
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7289
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7385
  echo $ac_n "(cached) $ac_c" 1>&6
7290
  echo $ac_n "(cached) $ac_c" 1>&6
7386
else
7291
else
7387
  cat > conftest.$ac_ext <<EOF
7292
  cat > conftest.$ac_ext <<EOF
7388
#line 7389 "configure"
7293
#line 7294 "configure"
7389
#include "confdefs.h"
7294
#include "confdefs.h"
7390
#include <$ac_hdr>
7295
#include <$ac_hdr>
7391
EOF
7296
EOF
7392
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7297
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7393
{ (eval echo configure:7394: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7298
{ (eval echo configure:7299: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7394
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7299
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7395
if test -z "$ac_err"; then
7300
if test -z "$ac_err"; then
7396
  rm -rf conftest*
7301
  rm -rf conftest*
Lines 7427-7443 Link Here
7427
NEW_H=new.h
7332
NEW_H=new.h
7428
ac_safe=`echo "new" | sed 'y%./+-%__p_%'`
7333
ac_safe=`echo "new" | sed 'y%./+-%__p_%'`
7429
echo $ac_n "checking for new""... $ac_c" 1>&6
7334
echo $ac_n "checking for new""... $ac_c" 1>&6
7430
echo "configure:7431: checking for new" >&5
7335
echo "configure:7336: checking for new" >&5
7431
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7336
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7432
  echo $ac_n "(cached) $ac_c" 1>&6
7337
  echo $ac_n "(cached) $ac_c" 1>&6
7433
else
7338
else
7434
  cat > conftest.$ac_ext <<EOF
7339
  cat > conftest.$ac_ext <<EOF
7435
#line 7436 "configure"
7340
#line 7341 "configure"
7436
#include "confdefs.h"
7341
#include "confdefs.h"
7437
#include <new>
7342
#include <new>
7438
EOF
7343
EOF
7439
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7344
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7440
{ (eval echo configure:7441: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7345
{ (eval echo configure:7346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7441
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7346
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7442
if test -z "$ac_err"; then
7347
if test -z "$ac_err"; then
7443
  rm -rf conftest*
7348
  rm -rf conftest*
Lines 7478-7494 Link Here
7478
do
7383
do
7479
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7384
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
7480
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7385
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
7481
echo "configure:7482: checking for $ac_hdr" >&5
7386
echo "configure:7387: checking for $ac_hdr" >&5
7482
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7387
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7483
  echo $ac_n "(cached) $ac_c" 1>&6
7388
  echo $ac_n "(cached) $ac_c" 1>&6
7484
else
7389
else
7485
  cat > conftest.$ac_ext <<EOF
7390
  cat > conftest.$ac_ext <<EOF
7486
#line 7487 "configure"
7391
#line 7392 "configure"
7487
#include "confdefs.h"
7392
#include "confdefs.h"
7488
#include <$ac_hdr>
7393
#include <$ac_hdr>
7489
EOF
7394
EOF
7490
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7395
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7491
{ (eval echo configure:7492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7396
{ (eval echo configure:7397: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7492
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7397
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7493
if test -z "$ac_err"; then
7398
if test -z "$ac_err"; then
7494
  rm -rf conftest*
7399
  rm -rf conftest*
Lines 7522-7528 Link Here
7522
	;;
7427
	;;
7523
*)
7428
*)
7524
	echo $ac_n "checking for gethostbyname_r in -lc_r""... $ac_c" 1>&6
7429
	echo $ac_n "checking for gethostbyname_r in -lc_r""... $ac_c" 1>&6
7525
echo "configure:7526: checking for gethostbyname_r in -lc_r" >&5
7430
echo "configure:7431: checking for gethostbyname_r in -lc_r" >&5
7526
ac_lib_var=`echo c_r'_'gethostbyname_r | sed 'y%./+-%__p_%'`
7431
ac_lib_var=`echo c_r'_'gethostbyname_r | sed 'y%./+-%__p_%'`
7527
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7432
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7528
  echo $ac_n "(cached) $ac_c" 1>&6
7433
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7530-7536 Link Here
7530
  ac_save_LIBS="$LIBS"
7435
  ac_save_LIBS="$LIBS"
7531
LIBS="-lc_r  $LIBS"
7436
LIBS="-lc_r  $LIBS"
7532
cat > conftest.$ac_ext <<EOF
7437
cat > conftest.$ac_ext <<EOF
7533
#line 7534 "configure"
7438
#line 7439 "configure"
7534
#include "confdefs.h"
7439
#include "confdefs.h"
7535
/* Override any gcc2 internal prototype to avoid an error.  */
7440
/* Override any gcc2 internal prototype to avoid an error.  */
7536
/* We use char because int might match the return type of a gcc2
7441
/* We use char because int might match the return type of a gcc2
Lines 7541-7547 Link Here
7541
gethostbyname_r()
7446
gethostbyname_r()
7542
; return 0; }
7447
; return 0; }
7543
EOF
7448
EOF
7544
if { (eval echo configure:7545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7449
if { (eval echo configure:7450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7545
  rm -rf conftest*
7450
  rm -rf conftest*
7546
  eval "ac_cv_lib_$ac_lib_var=yes"
7451
  eval "ac_cv_lib_$ac_lib_var=yes"
7547
else
7452
else
Lines 7571-7577 Link Here
7571
	;;
7476
	;;
7572
esac
7477
esac
7573
echo $ac_n "checking for atan in -lm""... $ac_c" 1>&6
7478
echo $ac_n "checking for atan in -lm""... $ac_c" 1>&6
7574
echo "configure:7575: checking for atan in -lm" >&5
7479
echo "configure:7480: checking for atan in -lm" >&5
7575
ac_lib_var=`echo m'_'atan | sed 'y%./+-%__p_%'`
7480
ac_lib_var=`echo m'_'atan | sed 'y%./+-%__p_%'`
7576
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7481
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7577
  echo $ac_n "(cached) $ac_c" 1>&6
7482
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7579-7585 Link Here
7579
  ac_save_LIBS="$LIBS"
7484
  ac_save_LIBS="$LIBS"
7580
LIBS="-lm  $LIBS"
7485
LIBS="-lm  $LIBS"
7581
cat > conftest.$ac_ext <<EOF
7486
cat > conftest.$ac_ext <<EOF
7582
#line 7583 "configure"
7487
#line 7488 "configure"
7583
#include "confdefs.h"
7488
#include "confdefs.h"
7584
/* Override any gcc2 internal prototype to avoid an error.  */
7489
/* Override any gcc2 internal prototype to avoid an error.  */
7585
/* We use char because int might match the return type of a gcc2
7490
/* We use char because int might match the return type of a gcc2
Lines 7590-7596 Link Here
7590
atan()
7495
atan()
7591
; return 0; }
7496
; return 0; }
7592
EOF
7497
EOF
7593
if { (eval echo configure:7594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7498
if { (eval echo configure:7499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7594
  rm -rf conftest*
7499
  rm -rf conftest*
7595
  eval "ac_cv_lib_$ac_lib_var=yes"
7500
  eval "ac_cv_lib_$ac_lib_var=yes"
7596
else
7501
else
Lines 7624-7630 Link Here
7624
	;;
7529
	;;
7625
*)
7530
*)
7626
	echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
7531
	echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
7627
echo "configure:7628: checking for dlopen in -ldl" >&5
7532
echo "configure:7533: checking for dlopen in -ldl" >&5
7628
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
7533
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
7629
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7534
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7630
  echo $ac_n "(cached) $ac_c" 1>&6
7535
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7632-7638 Link Here
7632
  ac_save_LIBS="$LIBS"
7537
  ac_save_LIBS="$LIBS"
7633
LIBS="-ldl  $LIBS"
7538
LIBS="-ldl  $LIBS"
7634
cat > conftest.$ac_ext <<EOF
7539
cat > conftest.$ac_ext <<EOF
7635
#line 7636 "configure"
7540
#line 7541 "configure"
7636
#include "confdefs.h"
7541
#include "confdefs.h"
7637
/* Override any gcc2 internal prototype to avoid an error.  */
7542
/* Override any gcc2 internal prototype to avoid an error.  */
7638
/* We use char because int might match the return type of a gcc2
7543
/* We use char because int might match the return type of a gcc2
Lines 7643-7649 Link Here
7643
dlopen()
7548
dlopen()
7644
; return 0; }
7549
; return 0; }
7645
EOF
7550
EOF
7646
if { (eval echo configure:7647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7551
if { (eval echo configure:7552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7647
  rm -rf conftest*
7552
  rm -rf conftest*
7648
  eval "ac_cv_lib_$ac_lib_var=yes"
7553
  eval "ac_cv_lib_$ac_lib_var=yes"
7649
else
7554
else
Lines 7660-7676 Link Here
7660
  echo "$ac_t""yes" 1>&6
7565
  echo "$ac_t""yes" 1>&6
7661
  ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
7566
  ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
7662
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
7567
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
7663
echo "configure:7664: checking for dlfcn.h" >&5
7568
echo "configure:7569: checking for dlfcn.h" >&5
7664
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7569
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
7665
  echo $ac_n "(cached) $ac_c" 1>&6
7570
  echo $ac_n "(cached) $ac_c" 1>&6
7666
else
7571
else
7667
  cat > conftest.$ac_ext <<EOF
7572
  cat > conftest.$ac_ext <<EOF
7668
#line 7669 "configure"
7573
#line 7574 "configure"
7669
#include "confdefs.h"
7574
#include "confdefs.h"
7670
#include <dlfcn.h>
7575
#include <dlfcn.h>
7671
EOF
7576
EOF
7672
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7577
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
7673
{ (eval echo configure:7674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7578
{ (eval echo configure:7579: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
7674
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7579
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
7675
if test -z "$ac_err"; then
7580
if test -z "$ac_err"; then
7676
  rm -rf conftest*
7581
  rm -rf conftest*
Lines 7706-7712 Link Here
7706
    case $target in
7611
    case $target in
7707
    *-aix*)
7612
    *-aix*)
7708
	echo $ac_n "checking for demangle in -lC_r""... $ac_c" 1>&6
7613
	echo $ac_n "checking for demangle in -lC_r""... $ac_c" 1>&6
7709
echo "configure:7710: checking for demangle in -lC_r" >&5
7614
echo "configure:7615: checking for demangle in -lC_r" >&5
7710
ac_lib_var=`echo C_r'_'demangle | sed 'y%./+-%__p_%'`
7615
ac_lib_var=`echo C_r'_'demangle | sed 'y%./+-%__p_%'`
7711
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7616
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7712
  echo $ac_n "(cached) $ac_c" 1>&6
7617
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7714-7720 Link Here
7714
  ac_save_LIBS="$LIBS"
7619
  ac_save_LIBS="$LIBS"
7715
LIBS="-lC_r  $LIBS"
7620
LIBS="-lC_r  $LIBS"
7716
cat > conftest.$ac_ext <<EOF
7621
cat > conftest.$ac_ext <<EOF
7717
#line 7718 "configure"
7622
#line 7623 "configure"
7718
#include "confdefs.h"
7623
#include "confdefs.h"
7719
/* Override any gcc2 internal prototype to avoid an error.  */
7624
/* Override any gcc2 internal prototype to avoid an error.  */
7720
/* We use char because int might match the return type of a gcc2
7625
/* We use char because int might match the return type of a gcc2
Lines 7725-7731 Link Here
7725
demangle()
7630
demangle()
7726
; return 0; }
7631
; return 0; }
7727
EOF
7632
EOF
7728
if { (eval echo configure:7729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7633
if { (eval echo configure:7634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7729
  rm -rf conftest*
7634
  rm -rf conftest*
7730
  eval "ac_cv_lib_$ac_lib_var=yes"
7635
  eval "ac_cv_lib_$ac_lib_var=yes"
7731
else
7636
else
Lines 7755-7761 Link Here
7755
	;;
7660
	;;
7756
     *)
7661
     *)
7757
	echo $ac_n "checking for demangle in -lC""... $ac_c" 1>&6
7662
	echo $ac_n "checking for demangle in -lC""... $ac_c" 1>&6
7758
echo "configure:7759: checking for demangle in -lC" >&5
7663
echo "configure:7664: checking for demangle in -lC" >&5
7759
ac_lib_var=`echo C'_'demangle | sed 'y%./+-%__p_%'`
7664
ac_lib_var=`echo C'_'demangle | sed 'y%./+-%__p_%'`
7760
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7665
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7761
  echo $ac_n "(cached) $ac_c" 1>&6
7666
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7763-7769 Link Here
7763
  ac_save_LIBS="$LIBS"
7668
  ac_save_LIBS="$LIBS"
7764
LIBS="-lC  $LIBS"
7669
LIBS="-lC  $LIBS"
7765
cat > conftest.$ac_ext <<EOF
7670
cat > conftest.$ac_ext <<EOF
7766
#line 7767 "configure"
7671
#line 7672 "configure"
7767
#include "confdefs.h"
7672
#include "confdefs.h"
7768
/* Override any gcc2 internal prototype to avoid an error.  */
7673
/* Override any gcc2 internal prototype to avoid an error.  */
7769
/* We use char because int might match the return type of a gcc2
7674
/* We use char because int might match the return type of a gcc2
Lines 7774-7780 Link Here
7774
demangle()
7679
demangle()
7775
; return 0; }
7680
; return 0; }
7776
EOF
7681
EOF
7777
if { (eval echo configure:7778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7682
if { (eval echo configure:7683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7778
  rm -rf conftest*
7683
  rm -rf conftest*
7779
  eval "ac_cv_lib_$ac_lib_var=yes"
7684
  eval "ac_cv_lib_$ac_lib_var=yes"
7780
else
7685
else
Lines 7805-7811 Link Here
7805
     esac
7710
     esac
7806
fi
7711
fi
7807
echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
7712
echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
7808
echo "configure:7809: checking for socket in -lsocket" >&5
7713
echo "configure:7714: checking for socket in -lsocket" >&5
7809
ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
7714
ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
7810
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7715
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7811
  echo $ac_n "(cached) $ac_c" 1>&6
7716
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7813-7819 Link Here
7813
  ac_save_LIBS="$LIBS"
7718
  ac_save_LIBS="$LIBS"
7814
LIBS="-lsocket  $LIBS"
7719
LIBS="-lsocket  $LIBS"
7815
cat > conftest.$ac_ext <<EOF
7720
cat > conftest.$ac_ext <<EOF
7816
#line 7817 "configure"
7721
#line 7722 "configure"
7817
#include "confdefs.h"
7722
#include "confdefs.h"
7818
/* Override any gcc2 internal prototype to avoid an error.  */
7723
/* Override any gcc2 internal prototype to avoid an error.  */
7819
/* We use char because int might match the return type of a gcc2
7724
/* We use char because int might match the return type of a gcc2
Lines 7824-7830 Link Here
7824
socket()
7729
socket()
7825
; return 0; }
7730
; return 0; }
7826
EOF
7731
EOF
7827
if { (eval echo configure:7828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7732
if { (eval echo configure:7733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7828
  rm -rf conftest*
7733
  rm -rf conftest*
7829
  eval "ac_cv_lib_$ac_lib_var=yes"
7734
  eval "ac_cv_lib_$ac_lib_var=yes"
7830
else
7735
else
Lines 7869-7875 Link Here
7869
	_SAVE_LDFLAGS="$LDFLAGS"
7774
	_SAVE_LDFLAGS="$LDFLAGS"
7870
	LDFLAGS="$XLDFLAGS $LDFLAGS"
7775
	LDFLAGS="$XLDFLAGS $LDFLAGS"
7871
	echo $ac_n "checking for XDrawLines in -lX11""... $ac_c" 1>&6
7776
	echo $ac_n "checking for XDrawLines in -lX11""... $ac_c" 1>&6
7872
echo "configure:7873: checking for XDrawLines in -lX11" >&5
7777
echo "configure:7778: checking for XDrawLines in -lX11" >&5
7873
ac_lib_var=`echo X11'_'XDrawLines | sed 'y%./+-%__p_%'`
7778
ac_lib_var=`echo X11'_'XDrawLines | sed 'y%./+-%__p_%'`
7874
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7779
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7875
  echo $ac_n "(cached) $ac_c" 1>&6
7780
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7877-7883 Link Here
7877
  ac_save_LIBS="$LIBS"
7782
  ac_save_LIBS="$LIBS"
7878
LIBS="-lX11 $XLIBS $LIBS"
7783
LIBS="-lX11 $XLIBS $LIBS"
7879
cat > conftest.$ac_ext <<EOF
7784
cat > conftest.$ac_ext <<EOF
7880
#line 7881 "configure"
7785
#line 7786 "configure"
7881
#include "confdefs.h"
7786
#include "confdefs.h"
7882
/* Override any gcc2 internal prototype to avoid an error.  */
7787
/* Override any gcc2 internal prototype to avoid an error.  */
7883
/* We use char because int might match the return type of a gcc2
7788
/* We use char because int might match the return type of a gcc2
Lines 7888-7894 Link Here
7888
XDrawLines()
7793
XDrawLines()
7889
; return 0; }
7794
; return 0; }
7890
EOF
7795
EOF
7891
if { (eval echo configure:7892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7796
if { (eval echo configure:7797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7892
  rm -rf conftest*
7797
  rm -rf conftest*
7893
  eval "ac_cv_lib_$ac_lib_var=yes"
7798
  eval "ac_cv_lib_$ac_lib_var=yes"
7894
else
7799
else
Lines 7910-7916 Link Here
7910
fi
7815
fi
7911
7816
7912
	echo $ac_n "checking for XextAddDisplay in -lXext""... $ac_c" 1>&6
7817
	echo $ac_n "checking for XextAddDisplay in -lXext""... $ac_c" 1>&6
7913
echo "configure:7914: checking for XextAddDisplay in -lXext" >&5
7818
echo "configure:7819: checking for XextAddDisplay in -lXext" >&5
7914
ac_lib_var=`echo Xext'_'XextAddDisplay | sed 'y%./+-%__p_%'`
7819
ac_lib_var=`echo Xext'_'XextAddDisplay | sed 'y%./+-%__p_%'`
7915
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7820
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7916
  echo $ac_n "(cached) $ac_c" 1>&6
7821
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7918-7924 Link Here
7918
  ac_save_LIBS="$LIBS"
7823
  ac_save_LIBS="$LIBS"
7919
LIBS="-lXext $XLIBS $LIBS"
7824
LIBS="-lXext $XLIBS $LIBS"
7920
cat > conftest.$ac_ext <<EOF
7825
cat > conftest.$ac_ext <<EOF
7921
#line 7922 "configure"
7826
#line 7827 "configure"
7922
#include "confdefs.h"
7827
#include "confdefs.h"
7923
/* Override any gcc2 internal prototype to avoid an error.  */
7828
/* Override any gcc2 internal prototype to avoid an error.  */
7924
/* We use char because int might match the return type of a gcc2
7829
/* We use char because int might match the return type of a gcc2
Lines 7929-7935 Link Here
7929
XextAddDisplay()
7834
XextAddDisplay()
7930
; return 0; }
7835
; return 0; }
7931
EOF
7836
EOF
7932
if { (eval echo configure:7933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7837
if { (eval echo configure:7838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7933
  rm -rf conftest*
7838
  rm -rf conftest*
7934
  eval "ac_cv_lib_$ac_lib_var=yes"
7839
  eval "ac_cv_lib_$ac_lib_var=yes"
7935
else
7840
else
Lines 7953-7959 Link Here
7953
   
7858
   
7954
     
7859
     
7955
	echo $ac_n "checking for XtFree in -lXt""... $ac_c" 1>&6
7860
	echo $ac_n "checking for XtFree in -lXt""... $ac_c" 1>&6
7956
echo "configure:7957: checking for XtFree in -lXt" >&5
7861
echo "configure:7862: checking for XtFree in -lXt" >&5
7957
ac_lib_var=`echo Xt'_'XtFree | sed 'y%./+-%__p_%'`
7862
ac_lib_var=`echo Xt'_'XtFree | sed 'y%./+-%__p_%'`
7958
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7863
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7959
  echo $ac_n "(cached) $ac_c" 1>&6
7864
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 7961-7967 Link Here
7961
  ac_save_LIBS="$LIBS"
7866
  ac_save_LIBS="$LIBS"
7962
LIBS="-lXt  $LIBS"
7867
LIBS="-lXt  $LIBS"
7963
cat > conftest.$ac_ext <<EOF
7868
cat > conftest.$ac_ext <<EOF
7964
#line 7965 "configure"
7869
#line 7870 "configure"
7965
#include "confdefs.h"
7870
#include "confdefs.h"
7966
/* Override any gcc2 internal prototype to avoid an error.  */
7871
/* Override any gcc2 internal prototype to avoid an error.  */
7967
/* We use char because int might match the return type of a gcc2
7872
/* We use char because int might match the return type of a gcc2
Lines 7972-7978 Link Here
7972
XtFree()
7877
XtFree()
7973
; return 0; }
7878
; return 0; }
7974
EOF
7879
EOF
7975
if { (eval echo configure:7976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7880
if { (eval echo configure:7881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7976
  rm -rf conftest*
7881
  rm -rf conftest*
7977
  eval "ac_cv_lib_$ac_lib_var=yes"
7882
  eval "ac_cv_lib_$ac_lib_var=yes"
7978
else
7883
else
Lines 7993-7999 Link Here
7993
7898
7994
        unset ac_cv_lib_Xt_XtFree
7899
        unset ac_cv_lib_Xt_XtFree
7995
	    echo $ac_n "checking for IceFlush in -lICE""... $ac_c" 1>&6
7900
	    echo $ac_n "checking for IceFlush in -lICE""... $ac_c" 1>&6
7996
echo "configure:7997: checking for IceFlush in -lICE" >&5
7901
echo "configure:7902: checking for IceFlush in -lICE" >&5
7997
ac_lib_var=`echo ICE'_'IceFlush | sed 'y%./+-%__p_%'`
7902
ac_lib_var=`echo ICE'_'IceFlush | sed 'y%./+-%__p_%'`
7998
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7903
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7999
  echo $ac_n "(cached) $ac_c" 1>&6
7904
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 8001-8007 Link Here
8001
  ac_save_LIBS="$LIBS"
7906
  ac_save_LIBS="$LIBS"
8002
LIBS="-lICE $XT_LIBS $XLIBS $LIBS"
7907
LIBS="-lICE $XT_LIBS $XLIBS $LIBS"
8003
cat > conftest.$ac_ext <<EOF
7908
cat > conftest.$ac_ext <<EOF
8004
#line 8005 "configure"
7909
#line 7910 "configure"
8005
#include "confdefs.h"
7910
#include "confdefs.h"
8006
/* Override any gcc2 internal prototype to avoid an error.  */
7911
/* Override any gcc2 internal prototype to avoid an error.  */
8007
/* We use char because int might match the return type of a gcc2
7912
/* We use char because int might match the return type of a gcc2
Lines 8012-8018 Link Here
8012
IceFlush()
7917
IceFlush()
8013
; return 0; }
7918
; return 0; }
8014
EOF
7919
EOF
8015
if { (eval echo configure:8016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7920
if { (eval echo configure:7921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8016
  rm -rf conftest*
7921
  rm -rf conftest*
8017
  eval "ac_cv_lib_$ac_lib_var=yes"
7922
  eval "ac_cv_lib_$ac_lib_var=yes"
8018
else
7923
else
Lines 8033-8039 Link Here
8033
fi
7938
fi
8034
7939
8035
	    echo $ac_n "checking for SmcCloseConnection in -lSM""... $ac_c" 1>&6
7940
	    echo $ac_n "checking for SmcCloseConnection in -lSM""... $ac_c" 1>&6
8036
echo "configure:8037: checking for SmcCloseConnection in -lSM" >&5
7941
echo "configure:7942: checking for SmcCloseConnection in -lSM" >&5
8037
ac_lib_var=`echo SM'_'SmcCloseConnection | sed 'y%./+-%__p_%'`
7942
ac_lib_var=`echo SM'_'SmcCloseConnection | sed 'y%./+-%__p_%'`
8038
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7943
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
8039
  echo $ac_n "(cached) $ac_c" 1>&6
7944
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 8041-8047 Link Here
8041
  ac_save_LIBS="$LIBS"
7946
  ac_save_LIBS="$LIBS"
8042
LIBS="-lSM $XT_LIBS $XLIBS $LIBS"
7947
LIBS="-lSM $XT_LIBS $XLIBS $LIBS"
8043
cat > conftest.$ac_ext <<EOF
7948
cat > conftest.$ac_ext <<EOF
8044
#line 8045 "configure"
7949
#line 7950 "configure"
8045
#include "confdefs.h"
7950
#include "confdefs.h"
8046
/* Override any gcc2 internal prototype to avoid an error.  */
7951
/* Override any gcc2 internal prototype to avoid an error.  */
8047
/* We use char because int might match the return type of a gcc2
7952
/* We use char because int might match the return type of a gcc2
Lines 8052-8058 Link Here
8052
SmcCloseConnection()
7957
SmcCloseConnection()
8053
; return 0; }
7958
; return 0; }
8054
EOF
7959
EOF
8055
if { (eval echo configure:8056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
7960
if { (eval echo configure:7961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8056
  rm -rf conftest*
7961
  rm -rf conftest*
8057
  eval "ac_cv_lib_$ac_lib_var=yes"
7962
  eval "ac_cv_lib_$ac_lib_var=yes"
8058
else
7963
else
Lines 8073-8079 Link Here
8073
fi
7978
fi
8074
 
7979
 
8075
        echo $ac_n "checking for XtFree in -lXt""... $ac_c" 1>&6
7980
        echo $ac_n "checking for XtFree in -lXt""... $ac_c" 1>&6
8076
echo "configure:8077: checking for XtFree in -lXt" >&5
7981
echo "configure:7982: checking for XtFree in -lXt" >&5
8077
ac_lib_var=`echo Xt'_'XtFree | sed 'y%./+-%__p_%'`
7982
ac_lib_var=`echo Xt'_'XtFree | sed 'y%./+-%__p_%'`
8078
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
7983
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
8079
  echo $ac_n "(cached) $ac_c" 1>&6
7984
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 8081-8087 Link Here
8081
  ac_save_LIBS="$LIBS"
7986
  ac_save_LIBS="$LIBS"
8082
LIBS="-lXt $X_PRE_LIBS $XT_LIBS $XLIBS $LIBS"
7987
LIBS="-lXt $X_PRE_LIBS $XT_LIBS $XLIBS $LIBS"
8083
cat > conftest.$ac_ext <<EOF
7988
cat > conftest.$ac_ext <<EOF
8084
#line 8085 "configure"
7989
#line 7990 "configure"
8085
#include "confdefs.h"
7990
#include "confdefs.h"
8086
/* Override any gcc2 internal prototype to avoid an error.  */
7991
/* Override any gcc2 internal prototype to avoid an error.  */
8087
/* We use char because int might match the return type of a gcc2
7992
/* We use char because int might match the return type of a gcc2
Lines 8092-8098 Link Here
8092
XtFree()
7997
XtFree()
8093
; return 0; }
7998
; return 0; }
8094
EOF
7999
EOF
8095
if { (eval echo configure:8096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8000
if { (eval echo configure:8001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8096
  rm -rf conftest*
8001
  rm -rf conftest*
8097
  eval "ac_cv_lib_$ac_lib_var=yes"
8002
  eval "ac_cv_lib_$ac_lib_var=yes"
8098
else
8003
else
Lines 8126-8132 Link Here
8126
    esac
8031
    esac
8127
8032
8128
                echo $ac_n "checking for XineramaIsActive in -lXinerama""... $ac_c" 1>&6
8033
                echo $ac_n "checking for XineramaIsActive in -lXinerama""... $ac_c" 1>&6
8129
echo "configure:8130: checking for XineramaIsActive in -lXinerama" >&5
8034
echo "configure:8035: checking for XineramaIsActive in -lXinerama" >&5
8130
ac_lib_var=`echo Xinerama'_'XineramaIsActive | sed 'y%./+-%__p_%'`
8035
ac_lib_var=`echo Xinerama'_'XineramaIsActive | sed 'y%./+-%__p_%'`
8131
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
8036
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
8132
  echo $ac_n "(cached) $ac_c" 1>&6
8037
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 8134-8140 Link Here
8134
  ac_save_LIBS="$LIBS"
8039
  ac_save_LIBS="$LIBS"
8135
LIBS="-lXinerama $XLIBS $XEXT_LIBS $LIBS"
8040
LIBS="-lXinerama $XLIBS $XEXT_LIBS $LIBS"
8136
cat > conftest.$ac_ext <<EOF
8041
cat > conftest.$ac_ext <<EOF
8137
#line 8138 "configure"
8042
#line 8043 "configure"
8138
#include "confdefs.h"
8043
#include "confdefs.h"
8139
/* Override any gcc2 internal prototype to avoid an error.  */
8044
/* Override any gcc2 internal prototype to avoid an error.  */
8140
/* We use char because int might match the return type of a gcc2
8045
/* We use char because int might match the return type of a gcc2
Lines 8145-8151 Link Here
8145
XineramaIsActive()
8050
XineramaIsActive()
8146
; return 0; }
8051
; return 0; }
8147
EOF
8052
EOF
8148
if { (eval echo configure:8149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8053
if { (eval echo configure:8054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8149
  rm -rf conftest*
8054
  rm -rf conftest*
8150
  eval "ac_cv_lib_$ac_lib_var=yes"
8055
  eval "ac_cv_lib_$ac_lib_var=yes"
8151
else
8056
else
Lines 8167-8183 Link Here
8167
8072
8168
    ac_safe=`echo "X11/extensions/Xinerama.h" | sed 'y%./+-%__p_%'`
8073
    ac_safe=`echo "X11/extensions/Xinerama.h" | sed 'y%./+-%__p_%'`
8169
echo $ac_n "checking for X11/extensions/Xinerama.h""... $ac_c" 1>&6
8074
echo $ac_n "checking for X11/extensions/Xinerama.h""... $ac_c" 1>&6
8170
echo "configure:8171: checking for X11/extensions/Xinerama.h" >&5
8075
echo "configure:8076: checking for X11/extensions/Xinerama.h" >&5
8171
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
8076
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
8172
  echo $ac_n "(cached) $ac_c" 1>&6
8077
  echo $ac_n "(cached) $ac_c" 1>&6
8173
else
8078
else
8174
  cat > conftest.$ac_ext <<EOF
8079
  cat > conftest.$ac_ext <<EOF
8175
#line 8176 "configure"
8080
#line 8081 "configure"
8176
#include "confdefs.h"
8081
#include "confdefs.h"
8177
#include <X11/extensions/Xinerama.h>
8082
#include <X11/extensions/Xinerama.h>
8178
EOF
8083
EOF
8179
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
8084
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
8180
{ (eval echo configure:8181: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
8085
{ (eval echo configure:8086: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
8181
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
8086
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
8182
if test -z "$ac_err"; then
8087
if test -z "$ac_err"; then
8183
  rm -rf conftest*
8088
  rm -rf conftest*
Lines 8200-8206 Link Here
8200
8105
8201
8106
8202
                echo $ac_n "checking for XShmCreateImage in -lXext""... $ac_c" 1>&6
8107
                echo $ac_n "checking for XShmCreateImage in -lXext""... $ac_c" 1>&6
8203
echo "configure:8204: checking for XShmCreateImage in -lXext" >&5
8108
echo "configure:8109: checking for XShmCreateImage in -lXext" >&5
8204
ac_lib_var=`echo Xext'_'XShmCreateImage | sed 'y%./+-%__p_%'`
8109
ac_lib_var=`echo Xext'_'XShmCreateImage | sed 'y%./+-%__p_%'`
8205
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
8110
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
8206
  echo $ac_n "(cached) $ac_c" 1>&6
8111
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 8208-8214 Link Here
8208
  ac_save_LIBS="$LIBS"
8113
  ac_save_LIBS="$LIBS"
8209
LIBS="-lXext $XLIBS $XEXT_LIBS $LIBS"
8114
LIBS="-lXext $XLIBS $XEXT_LIBS $LIBS"
8210
cat > conftest.$ac_ext <<EOF
8115
cat > conftest.$ac_ext <<EOF
8211
#line 8212 "configure"
8116
#line 8117 "configure"
8212
#include "confdefs.h"
8117
#include "confdefs.h"
8213
/* Override any gcc2 internal prototype to avoid an error.  */
8118
/* Override any gcc2 internal prototype to avoid an error.  */
8214
/* We use char because int might match the return type of a gcc2
8119
/* We use char because int might match the return type of a gcc2
Lines 8219-8225 Link Here
8219
XShmCreateImage()
8124
XShmCreateImage()
8220
; return 0; }
8125
; return 0; }
8221
EOF
8126
EOF
8222
if { (eval echo configure:8223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8127
if { (eval echo configure:8128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8223
  rm -rf conftest*
8128
  rm -rf conftest*
8224
  eval "ac_cv_lib_$ac_lib_var=yes"
8129
  eval "ac_cv_lib_$ac_lib_var=yes"
8225
else
8130
else
Lines 8241-8257 Link Here
8241
8146
8242
    ac_safe=`echo "X11/extensions/XShm.h" | sed 'y%./+-%__p_%'`
8147
    ac_safe=`echo "X11/extensions/XShm.h" | sed 'y%./+-%__p_%'`
8243
echo $ac_n "checking for X11/extensions/XShm.h""... $ac_c" 1>&6
8148
echo $ac_n "checking for X11/extensions/XShm.h""... $ac_c" 1>&6
8244
echo "configure:8245: checking for X11/extensions/XShm.h" >&5
8149
echo "configure:8150: checking for X11/extensions/XShm.h" >&5
8245
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
8150
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
8246
  echo $ac_n "(cached) $ac_c" 1>&6
8151
  echo $ac_n "(cached) $ac_c" 1>&6
8247
else
8152
else
8248
  cat > conftest.$ac_ext <<EOF
8153
  cat > conftest.$ac_ext <<EOF
8249
#line 8250 "configure"
8154
#line 8155 "configure"
8250
#include "confdefs.h"
8155
#include "confdefs.h"
8251
#include <X11/extensions/XShm.h>
8156
#include <X11/extensions/XShm.h>
8252
EOF
8157
EOF
8253
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
8158
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
8254
{ (eval echo configure:8255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
8159
{ (eval echo configure:8160: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
8255
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
8160
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
8256
if test -z "$ac_err"; then
8161
if test -z "$ac_err"; then
8257
  rm -rf conftest*
8162
  rm -rf conftest*
Lines 8281-8287 Link Here
8281
    fi
8186
    fi
8282
8187
8283
                echo $ac_n "checking for XieFloGeometry in -lXIE""... $ac_c" 1>&6
8188
                echo $ac_n "checking for XieFloGeometry in -lXIE""... $ac_c" 1>&6
8284
echo "configure:8285: checking for XieFloGeometry in -lXIE" >&5
8189
echo "configure:8190: checking for XieFloGeometry in -lXIE" >&5
8285
ac_lib_var=`echo XIE'_'XieFloGeometry | sed 'y%./+-%__p_%'`
8190
ac_lib_var=`echo XIE'_'XieFloGeometry | sed 'y%./+-%__p_%'`
8286
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
8191
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
8287
  echo $ac_n "(cached) $ac_c" 1>&6
8192
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 8289-8295 Link Here
8289
  ac_save_LIBS="$LIBS"
8194
  ac_save_LIBS="$LIBS"
8290
LIBS="-lXIE $XLIBS $XEXT_LIBS $LIBS"
8195
LIBS="-lXIE $XLIBS $XEXT_LIBS $LIBS"
8291
cat > conftest.$ac_ext <<EOF
8196
cat > conftest.$ac_ext <<EOF
8292
#line 8293 "configure"
8197
#line 8198 "configure"
8293
#include "confdefs.h"
8198
#include "confdefs.h"
8294
/* Override any gcc2 internal prototype to avoid an error.  */
8199
/* Override any gcc2 internal prototype to avoid an error.  */
8295
/* We use char because int might match the return type of a gcc2
8200
/* We use char because int might match the return type of a gcc2
Lines 8300-8306 Link Here
8300
XieFloGeometry()
8205
XieFloGeometry()
8301
; return 0; }
8206
; return 0; }
8302
EOF
8207
EOF
8303
if { (eval echo configure:8304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8208
if { (eval echo configure:8209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8304
  rm -rf conftest*
8209
  rm -rf conftest*
8305
  eval "ac_cv_lib_$ac_lib_var=yes"
8210
  eval "ac_cv_lib_$ac_lib_var=yes"
8306
else
8211
else
Lines 8322-8338 Link Here
8322
8227
8323
    ac_safe=`echo "X11/extensions/XIElib.h" | sed 'y%./+-%__p_%'`
8228
    ac_safe=`echo "X11/extensions/XIElib.h" | sed 'y%./+-%__p_%'`
8324
echo $ac_n "checking for X11/extensions/XIElib.h""... $ac_c" 1>&6
8229
echo $ac_n "checking for X11/extensions/XIElib.h""... $ac_c" 1>&6
8325
echo "configure:8326: checking for X11/extensions/XIElib.h" >&5
8230
echo "configure:8231: checking for X11/extensions/XIElib.h" >&5
8326
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
8231
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
8327
  echo $ac_n "(cached) $ac_c" 1>&6
8232
  echo $ac_n "(cached) $ac_c" 1>&6
8328
else
8233
else
8329
  cat > conftest.$ac_ext <<EOF
8234
  cat > conftest.$ac_ext <<EOF
8330
#line 8331 "configure"
8235
#line 8236 "configure"
8331
#include "confdefs.h"
8236
#include "confdefs.h"
8332
#include <X11/extensions/XIElib.h>
8237
#include <X11/extensions/XIElib.h>
8333
EOF
8238
EOF
8334
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
8239
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
8335
{ (eval echo configure:8336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
8240
{ (eval echo configure:8241: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
8336
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
8241
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
8337
if test -z "$ac_err"; then
8242
if test -z "$ac_err"; then
8338
  rm -rf conftest*
8243
  rm -rf conftest*
Lines 8406-8412 Link Here
8406
# Extract the first word of "freetype-config", so it can be a program name with args.
8311
# Extract the first word of "freetype-config", so it can be a program name with args.
8407
set dummy freetype-config; ac_word=$2
8312
set dummy freetype-config; ac_word=$2
8408
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
8313
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
8409
echo "configure:8410: checking for $ac_word" >&5
8314
echo "configure:8315: checking for $ac_word" >&5
8410
if eval "test \"`echo '$''{'ac_cv_path_FT2_CONFIG'+set}'`\" = set"; then
8315
if eval "test \"`echo '$''{'ac_cv_path_FT2_CONFIG'+set}'`\" = set"; then
8411
  echo $ac_n "(cached) $ac_c" 1>&6
8316
  echo $ac_n "(cached) $ac_c" 1>&6
8412
else
8317
else
Lines 8442-8448 Link Here
8442
8347
8443
min_ft_version=6.1.0
8348
min_ft_version=6.1.0
8444
echo $ac_n "checking for FreeType - version >= $min_ft_version""... $ac_c" 1>&6
8349
echo $ac_n "checking for FreeType - version >= $min_ft_version""... $ac_c" 1>&6
8445
echo "configure:8446: checking for FreeType - version >= $min_ft_version" >&5
8350
echo "configure:8351: checking for FreeType - version >= $min_ft_version" >&5
8446
no_ft=""
8351
no_ft=""
8447
if test "$FT2_CONFIG" = "no" ; then
8352
if test "$FT2_CONFIG" = "no" ; then
8448
  no_ft=yes
8353
  no_ft=yes
Lines 8490-8496 Link Here
8490
  echo $ac_n "cross compiling; assumed OK... $ac_c"
8395
  echo $ac_n "cross compiling; assumed OK... $ac_c"
8491
else
8396
else
8492
  cat > conftest.$ac_ext <<EOF
8397
  cat > conftest.$ac_ext <<EOF
8493
#line 8494 "configure"
8398
#line 8399 "configure"
8494
#include "confdefs.h"
8399
#include "confdefs.h"
8495
8400
8496
#include <ft2build.h>
8401
#include <ft2build.h>
Lines 8516-8522 Link Here
8516
}
8421
}
8517
8422
8518
EOF
8423
EOF
8519
if { (eval echo configure:8520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
8424
if { (eval echo configure:8425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
8520
then
8425
then
8521
  :
8426
  :
8522
else
8427
else
Lines 8568-8574 Link Here
8568
8473
8569
8474
8570
echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6
8475
echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6
8571
echo "configure:8572: checking for pthread_create in -lpthreads" >&5
8476
echo "configure:8477: checking for pthread_create in -lpthreads" >&5
8572
echo "
8477
echo "
8573
    #include <pthread.h> 
8478
    #include <pthread.h> 
8574
    void *foo(void *v) { int a = 1;  } 
8479
    void *foo(void *v) { int a = 1;  } 
Lines 8590-8596 Link Here
8590
        echo "$ac_t""no" 1>&6
8495
        echo "$ac_t""no" 1>&6
8591
        
8496
        
8592
echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
8497
echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
8593
echo "configure:8594: checking for pthread_create in -lpthread" >&5
8498
echo "configure:8499: checking for pthread_create in -lpthread" >&5
8594
echo "
8499
echo "
8595
    #include <pthread.h> 
8500
    #include <pthread.h> 
8596
    void *foo(void *v) { int a = 1;  } 
8501
    void *foo(void *v) { int a = 1;  } 
Lines 8612-8618 Link Here
8612
        echo "$ac_t""no" 1>&6
8517
        echo "$ac_t""no" 1>&6
8613
        
8518
        
8614
echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
8519
echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
8615
echo "configure:8616: checking for pthread_create in -lc_r" >&5
8520
echo "configure:8521: checking for pthread_create in -lc_r" >&5
8616
echo "
8521
echo "
8617
    #include <pthread.h> 
8522
    #include <pthread.h> 
8618
    void *foo(void *v) { int a = 1;  } 
8523
    void *foo(void *v) { int a = 1;  } 
Lines 8634-8640 Link Here
8634
        echo "$ac_t""no" 1>&6
8539
        echo "$ac_t""no" 1>&6
8635
        
8540
        
8636
echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
8541
echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
8637
echo "configure:8638: checking for pthread_create in -lc" >&5
8542
echo "configure:8543: checking for pthread_create in -lc" >&5
8638
echo "
8543
echo "
8639
    #include <pthread.h> 
8544
    #include <pthread.h> 
8640
    void *foo(void *v) { int a = 1;  } 
8545
    void *foo(void *v) { int a = 1;  } 
Lines 8690-8696 Link Here
8690
				rm -f conftest*
8595
				rm -f conftest*
8691
	ac_cv_have_dash_pthread=no
8596
	ac_cv_have_dash_pthread=no
8692
	echo $ac_n "checking whether ${CC-cc} accepts -pthread""... $ac_c" 1>&6
8597
	echo $ac_n "checking whether ${CC-cc} accepts -pthread""... $ac_c" 1>&6
8693
echo "configure:8694: checking whether ${CC-cc} accepts -pthread" >&5
8598
echo "configure:8599: checking whether ${CC-cc} accepts -pthread" >&5
8694
	echo 'int main() { return 0; }' | cat > conftest.c
8599
	echo 'int main() { return 0; }' | cat > conftest.c
8695
	${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
8600
	${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
8696
	if test $? -eq 0; then
8601
	if test $? -eq 0; then
Lines 8713-8719 Link Here
8713
			    ac_cv_have_dash_pthreads=no
8618
			    ac_cv_have_dash_pthreads=no
8714
    if test "$ac_cv_have_dash_pthread" = "no"; then
8619
    if test "$ac_cv_have_dash_pthread" = "no"; then
8715
	    echo $ac_n "checking whether ${CC-cc} accepts -pthreads""... $ac_c" 1>&6
8620
	    echo $ac_n "checking whether ${CC-cc} accepts -pthreads""... $ac_c" 1>&6
8716
echo "configure:8717: checking whether ${CC-cc} accepts -pthreads" >&5
8621
echo "configure:8622: checking whether ${CC-cc} accepts -pthreads" >&5
8717
    	echo 'int main() { return 0; }' | cat > conftest.c
8622
    	echo 'int main() { return 0; }' | cat > conftest.c
8718
	    ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
8623
	    ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
8719
    	if test $? -eq 0; then
8624
    	if test $? -eq 0; then
Lines 8844-8850 Link Here
8844
8749
8845
8750
8846
echo $ac_n "checking whether mmap() sees write()s""... $ac_c" 1>&6
8751
echo $ac_n "checking whether mmap() sees write()s""... $ac_c" 1>&6
8847
echo "configure:8848: checking whether mmap() sees write()s" >&5
8752
echo "configure:8753: checking whether mmap() sees write()s" >&5
8848
8753
8849
8754
8850
mmap_test_prog='
8755
mmap_test_prog='
Lines 8883-8893 Link Here
8883
  result="yes"
8788
  result="yes"
8884
else
8789
else
8885
  cat > conftest.$ac_ext <<EOF
8790
  cat > conftest.$ac_ext <<EOF
8886
#line 8887 "configure"
8791
#line 8792 "configure"
8887
#include "confdefs.h"
8792
#include "confdefs.h"
8888
$mmap_test_prog 
8793
$mmap_test_prog 
8889
EOF
8794
EOF
8890
if { (eval echo configure:8891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
8795
if { (eval echo configure:8796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
8891
then
8796
then
8892
  result="yes"
8797
  result="yes"
8893
else
8798
else
Lines 8912-8924 Link Here
8912
8817
8913
if test $ac_cv_prog_gcc = yes; then
8818
if test $ac_cv_prog_gcc = yes; then
8914
    echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
8819
    echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
8915
echo "configure:8916: checking whether ${CC-cc} needs -traditional" >&5
8820
echo "configure:8821: checking whether ${CC-cc} needs -traditional" >&5
8916
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
8821
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
8917
  echo $ac_n "(cached) $ac_c" 1>&6
8822
  echo $ac_n "(cached) $ac_c" 1>&6
8918
else
8823
else
8919
    ac_pattern="Autoconf.*'x'"
8824
    ac_pattern="Autoconf.*'x'"
8920
  cat > conftest.$ac_ext <<EOF
8825
  cat > conftest.$ac_ext <<EOF
8921
#line 8922 "configure"
8826
#line 8827 "configure"
8922
#include "confdefs.h"
8827
#include "confdefs.h"
8923
#include <sgtty.h>
8828
#include <sgtty.h>
8924
Autoconf TIOCGETP
8829
Autoconf TIOCGETP
Lines 8936-8942 Link Here
8936
8841
8937
  if test $ac_cv_prog_gcc_traditional = no; then
8842
  if test $ac_cv_prog_gcc_traditional = no; then
8938
    cat > conftest.$ac_ext <<EOF
8843
    cat > conftest.$ac_ext <<EOF
8939
#line 8940 "configure"
8844
#line 8845 "configure"
8940
#include "confdefs.h"
8845
#include "confdefs.h"
8941
#include <termio.h>
8846
#include <termio.h>
8942
Autoconf TCGETA
8847
Autoconf TCGETA
Lines 8958-8964 Link Here
8958
fi
8863
fi
8959
8864
8960
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
8865
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
8961
echo "configure:8962: checking for 8-bit clean memcmp" >&5
8866
echo "configure:8867: checking for 8-bit clean memcmp" >&5
8962
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
8867
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
8963
  echo $ac_n "(cached) $ac_c" 1>&6
8868
  echo $ac_n "(cached) $ac_c" 1>&6
8964
else
8869
else
Lines 8966-8972 Link Here
8966
  ac_cv_func_memcmp_clean=no
8871
  ac_cv_func_memcmp_clean=no
8967
else
8872
else
8968
  cat > conftest.$ac_ext <<EOF
8873
  cat > conftest.$ac_ext <<EOF
8969
#line 8970 "configure"
8874
#line 8875 "configure"
8970
#include "confdefs.h"
8875
#include "confdefs.h"
8971
8876
8972
main()
8877
main()
Lines 8976-8982 Link Here
8976
}
8881
}
8977
8882
8978
EOF
8883
EOF
8979
if { (eval echo configure:8980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
8884
if { (eval echo configure:8885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
8980
then
8885
then
8981
  ac_cv_func_memcmp_clean=yes
8886
  ac_cv_func_memcmp_clean=yes
8982
else
8887
else
Lines 8996-9007 Link Here
8996
for ac_func in random strerror lchown fchmod snprintf statvfs memmove rint
8901
for ac_func in random strerror lchown fchmod snprintf statvfs memmove rint
8997
do
8902
do
8998
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
8903
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
8999
echo "configure:9000: checking for $ac_func" >&5
8904
echo "configure:8905: checking for $ac_func" >&5
9000
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
8905
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
9001
  echo $ac_n "(cached) $ac_c" 1>&6
8906
  echo $ac_n "(cached) $ac_c" 1>&6
9002
else
8907
else
9003
  cat > conftest.$ac_ext <<EOF
8908
  cat > conftest.$ac_ext <<EOF
9004
#line 9005 "configure"
8909
#line 8910 "configure"
9005
#include "confdefs.h"
8910
#include "confdefs.h"
9006
/* System header to define __stub macros and hopefully few prototypes,
8911
/* System header to define __stub macros and hopefully few prototypes,
9007
    which can conflict with char $ac_func(); below.  */
8912
    which can conflict with char $ac_func(); below.  */
Lines 9024-9030 Link Here
9024
8929
9025
; return 0; }
8930
; return 0; }
9026
EOF
8931
EOF
9027
if { (eval echo configure:9028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8932
if { (eval echo configure:8933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9028
  rm -rf conftest*
8933
  rm -rf conftest*
9029
  eval "ac_cv_func_$ac_func=yes"
8934
  eval "ac_cv_func_$ac_func=yes"
9030
else
8935
else
Lines 9051-9062 Link Here
9051
for ac_func in flockfile getpagesize
8956
for ac_func in flockfile getpagesize
9052
do
8957
do
9053
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
8958
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
9054
echo "configure:9055: checking for $ac_func" >&5
8959
echo "configure:8960: checking for $ac_func" >&5
9055
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
8960
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
9056
  echo $ac_n "(cached) $ac_c" 1>&6
8961
  echo $ac_n "(cached) $ac_c" 1>&6
9057
else
8962
else
9058
  cat > conftest.$ac_ext <<EOF
8963
  cat > conftest.$ac_ext <<EOF
9059
#line 9060 "configure"
8964
#line 8965 "configure"
9060
#include "confdefs.h"
8965
#include "confdefs.h"
9061
/* System header to define __stub macros and hopefully few prototypes,
8966
/* System header to define __stub macros and hopefully few prototypes,
9062
    which can conflict with char $ac_func(); below.  */
8967
    which can conflict with char $ac_func(); below.  */
Lines 9079-9085 Link Here
9079
8984
9080
; return 0; }
8985
; return 0; }
9081
EOF
8986
EOF
9082
if { (eval echo configure:9083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
8987
if { (eval echo configure:8988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9083
  rm -rf conftest*
8988
  rm -rf conftest*
9084
  eval "ac_cv_func_$ac_func=yes"
8989
  eval "ac_cv_func_$ac_func=yes"
9085
else
8990
else
Lines 9108-9119 Link Here
9108
  for ac_func in localtime_r strtok_r
9013
  for ac_func in localtime_r strtok_r
9109
do
9014
do
9110
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
9015
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
9111
echo "configure:9112: checking for $ac_func" >&5
9016
echo "configure:9017: checking for $ac_func" >&5
9112
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
9017
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
9113
  echo $ac_n "(cached) $ac_c" 1>&6
9018
  echo $ac_n "(cached) $ac_c" 1>&6
9114
else
9019
else
9115
  cat > conftest.$ac_ext <<EOF
9020
  cat > conftest.$ac_ext <<EOF
9116
#line 9117 "configure"
9021
#line 9022 "configure"
9117
#include "confdefs.h"
9022
#include "confdefs.h"
9118
/* System header to define __stub macros and hopefully few prototypes,
9023
/* System header to define __stub macros and hopefully few prototypes,
9119
    which can conflict with char $ac_func(); below.  */
9024
    which can conflict with char $ac_func(); below.  */
Lines 9136-9142 Link Here
9136
9041
9137
; return 0; }
9042
; return 0; }
9138
EOF
9043
EOF
9139
if { (eval echo configure:9140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9044
if { (eval echo configure:9045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9140
  rm -rf conftest*
9045
  rm -rf conftest*
9141
  eval "ac_cv_func_$ac_func=yes"
9046
  eval "ac_cv_func_$ac_func=yes"
9142
else
9047
else
Lines 9172-9190 Link Here
9172
cross_compiling=$ac_cv_prog_cxx_cross
9077
cross_compiling=$ac_cv_prog_cxx_cross
9173
9078
9174
echo $ac_n "checking for wcrtomb""... $ac_c" 1>&6
9079
echo $ac_n "checking for wcrtomb""... $ac_c" 1>&6
9175
echo "configure:9176: checking for wcrtomb" >&5
9080
echo "configure:9081: checking for wcrtomb" >&5
9176
if eval "test \"`echo '$''{'ac_cv_have_wcrtomb'+set}'`\" = set"; then
9081
if eval "test \"`echo '$''{'ac_cv_have_wcrtomb'+set}'`\" = set"; then
9177
  echo $ac_n "(cached) $ac_c" 1>&6
9082
  echo $ac_n "(cached) $ac_c" 1>&6
9178
else
9083
else
9179
  cat > conftest.$ac_ext <<EOF
9084
  cat > conftest.$ac_ext <<EOF
9180
#line 9181 "configure"
9085
#line 9086 "configure"
9181
#include "confdefs.h"
9086
#include "confdefs.h"
9182
#include <wchar.h>
9087
#include <wchar.h>
9183
int main() {
9088
int main() {
9184
mbstate_t ps={0};wcrtomb(0,'f',&ps);
9089
mbstate_t ps={0};wcrtomb(0,'f',&ps);
9185
; return 0; }
9090
; return 0; }
9186
EOF
9091
EOF
9187
if { (eval echo configure:9188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9092
if { (eval echo configure:9093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9188
  rm -rf conftest*
9093
  rm -rf conftest*
9189
  ac_cv_have_wcrtomb="yes"
9094
  ac_cv_have_wcrtomb="yes"
9190
else
9095
else
Lines 9204-9222 Link Here
9204
9109
9205
fi
9110
fi
9206
echo $ac_n "checking for mbrtowc""... $ac_c" 1>&6
9111
echo $ac_n "checking for mbrtowc""... $ac_c" 1>&6
9207
echo "configure:9208: checking for mbrtowc" >&5
9112
echo "configure:9113: checking for mbrtowc" >&5
9208
if eval "test \"`echo '$''{'ac_cv_have_mbrtowc'+set}'`\" = set"; then
9113
if eval "test \"`echo '$''{'ac_cv_have_mbrtowc'+set}'`\" = set"; then
9209
  echo $ac_n "(cached) $ac_c" 1>&6
9114
  echo $ac_n "(cached) $ac_c" 1>&6
9210
else
9115
else
9211
  cat > conftest.$ac_ext <<EOF
9116
  cat > conftest.$ac_ext <<EOF
9212
#line 9213 "configure"
9117
#line 9118 "configure"
9213
#include "confdefs.h"
9118
#include "confdefs.h"
9214
#include <wchar.h>
9119
#include <wchar.h>
9215
int main() {
9120
int main() {
9216
mbstate_t ps={0};mbrtowc(0,0,0,&ps);
9121
mbstate_t ps={0};mbrtowc(0,0,0,&ps);
9217
; return 0; }
9122
; return 0; }
9218
EOF
9123
EOF
9219
if { (eval echo configure:9220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9124
if { (eval echo configure:9125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9220
  rm -rf conftest*
9125
  rm -rf conftest*
9221
  ac_cv_have_mbrtowc="yes"
9126
  ac_cv_have_mbrtowc="yes"
9222
else
9127
else
Lines 9245-9256 Link Here
9245
fi
9150
fi
9246
9151
9247
echo $ac_n "checking for res_ninit()""... $ac_c" 1>&6
9152
echo $ac_n "checking for res_ninit()""... $ac_c" 1>&6
9248
echo "configure:9249: checking for res_ninit()" >&5
9153
echo "configure:9154: checking for res_ninit()" >&5
9249
if eval "test \"`echo '$''{'ac_cv_func_res_ninit'+set}'`\" = set"; then
9154
if eval "test \"`echo '$''{'ac_cv_func_res_ninit'+set}'`\" = set"; then
9250
  echo $ac_n "(cached) $ac_c" 1>&6
9155
  echo $ac_n "(cached) $ac_c" 1>&6
9251
else
9156
else
9252
  cat > conftest.$ac_ext <<EOF
9157
  cat > conftest.$ac_ext <<EOF
9253
#line 9254 "configure"
9158
#line 9159 "configure"
9254
#include "confdefs.h"
9159
#include "confdefs.h"
9255
9160
9256
        #ifdef linux
9161
        #ifdef linux
Lines 9262-9268 Link Here
9262
int foo = res_ninit(&_res);
9167
int foo = res_ninit(&_res);
9263
; return 0; }
9168
; return 0; }
9264
EOF
9169
EOF
9265
if { (eval echo configure:9266: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9170
if { (eval echo configure:9171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9266
  rm -rf conftest*
9171
  rm -rf conftest*
9267
  ac_cv_func_res_ninit=yes
9172
  ac_cv_func_res_ninit=yes
9268
else
9173
else
Lines 9292-9303 Link Here
9292
cross_compiling=$ac_cv_prog_cxx_cross
9197
cross_compiling=$ac_cv_prog_cxx_cross
9293
9198
9294
echo $ac_n "checking for gnu_get_libc_version()""... $ac_c" 1>&6
9199
echo $ac_n "checking for gnu_get_libc_version()""... $ac_c" 1>&6
9295
echo "configure:9296: checking for gnu_get_libc_version()" >&5
9200
echo "configure:9201: checking for gnu_get_libc_version()" >&5
9296
if eval "test \"`echo '$''{'ac_cv_func_gnu_get_libc_version'+set}'`\" = set"; then
9201
if eval "test \"`echo '$''{'ac_cv_func_gnu_get_libc_version'+set}'`\" = set"; then
9297
  echo $ac_n "(cached) $ac_c" 1>&6
9202
  echo $ac_n "(cached) $ac_c" 1>&6
9298
else
9203
else
9299
  cat > conftest.$ac_ext <<EOF
9204
  cat > conftest.$ac_ext <<EOF
9300
#line 9301 "configure"
9205
#line 9206 "configure"
9301
#include "confdefs.h"
9206
#include "confdefs.h"
9302
9207
9303
        #ifdef HAVE_GNU_LIBC_VERSION_H
9208
        #ifdef HAVE_GNU_LIBC_VERSION_H
Lines 9308-9314 Link Here
9308
const char *glibc_version = gnu_get_libc_version();
9213
const char *glibc_version = gnu_get_libc_version();
9309
; return 0; }
9214
; return 0; }
9310
EOF
9215
EOF
9311
if { (eval echo configure:9312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9216
if { (eval echo configure:9217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9312
  rm -rf conftest*
9217
  rm -rf conftest*
9313
  ac_cv_func_gnu_get_libc_version=yes
9218
  ac_cv_func_gnu_get_libc_version=yes
9314
else
9219
else
Lines 9337-9343 Link Here
9337
    *)
9242
    *)
9338
    
9243
    
9339
echo $ac_n "checking for iconv in -lc""... $ac_c" 1>&6
9244
echo $ac_n "checking for iconv in -lc""... $ac_c" 1>&6
9340
echo "configure:9341: checking for iconv in -lc" >&5
9245
echo "configure:9246: checking for iconv in -lc" >&5
9341
ac_lib_var=`echo c'_'iconv | sed 'y%./+-%__p_%'`
9246
ac_lib_var=`echo c'_'iconv | sed 'y%./+-%__p_%'`
9342
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
9247
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
9343
  echo $ac_n "(cached) $ac_c" 1>&6
9248
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 9345-9351 Link Here
9345
  ac_save_LIBS="$LIBS"
9250
  ac_save_LIBS="$LIBS"
9346
LIBS="-lc  $LIBS"
9251
LIBS="-lc  $LIBS"
9347
cat > conftest.$ac_ext <<EOF
9252
cat > conftest.$ac_ext <<EOF
9348
#line 9349 "configure"
9253
#line 9254 "configure"
9349
#include "confdefs.h"
9254
#include "confdefs.h"
9350
/* Override any gcc2 internal prototype to avoid an error.  */
9255
/* Override any gcc2 internal prototype to avoid an error.  */
9351
#ifdef __cplusplus
9256
#ifdef __cplusplus
Lines 9359-9365 Link Here
9359
iconv()
9264
iconv()
9360
; return 0; }
9265
; return 0; }
9361
EOF
9266
EOF
9362
if { (eval echo configure:9363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9267
if { (eval echo configure:9268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9363
  rm -rf conftest*
9268
  rm -rf conftest*
9364
  eval "ac_cv_lib_$ac_lib_var=yes"
9269
  eval "ac_cv_lib_$ac_lib_var=yes"
9365
else
9270
else
Lines 9378-9384 Link Here
9378
else
9283
else
9379
  echo "$ac_t""no" 1>&6
9284
  echo "$ac_t""no" 1>&6
9380
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
9285
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
9381
echo "configure:9382: checking for iconv in -liconv" >&5
9286
echo "configure:9287: checking for iconv in -liconv" >&5
9382
ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'`
9287
ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'`
9383
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
9288
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
9384
  echo $ac_n "(cached) $ac_c" 1>&6
9289
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 9386-9392 Link Here
9386
  ac_save_LIBS="$LIBS"
9291
  ac_save_LIBS="$LIBS"
9387
LIBS="-liconv  $LIBS"
9292
LIBS="-liconv  $LIBS"
9388
cat > conftest.$ac_ext <<EOF
9293
cat > conftest.$ac_ext <<EOF
9389
#line 9390 "configure"
9294
#line 9295 "configure"
9390
#include "confdefs.h"
9295
#include "confdefs.h"
9391
/* Override any gcc2 internal prototype to avoid an error.  */
9296
/* Override any gcc2 internal prototype to avoid an error.  */
9392
#ifdef __cplusplus
9297
#ifdef __cplusplus
Lines 9400-9406 Link Here
9400
iconv()
9305
iconv()
9401
; return 0; }
9306
; return 0; }
9402
EOF
9307
EOF
9403
if { (eval echo configure:9404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9308
if { (eval echo configure:9309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9404
  rm -rf conftest*
9309
  rm -rf conftest*
9405
  eval "ac_cv_lib_$ac_lib_var=yes"
9310
  eval "ac_cv_lib_$ac_lib_var=yes"
9406
else
9311
else
Lines 9419-9425 Link Here
9419
else
9324
else
9420
  echo "$ac_t""no" 1>&6
9325
  echo "$ac_t""no" 1>&6
9421
echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
9326
echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
9422
echo "configure:9423: checking for libiconv in -liconv" >&5
9327
echo "configure:9328: checking for libiconv in -liconv" >&5
9423
ac_lib_var=`echo iconv'_'libiconv | sed 'y%./+-%__p_%'`
9328
ac_lib_var=`echo iconv'_'libiconv | sed 'y%./+-%__p_%'`
9424
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
9329
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
9425
  echo $ac_n "(cached) $ac_c" 1>&6
9330
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 9427-9433 Link Here
9427
  ac_save_LIBS="$LIBS"
9332
  ac_save_LIBS="$LIBS"
9428
LIBS="-liconv  $LIBS"
9333
LIBS="-liconv  $LIBS"
9429
cat > conftest.$ac_ext <<EOF
9334
cat > conftest.$ac_ext <<EOF
9430
#line 9431 "configure"
9335
#line 9336 "configure"
9431
#include "confdefs.h"
9336
#include "confdefs.h"
9432
/* Override any gcc2 internal prototype to avoid an error.  */
9337
/* Override any gcc2 internal prototype to avoid an error.  */
9433
#ifdef __cplusplus
9338
#ifdef __cplusplus
Lines 9441-9447 Link Here
9441
libiconv()
9346
libiconv()
9442
; return 0; }
9347
; return 0; }
9443
EOF
9348
EOF
9444
if { (eval echo configure:9445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9349
if { (eval echo configure:9350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9445
  rm -rf conftest*
9350
  rm -rf conftest*
9446
  eval "ac_cv_lib_$ac_lib_var=yes"
9351
  eval "ac_cv_lib_$ac_lib_var=yes"
9447
else
9352
else
Lines 9468-9479 Link Here
9468
_SAVE_LIBS=$LIBS
9373
_SAVE_LIBS=$LIBS
9469
LIBS="$LIBS $_ICONV_LIBS"
9374
LIBS="$LIBS $_ICONV_LIBS"
9470
echo $ac_n "checking for iconv()""... $ac_c" 1>&6
9375
echo $ac_n "checking for iconv()""... $ac_c" 1>&6
9471
echo "configure:9472: checking for iconv()" >&5
9376
echo "configure:9377: checking for iconv()" >&5
9472
if eval "test \"`echo '$''{'ac_cv_func_iconv'+set}'`\" = set"; then
9377
if eval "test \"`echo '$''{'ac_cv_func_iconv'+set}'`\" = set"; then
9473
  echo $ac_n "(cached) $ac_c" 1>&6
9378
  echo $ac_n "(cached) $ac_c" 1>&6
9474
else
9379
else
9475
  cat > conftest.$ac_ext <<EOF
9380
  cat > conftest.$ac_ext <<EOF
9476
#line 9477 "configure"
9381
#line 9382 "configure"
9477
#include "confdefs.h"
9382
#include "confdefs.h"
9478
9383
9479
        #include <stdlib.h>
9384
        #include <stdlib.h>
Lines 9487-9493 Link Here
9487
        
9392
        
9488
; return 0; }
9393
; return 0; }
9489
EOF
9394
EOF
9490
if { (eval echo configure:9491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9395
if { (eval echo configure:9396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9491
  rm -rf conftest*
9396
  rm -rf conftest*
9492
  ac_cv_func_iconv=yes
9397
  ac_cv_func_iconv=yes
9493
else
9398
else
Lines 9510-9521 Link Here
9510
    XPCOM_LIBS="$XPCOM_LIBS $_ICONV_LIBS"
9415
    XPCOM_LIBS="$XPCOM_LIBS $_ICONV_LIBS"
9511
    LIBICONV="$_ICONV_LIBS"
9416
    LIBICONV="$_ICONV_LIBS"
9512
    echo $ac_n "checking for iconv() with const input""... $ac_c" 1>&6
9417
    echo $ac_n "checking for iconv() with const input""... $ac_c" 1>&6
9513
echo "configure:9514: checking for iconv() with const input" >&5
9418
echo "configure:9419: checking for iconv() with const input" >&5
9514
if eval "test \"`echo '$''{'ac_cv_func_const_iconv'+set}'`\" = set"; then
9419
if eval "test \"`echo '$''{'ac_cv_func_const_iconv'+set}'`\" = set"; then
9515
  echo $ac_n "(cached) $ac_c" 1>&6
9420
  echo $ac_n "(cached) $ac_c" 1>&6
9516
else
9421
else
9517
  cat > conftest.$ac_ext <<EOF
9422
  cat > conftest.$ac_ext <<EOF
9518
#line 9519 "configure"
9423
#line 9424 "configure"
9519
#include "confdefs.h"
9424
#include "confdefs.h"
9520
9425
9521
            #include <stdlib.h>
9426
            #include <stdlib.h>
Lines 9530-9536 Link Here
9530
            
9435
            
9531
; return 0; }
9436
; return 0; }
9532
EOF
9437
EOF
9533
if { (eval echo configure:9534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9438
if { (eval echo configure:9439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9534
  rm -rf conftest*
9439
  rm -rf conftest*
9535
  ac_cv_func_const_iconv=yes
9440
  ac_cv_func_const_iconv=yes
9536
else
9441
else
Lines 9559-9577 Link Here
9559
9464
9560
9465
9561
  echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
9466
  echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
9562
echo "configure:9563: checking for nl_langinfo and CODESET" >&5
9467
echo "configure:9468: checking for nl_langinfo and CODESET" >&5
9563
if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
9468
if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
9564
  echo $ac_n "(cached) $ac_c" 1>&6
9469
  echo $ac_n "(cached) $ac_c" 1>&6
9565
else
9470
else
9566
  cat > conftest.$ac_ext <<EOF
9471
  cat > conftest.$ac_ext <<EOF
9567
#line 9568 "configure"
9472
#line 9473 "configure"
9568
#include "confdefs.h"
9473
#include "confdefs.h"
9569
#include <langinfo.h>
9474
#include <langinfo.h>
9570
int main() {
9475
int main() {
9571
char* cs = nl_langinfo(CODESET);
9476
char* cs = nl_langinfo(CODESET);
9572
; return 0; }
9477
; return 0; }
9573
EOF
9478
EOF
9574
if { (eval echo configure:9575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9479
if { (eval echo configure:9480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
9575
  rm -rf conftest*
9480
  rm -rf conftest*
9576
  am_cv_langinfo_codeset=yes
9481
  am_cv_langinfo_codeset=yes
9577
else
9482
else
Lines 9603-9609 Link Here
9603
9508
9604
9509
9605
echo $ac_n "checking for an implementation of va_copy()""... $ac_c" 1>&6
9510
echo $ac_n "checking for an implementation of va_copy()""... $ac_c" 1>&6
9606
echo "configure:9607: checking for an implementation of va_copy()" >&5
9511
echo "configure:9512: checking for an implementation of va_copy()" >&5
9607
if eval "test \"`echo '$''{'ac_cv_va_copy'+set}'`\" = set"; then
9512
if eval "test \"`echo '$''{'ac_cv_va_copy'+set}'`\" = set"; then
9608
  echo $ac_n "(cached) $ac_c" 1>&6
9513
  echo $ac_n "(cached) $ac_c" 1>&6
9609
else
9514
else
Lines 9613-9619 Link Here
9613
    
9518
    
9614
else
9519
else
9615
  cat > conftest.$ac_ext <<EOF
9520
  cat > conftest.$ac_ext <<EOF
9616
#line 9617 "configure"
9521
#line 9522 "configure"
9617
#include "confdefs.h"
9522
#include "confdefs.h"
9618
9523
9619
        #include <stdarg.h>
9524
        #include <stdarg.h>
Lines 9627-9633 Link Here
9627
        }
9532
        }
9628
        int main() { f (0, 42); return 0; }
9533
        int main() { f (0, 42); return 0; }
9629
EOF
9534
EOF
9630
if { (eval echo configure:9631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
9535
if { (eval echo configure:9536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
9631
then
9536
then
9632
  ac_cv_va_copy=yes
9537
  ac_cv_va_copy=yes
9633
else
9538
else
Lines 9644-9650 Link Here
9644
9549
9645
echo "$ac_t""$ac_cv_va_copy" 1>&6
9550
echo "$ac_t""$ac_cv_va_copy" 1>&6
9646
echo $ac_n "checking for an implementation of __va_copy()""... $ac_c" 1>&6
9551
echo $ac_n "checking for an implementation of __va_copy()""... $ac_c" 1>&6
9647
echo "configure:9648: checking for an implementation of __va_copy()" >&5
9552
echo "configure:9553: checking for an implementation of __va_copy()" >&5
9648
if eval "test \"`echo '$''{'ac_cv___va_copy'+set}'`\" = set"; then
9553
if eval "test \"`echo '$''{'ac_cv___va_copy'+set}'`\" = set"; then
9649
  echo $ac_n "(cached) $ac_c" 1>&6
9554
  echo $ac_n "(cached) $ac_c" 1>&6
9650
else
9555
else
Lines 9654-9660 Link Here
9654
    
9559
    
9655
else
9560
else
9656
  cat > conftest.$ac_ext <<EOF
9561
  cat > conftest.$ac_ext <<EOF
9657
#line 9658 "configure"
9562
#line 9563 "configure"
9658
#include "confdefs.h"
9563
#include "confdefs.h"
9659
9564
9660
        #include <stdarg.h>
9565
        #include <stdarg.h>
Lines 9668-9674 Link Here
9668
        }
9573
        }
9669
        int main() { f (0, 42); return 0; }
9574
        int main() { f (0, 42); return 0; }
9670
EOF
9575
EOF
9671
if { (eval echo configure:9672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
9576
if { (eval echo configure:9577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
9672
then
9577
then
9673
  ac_cv___va_copy=yes
9578
  ac_cv___va_copy=yes
9674
else
9579
else
Lines 9685-9691 Link Here
9685
9590
9686
echo "$ac_t""$ac_cv___va_copy" 1>&6
9591
echo "$ac_t""$ac_cv___va_copy" 1>&6
9687
echo $ac_n "checking whether va_lists can be copied by value""... $ac_c" 1>&6
9592
echo $ac_n "checking whether va_lists can be copied by value""... $ac_c" 1>&6
9688
echo "configure:9689: checking whether va_lists can be copied by value" >&5
9593
echo "configure:9594: checking whether va_lists can be copied by value" >&5
9689
if eval "test \"`echo '$''{'ac_cv_va_val_copy'+set}'`\" = set"; then
9594
if eval "test \"`echo '$''{'ac_cv_va_val_copy'+set}'`\" = set"; then
9690
  echo $ac_n "(cached) $ac_c" 1>&6
9595
  echo $ac_n "(cached) $ac_c" 1>&6
9691
else
9596
else
Lines 9695-9701 Link Here
9695
    
9600
    
9696
else
9601
else
9697
  cat > conftest.$ac_ext <<EOF
9602
  cat > conftest.$ac_ext <<EOF
9698
#line 9699 "configure"
9603
#line 9604 "configure"
9699
#include "confdefs.h"
9604
#include "confdefs.h"
9700
9605
9701
        #include <stdarg.h>
9606
        #include <stdarg.h>
Lines 9709-9715 Link Here
9709
        }
9614
        }
9710
        int main() { f (0, 42); return 0; }
9615
        int main() { f (0, 42); return 0; }
9711
EOF
9616
EOF
9712
if { (eval echo configure:9713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
9617
if { (eval echo configure:9618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
9713
then
9618
then
9714
  ac_cv_va_val_copy=yes
9619
  ac_cv_va_val_copy=yes
9715
else
9620
else
Lines 9808-9814 Link Here
9808
if test "$GNU_CXX"; then
9713
if test "$GNU_CXX"; then
9809
9714
9810
  echo $ac_n "checking for C++ exceptions flag""... $ac_c" 1>&6
9715
  echo $ac_n "checking for C++ exceptions flag""... $ac_c" 1>&6
9811
echo "configure:9812: checking for C++ exceptions flag" >&5
9716
echo "configure:9717: checking for C++ exceptions flag" >&5
9812
9717
9813
    if eval "test \"`echo '$''{'ac_cv_cxx_exceptions_flags'+set}'`\" = set"; then
9718
    if eval "test \"`echo '$''{'ac_cv_cxx_exceptions_flags'+set}'`\" = set"; then
9814
  echo $ac_n "(cached) $ac_c" 1>&6
9719
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 9843-9854 Link Here
9843
HAVE_GCC3_ABI=
9748
HAVE_GCC3_ABI=
9844
if test "$GNU_CC"; then
9749
if test "$GNU_CC"; then
9845
  echo $ac_n "checking for gcc 3.0 ABI""... $ac_c" 1>&6
9750
  echo $ac_n "checking for gcc 3.0 ABI""... $ac_c" 1>&6
9846
echo "configure:9847: checking for gcc 3.0 ABI" >&5
9751
echo "configure:9752: checking for gcc 3.0 ABI" >&5
9847
if eval "test \"`echo '$''{'ac_cv_gcc_three_abi'+set}'`\" = set"; then
9752
if eval "test \"`echo '$''{'ac_cv_gcc_three_abi'+set}'`\" = set"; then
9848
  echo $ac_n "(cached) $ac_c" 1>&6
9753
  echo $ac_n "(cached) $ac_c" 1>&6
9849
else
9754
else
9850
  cat > conftest.$ac_ext <<EOF
9755
  cat > conftest.$ac_ext <<EOF
9851
#line 9852 "configure"
9756
#line 9757 "configure"
9852
#include "confdefs.h"
9757
#include "confdefs.h"
9853
9758
9854
int main() {
9759
int main() {
Lines 9861-9867 Link Here
9861
                      
9766
                      
9862
; return 0; }
9767
; return 0; }
9863
EOF
9768
EOF
9864
if { (eval echo configure:9865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9769
if { (eval echo configure:9770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9865
  rm -rf conftest*
9770
  rm -rf conftest*
9866
  ac_cv_gcc_three_abi="yes"
9771
  ac_cv_gcc_three_abi="yes"
9867
else
9772
else
Lines 9882-9893 Link Here
9882
9787
9883
9788
9884
echo $ac_n "checking for C++ \"explicit\" keyword""... $ac_c" 1>&6
9789
echo $ac_n "checking for C++ \"explicit\" keyword""... $ac_c" 1>&6
9885
echo "configure:9886: checking for C++ \"explicit\" keyword" >&5
9790
echo "configure:9791: checking for C++ \"explicit\" keyword" >&5
9886
if eval "test \"`echo '$''{'ac_cv_cpp_explicit'+set}'`\" = set"; then
9791
if eval "test \"`echo '$''{'ac_cv_cpp_explicit'+set}'`\" = set"; then
9887
  echo $ac_n "(cached) $ac_c" 1>&6
9792
  echo $ac_n "(cached) $ac_c" 1>&6
9888
else
9793
else
9889
  cat > conftest.$ac_ext <<EOF
9794
  cat > conftest.$ac_ext <<EOF
9890
#line 9891 "configure"
9795
#line 9796 "configure"
9891
#include "confdefs.h"
9796
#include "confdefs.h"
9892
class X {
9797
class X {
9893
                               public: explicit X(int i) : i_(i) {}
9798
                               public: explicit X(int i) : i_(i) {}
Lines 9897-9903 Link Here
9897
X x(3);
9802
X x(3);
9898
; return 0; }
9803
; return 0; }
9899
EOF
9804
EOF
9900
if { (eval echo configure:9901: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9805
if { (eval echo configure:9806: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9901
  rm -rf conftest*
9806
  rm -rf conftest*
9902
  ac_cv_cpp_explicit=yes
9807
  ac_cv_cpp_explicit=yes
9903
else
9808
else
Lines 9918-9929 Link Here
9918
fi
9823
fi
9919
9824
9920
echo $ac_n "checking for C++ \"typename\" keyword""... $ac_c" 1>&6
9825
echo $ac_n "checking for C++ \"typename\" keyword""... $ac_c" 1>&6
9921
echo "configure:9922: checking for C++ \"typename\" keyword" >&5
9826
echo "configure:9827: checking for C++ \"typename\" keyword" >&5
9922
if eval "test \"`echo '$''{'ac_cv_cpp_typename'+set}'`\" = set"; then
9827
if eval "test \"`echo '$''{'ac_cv_cpp_typename'+set}'`\" = set"; then
9923
  echo $ac_n "(cached) $ac_c" 1>&6
9828
  echo $ac_n "(cached) $ac_c" 1>&6
9924
else
9829
else
9925
  cat > conftest.$ac_ext <<EOF
9830
  cat > conftest.$ac_ext <<EOF
9926
#line 9927 "configure"
9831
#line 9832 "configure"
9927
#include "confdefs.h"
9832
#include "confdefs.h"
9928
class param {
9833
class param {
9929
                               public:
9834
                               public:
Lines 9942-9948 Link Here
9942
                               A.foo(0);
9847
                               A.foo(0);
9943
; return 0; }
9848
; return 0; }
9944
EOF
9849
EOF
9945
if { (eval echo configure:9946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9850
if { (eval echo configure:9851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9946
  rm -rf conftest*
9851
  rm -rf conftest*
9947
  ac_cv_cpp_typename=yes
9852
  ac_cv_cpp_typename=yes
9948
else
9853
else
Lines 9963-9974 Link Here
9963
fi
9868
fi
9964
9869
9965
echo $ac_n "checking for modern C++ template specialization syntax support""... $ac_c" 1>&6
9870
echo $ac_n "checking for modern C++ template specialization syntax support""... $ac_c" 1>&6
9966
echo "configure:9967: checking for modern C++ template specialization syntax support" >&5
9871
echo "configure:9872: checking for modern C++ template specialization syntax support" >&5
9967
if eval "test \"`echo '$''{'ac_cv_cpp_modern_specialize_template_syntax'+set}'`\" = set"; then
9872
if eval "test \"`echo '$''{'ac_cv_cpp_modern_specialize_template_syntax'+set}'`\" = set"; then
9968
  echo $ac_n "(cached) $ac_c" 1>&6
9873
  echo $ac_n "(cached) $ac_c" 1>&6
9969
else
9874
else
9970
  cat > conftest.$ac_ext <<EOF
9875
  cat > conftest.$ac_ext <<EOF
9971
#line 9972 "configure"
9876
#line 9877 "configure"
9972
#include "confdefs.h"
9877
#include "confdefs.h"
9973
template <class T> struct X { int a; };
9878
template <class T> struct X { int a; };
9974
                               class Y {};
9879
                               class Y {};
Lines 9978-9984 Link Here
9978
                               X<Y> y_x;
9883
                               X<Y> y_x;
9979
; return 0; }
9884
; return 0; }
9980
EOF
9885
EOF
9981
if { (eval echo configure:9982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9886
if { (eval echo configure:9887: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9982
  rm -rf conftest*
9887
  rm -rf conftest*
9983
  ac_cv_cpp_modern_specialize_template_syntax=yes
9888
  ac_cv_cpp_modern_specialize_template_syntax=yes
9984
else
9889
else
Lines 10000-10011 Link Here
10000
9905
10001
9906
10002
echo $ac_n "checking whether partial template specialization works""... $ac_c" 1>&6
9907
echo $ac_n "checking whether partial template specialization works""... $ac_c" 1>&6
10003
echo "configure:10004: checking whether partial template specialization works" >&5
9908
echo "configure:9909: checking whether partial template specialization works" >&5
10004
if eval "test \"`echo '$''{'ac_cv_cpp_partial_specialization'+set}'`\" = set"; then
9909
if eval "test \"`echo '$''{'ac_cv_cpp_partial_specialization'+set}'`\" = set"; then
10005
  echo $ac_n "(cached) $ac_c" 1>&6
9910
  echo $ac_n "(cached) $ac_c" 1>&6
10006
else
9911
else
10007
  cat > conftest.$ac_ext <<EOF
9912
  cat > conftest.$ac_ext <<EOF
10008
#line 10009 "configure"
9913
#line 9914 "configure"
10009
#include "confdefs.h"
9914
#include "confdefs.h"
10010
template <class T> class Foo {};
9915
template <class T> class Foo {};
10011
                               template <class T> class Foo<T*> {};
9916
                               template <class T> class Foo<T*> {};
Lines 10013-10019 Link Here
10013
return 0;
9918
return 0;
10014
; return 0; }
9919
; return 0; }
10015
EOF
9920
EOF
10016
if { (eval echo configure:10017: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9921
if { (eval echo configure:9922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10017
  rm -rf conftest*
9922
  rm -rf conftest*
10018
  ac_cv_cpp_partial_specialization=yes
9923
  ac_cv_cpp_partial_specialization=yes
10019
else
9924
else
Lines 10034-10045 Link Here
10034
fi
9939
fi
10035
9940
10036
echo $ac_n "checking whether operators must be re-defined for templates derived from templates""... $ac_c" 1>&6
9941
echo $ac_n "checking whether operators must be re-defined for templates derived from templates""... $ac_c" 1>&6
10037
echo "configure:10038: checking whether operators must be re-defined for templates derived from templates" >&5
9942
echo "configure:9943: checking whether operators must be re-defined for templates derived from templates" >&5
10038
if eval "test \"`echo '$''{'ac_cv_need_derived_template_operators'+set}'`\" = set"; then
9943
if eval "test \"`echo '$''{'ac_cv_need_derived_template_operators'+set}'`\" = set"; then
10039
  echo $ac_n "(cached) $ac_c" 1>&6
9944
  echo $ac_n "(cached) $ac_c" 1>&6
10040
else
9945
else
10041
  cat > conftest.$ac_ext <<EOF
9946
  cat > conftest.$ac_ext <<EOF
10042
#line 10043 "configure"
9947
#line 9948 "configure"
10043
#include "confdefs.h"
9948
#include "confdefs.h"
10044
template <class T> class Base { };
9949
template <class T> class Base { };
10045
                                template <class T>
9950
                                template <class T>
Lines 10051-10057 Link Here
10051
                                return 0;
9956
                                return 0;
10052
; return 0; }
9957
; return 0; }
10053
EOF
9958
EOF
10054
if { (eval echo configure:10055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9959
if { (eval echo configure:9960: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10055
  rm -rf conftest*
9960
  rm -rf conftest*
10056
  ac_cv_need_derived_template_operators=no
9961
  ac_cv_need_derived_template_operators=no
10057
else
9962
else
Lines 10073-10084 Link Here
10073
9978
10074
9979
10075
echo $ac_n "checking whether we need to cast a derived template to pass as its base class""... $ac_c" 1>&6
9980
echo $ac_n "checking whether we need to cast a derived template to pass as its base class""... $ac_c" 1>&6
10076
echo "configure:10077: checking whether we need to cast a derived template to pass as its base class" >&5
9981
echo "configure:9982: checking whether we need to cast a derived template to pass as its base class" >&5
10077
if eval "test \"`echo '$''{'ac_cv_need_cpp_template_cast_to_base'+set}'`\" = set"; then
9982
if eval "test \"`echo '$''{'ac_cv_need_cpp_template_cast_to_base'+set}'`\" = set"; then
10078
  echo $ac_n "(cached) $ac_c" 1>&6
9983
  echo $ac_n "(cached) $ac_c" 1>&6
10079
else
9984
else
10080
  cat > conftest.$ac_ext <<EOF
9985
  cat > conftest.$ac_ext <<EOF
10081
#line 10082 "configure"
9986
#line 9987 "configure"
10082
#include "confdefs.h"
9987
#include "confdefs.h"
10083
template <class T> class Base { };
9988
template <class T> class Base { };
10084
                                template <class T> class Derived : public Base<T> { };
9989
                                template <class T> class Derived : public Base<T> { };
Lines 10087-10093 Link Here
10087
Derived<char> bar; return foo(bar);
9992
Derived<char> bar; return foo(bar);
10088
; return 0; }
9993
; return 0; }
10089
EOF
9994
EOF
10090
if { (eval echo configure:10091: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
9995
if { (eval echo configure:9996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10091
  rm -rf conftest*
9996
  rm -rf conftest*
10092
  ac_cv_need_cpp_template_cast_to_base=no
9997
  ac_cv_need_cpp_template_cast_to_base=no
10093
else
9998
else
Lines 10108-10119 Link Here
10108
fi
10013
fi
10109
10014
10110
echo $ac_n "checking whether the compiler can resolve const ambiguities for templates""... $ac_c" 1>&6
10015
echo $ac_n "checking whether the compiler can resolve const ambiguities for templates""... $ac_c" 1>&6
10111
echo "configure:10112: checking whether the compiler can resolve const ambiguities for templates" >&5
10016
echo "configure:10017: checking whether the compiler can resolve const ambiguities for templates" >&5
10112
if eval "test \"`echo '$''{'ac_cv_can_resolve_const_ambiguity'+set}'`\" = set"; then
10017
if eval "test \"`echo '$''{'ac_cv_can_resolve_const_ambiguity'+set}'`\" = set"; then
10113
  echo $ac_n "(cached) $ac_c" 1>&6
10018
  echo $ac_n "(cached) $ac_c" 1>&6
10114
else
10019
else
10115
  cat > conftest.$ac_ext <<EOF
10020
  cat > conftest.$ac_ext <<EOF
10116
#line 10117 "configure"
10021
#line 10022 "configure"
10117
#include "confdefs.h"
10022
#include "confdefs.h"
10118
10023
10119
                                template <class T> class ptrClass {
10024
                                template <class T> class ptrClass {
Lines 10134-10140 Link Here
10134
                                 a(&i); 
10039
                                 a(&i); 
10135
; return 0; }
10040
; return 0; }
10136
EOF
10041
EOF
10137
if { (eval echo configure:10138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10042
if { (eval echo configure:10043: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10138
  rm -rf conftest*
10043
  rm -rf conftest*
10139
  ac_cv_can_resolve_const_ambiguity=yes
10044
  ac_cv_can_resolve_const_ambiguity=yes
10140
else
10045
else
Lines 10156-10167 Link Here
10156
10061
10157
10062
10158
echo $ac_n "checking whether the C++ \"using\" keyword can change access""... $ac_c" 1>&6
10063
echo $ac_n "checking whether the C++ \"using\" keyword can change access""... $ac_c" 1>&6
10159
echo "configure:10160: checking whether the C++ \"using\" keyword can change access" >&5
10064
echo "configure:10065: checking whether the C++ \"using\" keyword can change access" >&5
10160
if eval "test \"`echo '$''{'ac_cv_cpp_access_changing_using2'+set}'`\" = set"; then
10065
if eval "test \"`echo '$''{'ac_cv_cpp_access_changing_using2'+set}'`\" = set"; then
10161
  echo $ac_n "(cached) $ac_c" 1>&6
10066
  echo $ac_n "(cached) $ac_c" 1>&6
10162
else
10067
else
10163
  cat > conftest.$ac_ext <<EOF
10068
  cat > conftest.$ac_ext <<EOF
10164
#line 10165 "configure"
10069
#line 10070 "configure"
10165
#include "confdefs.h"
10070
#include "confdefs.h"
10166
class A { protected: int foo() { return 0; } };
10071
class A { protected: int foo() { return 0; } };
10167
                   class B : public A { public: using A::foo; };
10072
                   class B : public A { public: using A::foo; };
Lines 10169-10178 Link Here
10169
B b; return b.foo();
10074
B b; return b.foo();
10170
; return 0; }
10075
; return 0; }
10171
EOF
10076
EOF
10172
if { (eval echo configure:10173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10077
if { (eval echo configure:10078: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10173
  rm -rf conftest*
10078
  rm -rf conftest*
10174
  cat > conftest.$ac_ext <<EOF
10079
  cat > conftest.$ac_ext <<EOF
10175
#line 10176 "configure"
10080
#line 10081 "configure"
10176
#include "confdefs.h"
10081
#include "confdefs.h"
10177
class A { public: int foo() { return 1; } };
10082
class A { public: int foo() { return 1; } };
10178
                       class B : public A { private: using A::foo; };
10083
                       class B : public A { private: using A::foo; };
Lines 10180-10186 Link Here
10180
B b; return b.foo();
10085
B b; return b.foo();
10181
; return 0; }
10086
; return 0; }
10182
EOF
10087
EOF
10183
if { (eval echo configure:10184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10088
if { (eval echo configure:10089: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10184
  rm -rf conftest*
10089
  rm -rf conftest*
10185
  ac_cv_cpp_access_changing_using2=no
10090
  ac_cv_cpp_access_changing_using2=no
10186
else
10091
else
Lines 10208-10219 Link Here
10208
fi
10113
fi
10209
10114
10210
echo $ac_n "checking whether the C++ \"using\" keyword resolves ambiguity""... $ac_c" 1>&6
10115
echo $ac_n "checking whether the C++ \"using\" keyword resolves ambiguity""... $ac_c" 1>&6
10211
echo "configure:10212: checking whether the C++ \"using\" keyword resolves ambiguity" >&5
10116
echo "configure:10117: checking whether the C++ \"using\" keyword resolves ambiguity" >&5
10212
if eval "test \"`echo '$''{'ac_cv_cpp_ambiguity_resolving_using'+set}'`\" = set"; then
10117
if eval "test \"`echo '$''{'ac_cv_cpp_ambiguity_resolving_using'+set}'`\" = set"; then
10213
  echo $ac_n "(cached) $ac_c" 1>&6
10118
  echo $ac_n "(cached) $ac_c" 1>&6
10214
else
10119
else
10215
  cat > conftest.$ac_ext <<EOF
10120
  cat > conftest.$ac_ext <<EOF
10216
#line 10217 "configure"
10121
#line 10122 "configure"
10217
#include "confdefs.h"
10122
#include "confdefs.h"
10218
class X { 
10123
class X { 
10219
                                 public: int go(const X&) {return 3;}
10124
                                 public: int go(const X&) {return 3;}
Lines 10229-10235 Link Here
10229
X x; Y y; y.jo(x);
10134
X x; Y y; y.jo(x);
10230
; return 0; }
10135
; return 0; }
10231
EOF
10136
EOF
10232
if { (eval echo configure:10233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10137
if { (eval echo configure:10138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10233
  rm -rf conftest*
10138
  rm -rf conftest*
10234
  ac_cv_cpp_ambiguity_resolving_using=yes
10139
  ac_cv_cpp_ambiguity_resolving_using=yes
10235
else
10140
else
Lines 10250-10268 Link Here
10250
fi
10155
fi
10251
10156
10252
echo $ac_n "checking for \"std::\" namespace""... $ac_c" 1>&6
10157
echo $ac_n "checking for \"std::\" namespace""... $ac_c" 1>&6
10253
echo "configure:10254: checking for \"std::\" namespace" >&5
10158
echo "configure:10159: checking for \"std::\" namespace" >&5
10254
if eval "test \"`echo '$''{'ac_cv_cpp_namespace_std'+set}'`\" = set"; then
10159
if eval "test \"`echo '$''{'ac_cv_cpp_namespace_std'+set}'`\" = set"; then
10255
  echo $ac_n "(cached) $ac_c" 1>&6
10160
  echo $ac_n "(cached) $ac_c" 1>&6
10256
else
10161
else
10257
  cat > conftest.$ac_ext <<EOF
10162
  cat > conftest.$ac_ext <<EOF
10258
#line 10259 "configure"
10163
#line 10164 "configure"
10259
#include "confdefs.h"
10164
#include "confdefs.h"
10260
#include <algorithm>
10165
#include <algorithm>
10261
int main() {
10166
int main() {
10262
return std::min(0, 1);
10167
return std::min(0, 1);
10263
; return 0; }
10168
; return 0; }
10264
EOF
10169
EOF
10265
if { (eval echo configure:10266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10170
if { (eval echo configure:10171: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10266
  rm -rf conftest*
10171
  rm -rf conftest*
10267
  ac_cv_cpp_namespace_std=yes
10172
  ac_cv_cpp_namespace_std=yes
10268
else
10173
else
Lines 10283-10294 Link Here
10283
fi
10188
fi
10284
10189
10285
echo $ac_n "checking whether standard template operator!=() is ambiguous""... $ac_c" 1>&6
10190
echo $ac_n "checking whether standard template operator!=() is ambiguous""... $ac_c" 1>&6
10286
echo "configure:10287: checking whether standard template operator!=() is ambiguous" >&5
10191
echo "configure:10192: checking whether standard template operator!=() is ambiguous" >&5
10287
if eval "test \"`echo '$''{'ac_cv_cpp_unambiguous_std_notequal'+set}'`\" = set"; then
10192
if eval "test \"`echo '$''{'ac_cv_cpp_unambiguous_std_notequal'+set}'`\" = set"; then
10288
  echo $ac_n "(cached) $ac_c" 1>&6
10193
  echo $ac_n "(cached) $ac_c" 1>&6
10289
else
10194
else
10290
  cat > conftest.$ac_ext <<EOF
10195
  cat > conftest.$ac_ext <<EOF
10291
#line 10292 "configure"
10196
#line 10197 "configure"
10292
#include "confdefs.h"
10197
#include "confdefs.h"
10293
#include <algorithm>
10198
#include <algorithm>
10294
                                struct T1 {};
10199
                                struct T1 {};
Lines 10298-10304 Link Here
10298
T1 a,b; return a != b;
10203
T1 a,b; return a != b;
10299
; return 0; }
10204
; return 0; }
10300
EOF
10205
EOF
10301
if { (eval echo configure:10302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10206
if { (eval echo configure:10207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10302
  rm -rf conftest*
10207
  rm -rf conftest*
10303
  ac_cv_cpp_unambiguous_std_notequal=unambiguous
10208
  ac_cv_cpp_unambiguous_std_notequal=unambiguous
10304
else
10209
else
Lines 10320-10331 Link Here
10320
10225
10321
10226
10322
echo $ac_n "checking for C++ reinterpret_cast""... $ac_c" 1>&6
10227
echo $ac_n "checking for C++ reinterpret_cast""... $ac_c" 1>&6
10323
echo "configure:10324: checking for C++ reinterpret_cast" >&5
10228
echo "configure:10229: checking for C++ reinterpret_cast" >&5
10324
if eval "test \"`echo '$''{'ac_cv_cpp_reinterpret_cast'+set}'`\" = set"; then
10229
if eval "test \"`echo '$''{'ac_cv_cpp_reinterpret_cast'+set}'`\" = set"; then
10325
  echo $ac_n "(cached) $ac_c" 1>&6
10230
  echo $ac_n "(cached) $ac_c" 1>&6
10326
else
10231
else
10327
  cat > conftest.$ac_ext <<EOF
10232
  cat > conftest.$ac_ext <<EOF
10328
#line 10329 "configure"
10233
#line 10234 "configure"
10329
#include "confdefs.h"
10234
#include "confdefs.h"
10330
struct X { int i; };
10235
struct X { int i; };
10331
                               struct Y { int i; };
10236
                               struct Y { int i; };
Lines 10333-10339 Link Here
10333
X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);
10238
X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);
10334
; return 0; }
10239
; return 0; }
10335
EOF
10240
EOF
10336
if { (eval echo configure:10337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10241
if { (eval echo configure:10242: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10337
  rm -rf conftest*
10242
  rm -rf conftest*
10338
  ac_cv_cpp_reinterpret_cast=yes
10243
  ac_cv_cpp_reinterpret_cast=yes
10339
else
10244
else
Lines 10354-10360 Link Here
10354
fi
10259
fi
10355
10260
10356
echo $ac_n "checking for C++ dynamic_cast to void*""... $ac_c" 1>&6
10261
echo $ac_n "checking for C++ dynamic_cast to void*""... $ac_c" 1>&6
10357
echo "configure:10358: checking for C++ dynamic_cast to void*" >&5
10262
echo "configure:10263: checking for C++ dynamic_cast to void*" >&5
10358
if eval "test \"`echo '$''{'ac_cv_cpp_dynamic_cast_void_ptr'+set}'`\" = set"; then
10263
if eval "test \"`echo '$''{'ac_cv_cpp_dynamic_cast_void_ptr'+set}'`\" = set"; then
10359
  echo $ac_n "(cached) $ac_c" 1>&6
10264
  echo $ac_n "(cached) $ac_c" 1>&6
10360
else
10265
else
Lines 10362-10369 Link Here
10362
  ac_cv_cpp_dynamic_cast_void_ptr=no
10267
  ac_cv_cpp_dynamic_cast_void_ptr=no
10363
else
10268
else
10364
  cat > conftest.$ac_ext <<EOF
10269
  cat > conftest.$ac_ext <<EOF
10365
#line 10366 "configure"
10270
#line 10271 "configure"
10366
#include "confdefs.h"
10271
#include "confdefs.h"
10272
#ifdef __cplusplus
10273
extern "C" void exit(int);
10274
#endif
10367
class X { int i; public: virtual ~X() { } };
10275
class X { int i; public: virtual ~X() { } };
10368
                            class Y { int j; public: virtual ~Y() { } };
10276
                            class Y { int j; public: virtual ~Y() { } };
10369
                            class Z : public X, public Y { int k; };
10277
                            class Z : public X, public Y { int k; };
Lines 10378-10384 Link Here
10378
                                           ((void*)&mdo == dynamic_cast<void*>(suby))));
10286
                                           ((void*)&mdo == dynamic_cast<void*>(suby))));
10379
                            }
10287
                            }
10380
EOF
10288
EOF
10381
if { (eval echo configure:10382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
10289
if { (eval echo configure:10290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
10382
then
10290
then
10383
  ac_cv_cpp_dynamic_cast_void_ptr=yes
10291
  ac_cv_cpp_dynamic_cast_void_ptr=yes
10384
else
10292
else
Lines 10402-10420 Link Here
10402
10310
10403
10311
10404
echo $ac_n "checking whether C++ requires implementation of unused virtual methods""... $ac_c" 1>&6
10312
echo $ac_n "checking whether C++ requires implementation of unused virtual methods""... $ac_c" 1>&6
10405
echo "configure:10406: checking whether C++ requires implementation of unused virtual methods" >&5
10313
echo "configure:10314: checking whether C++ requires implementation of unused virtual methods" >&5
10406
if eval "test \"`echo '$''{'ac_cv_cpp_unused_required'+set}'`\" = set"; then
10314
if eval "test \"`echo '$''{'ac_cv_cpp_unused_required'+set}'`\" = set"; then
10407
  echo $ac_n "(cached) $ac_c" 1>&6
10315
  echo $ac_n "(cached) $ac_c" 1>&6
10408
else
10316
else
10409
  cat > conftest.$ac_ext <<EOF
10317
  cat > conftest.$ac_ext <<EOF
10410
#line 10411 "configure"
10318
#line 10319 "configure"
10411
#include "confdefs.h"
10319
#include "confdefs.h"
10412
class X {private: virtual void never_called();};
10320
class X {private: virtual void never_called();};
10413
int main() {
10321
int main() {
10414
X x;
10322
X x;
10415
; return 0; }
10323
; return 0; }
10416
EOF
10324
EOF
10417
if { (eval echo configure:10418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
10325
if { (eval echo configure:10326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
10418
  rm -rf conftest*
10326
  rm -rf conftest*
10419
  ac_cv_cpp_unused_required=no
10327
  ac_cv_cpp_unused_required=no
10420
else
10328
else
Lines 10437-10448 Link Here
10437
10345
10438
10346
10439
echo $ac_n "checking for trouble comparing to zero near std::operator!=()""... $ac_c" 1>&6
10347
echo $ac_n "checking for trouble comparing to zero near std::operator!=()""... $ac_c" 1>&6
10440
echo "configure:10441: checking for trouble comparing to zero near std::operator!=()" >&5
10348
echo "configure:10349: checking for trouble comparing to zero near std::operator!=()" >&5
10441
if eval "test \"`echo '$''{'ac_cv_trouble_comparing_to_zero'+set}'`\" = set"; then
10349
if eval "test \"`echo '$''{'ac_cv_trouble_comparing_to_zero'+set}'`\" = set"; then
10442
  echo $ac_n "(cached) $ac_c" 1>&6
10350
  echo $ac_n "(cached) $ac_c" 1>&6
10443
else
10351
else
10444
  cat > conftest.$ac_ext <<EOF
10352
  cat > conftest.$ac_ext <<EOF
10445
#line 10446 "configure"
10353
#line 10354 "configure"
10446
#include "confdefs.h"
10354
#include "confdefs.h"
10447
#include <algorithm>
10355
#include <algorithm>
10448
                                template <class T> class Foo {};
10356
                                template <class T> class Foo {};
Lines 10453-10459 Link Here
10453
Foo<int> f; return (0 != f);
10361
Foo<int> f; return (0 != f);
10454
; return 0; }
10362
; return 0; }
10455
EOF
10363
EOF
10456
if { (eval echo configure:10457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10364
if { (eval echo configure:10365: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10457
  rm -rf conftest*
10365
  rm -rf conftest*
10458
  ac_cv_trouble_comparing_to_zero=no
10366
  ac_cv_trouble_comparing_to_zero=no
10459
else
10367
else
Lines 10485-10503 Link Here
10485
10393
10486
10394
10487
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
10395
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
10488
echo "configure:10489: checking for LC_MESSAGES" >&5
10396
echo "configure:10397: checking for LC_MESSAGES" >&5
10489
if eval "test \"`echo '$''{'ac_cv_i18n_lc_messages'+set}'`\" = set"; then
10397
if eval "test \"`echo '$''{'ac_cv_i18n_lc_messages'+set}'`\" = set"; then
10490
  echo $ac_n "(cached) $ac_c" 1>&6
10398
  echo $ac_n "(cached) $ac_c" 1>&6
10491
else
10399
else
10492
  cat > conftest.$ac_ext <<EOF
10400
  cat > conftest.$ac_ext <<EOF
10493
#line 10494 "configure"
10401
#line 10402 "configure"
10494
#include "confdefs.h"
10402
#include "confdefs.h"
10495
#include <locale.h>
10403
#include <locale.h>
10496
int main() {
10404
int main() {
10497
int category = LC_MESSAGES;
10405
int category = LC_MESSAGES;
10498
; return 0; }
10406
; return 0; }
10499
EOF
10407
EOF
10500
if { (eval echo configure:10501: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10408
if { (eval echo configure:10409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
10501
  rm -rf conftest*
10409
  rm -rf conftest*
10502
  ac_cv_i18n_lc_messages=yes
10410
  ac_cv_i18n_lc_messages=yes
10503
else
10411
else
Lines 10573-10579 Link Here
10573
	# Extract the first word of "nspr-config", so it can be a program name with args.
10481
	# Extract the first word of "nspr-config", so it can be a program name with args.
10574
set dummy nspr-config; ac_word=$2
10482
set dummy nspr-config; ac_word=$2
10575
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
10483
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
10576
echo "configure:10577: checking for $ac_word" >&5
10484
echo "configure:10485: checking for $ac_word" >&5
10577
if eval "test \"`echo '$''{'ac_cv_path_NSPR_CONFIG'+set}'`\" = set"; then
10485
if eval "test \"`echo '$''{'ac_cv_path_NSPR_CONFIG'+set}'`\" = set"; then
10578
  echo $ac_n "(cached) $ac_c" 1>&6
10486
  echo $ac_n "(cached) $ac_c" 1>&6
10579
else
10487
else
Lines 10608-10614 Link Here
10608
10516
10609
	min_nspr_version=4.0.0
10517
	min_nspr_version=4.0.0
10610
	echo $ac_n "checking for NSPR - version >= $min_nspr_version (skipping)""... $ac_c" 1>&6
10518
	echo $ac_n "checking for NSPR - version >= $min_nspr_version (skipping)""... $ac_c" 1>&6
10611
echo "configure:10612: checking for NSPR - version >= $min_nspr_version (skipping)" >&5
10519
echo "configure:10520: checking for NSPR - version >= $min_nspr_version (skipping)" >&5
10612
10520
10613
	no_nspr=""
10521
	no_nspr=""
10614
	if test "$NSPR_CONFIG" = "no"; then
10522
	if test "$NSPR_CONFIG" = "no"; then
Lines 10675-10681 Link Here
10675
    SYSTEM_JPEG=
10583
    SYSTEM_JPEG=
10676
else
10584
else
10677
    echo $ac_n "checking for jpeg_destroy_compress in -ljpeg""... $ac_c" 1>&6
10585
    echo $ac_n "checking for jpeg_destroy_compress in -ljpeg""... $ac_c" 1>&6
10678
echo "configure:10679: checking for jpeg_destroy_compress in -ljpeg" >&5
10586
echo "configure:10587: checking for jpeg_destroy_compress in -ljpeg" >&5
10679
ac_lib_var=`echo jpeg'_'jpeg_destroy_compress | sed 'y%./+-%__p_%'`
10587
ac_lib_var=`echo jpeg'_'jpeg_destroy_compress | sed 'y%./+-%__p_%'`
10680
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
10588
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
10681
  echo $ac_n "(cached) $ac_c" 1>&6
10589
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 10683-10689 Link Here
10683
  ac_save_LIBS="$LIBS"
10591
  ac_save_LIBS="$LIBS"
10684
LIBS="-ljpeg $JPEG_LIBS $LIBS"
10592
LIBS="-ljpeg $JPEG_LIBS $LIBS"
10685
cat > conftest.$ac_ext <<EOF
10593
cat > conftest.$ac_ext <<EOF
10686
#line 10687 "configure"
10594
#line 10595 "configure"
10687
#include "confdefs.h"
10595
#include "confdefs.h"
10688
/* Override any gcc2 internal prototype to avoid an error.  */
10596
/* Override any gcc2 internal prototype to avoid an error.  */
10689
/* We use char because int might match the return type of a gcc2
10597
/* We use char because int might match the return type of a gcc2
Lines 10694-10700 Link Here
10694
jpeg_destroy_compress()
10602
jpeg_destroy_compress()
10695
; return 0; }
10603
; return 0; }
10696
EOF
10604
EOF
10697
if { (eval echo configure:10698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
10605
if { (eval echo configure:10606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
10698
  rm -rf conftest*
10606
  rm -rf conftest*
10699
  eval "ac_cv_lib_$ac_lib_var=yes"
10607
  eval "ac_cv_lib_$ac_lib_var=yes"
10700
else
10608
else
Lines 10723-10729 Link Here
10723
  SYSTEM_JPEG= 
10631
  SYSTEM_JPEG= 
10724
else
10632
else
10725
  cat > conftest.$ac_ext <<EOF
10633
  cat > conftest.$ac_ext <<EOF
10726
#line 10727 "configure"
10634
#line 10635 "configure"
10727
#include "confdefs.h"
10635
#include "confdefs.h"
10728
#include <stdio.h>
10636
#include <stdio.h>
10729
	#include <sys/types.h>
10637
	#include <sys/types.h>
Lines 10737-10743 Link Here
10737
	}
10645
	}
10738
	
10646
	
10739
EOF
10647
EOF
10740
if { (eval echo configure:10741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
10648
if { (eval echo configure:10649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
10741
then
10649
then
10742
  SYSTEM_JPEG=1
10650
  SYSTEM_JPEG=1
10743
else
10651
else
Lines 10778-10784 Link Here
10778
    SYSTEM_ZLIB=
10686
    SYSTEM_ZLIB=
10779
else
10687
else
10780
    echo $ac_n "checking for gzread in -lz""... $ac_c" 1>&6
10688
    echo $ac_n "checking for gzread in -lz""... $ac_c" 1>&6
10781
echo "configure:10782: checking for gzread in -lz" >&5
10689
echo "configure:10690: checking for gzread in -lz" >&5
10782
ac_lib_var=`echo z'_'gzread | sed 'y%./+-%__p_%'`
10690
ac_lib_var=`echo z'_'gzread | sed 'y%./+-%__p_%'`
10783
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
10691
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
10784
  echo $ac_n "(cached) $ac_c" 1>&6
10692
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 10786-10792 Link Here
10786
  ac_save_LIBS="$LIBS"
10694
  ac_save_LIBS="$LIBS"
10787
LIBS="-lz $ZLIB_LIBS $LIBS"
10695
LIBS="-lz $ZLIB_LIBS $LIBS"
10788
cat > conftest.$ac_ext <<EOF
10696
cat > conftest.$ac_ext <<EOF
10789
#line 10790 "configure"
10697
#line 10698 "configure"
10790
#include "confdefs.h"
10698
#include "confdefs.h"
10791
/* Override any gcc2 internal prototype to avoid an error.  */
10699
/* Override any gcc2 internal prototype to avoid an error.  */
10792
/* We use char because int might match the return type of a gcc2
10700
/* We use char because int might match the return type of a gcc2
Lines 10797-10803 Link Here
10797
gzread()
10705
gzread()
10798
; return 0; }
10706
; return 0; }
10799
EOF
10707
EOF
10800
if { (eval echo configure:10801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
10708
if { (eval echo configure:10709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
10801
  rm -rf conftest*
10709
  rm -rf conftest*
10802
  eval "ac_cv_lib_$ac_lib_var=yes"
10710
  eval "ac_cv_lib_$ac_lib_var=yes"
10803
else
10711
else
Lines 10825-10831 Link Here
10825
  SYSTEM_ZLIB= 
10733
  SYSTEM_ZLIB= 
10826
else
10734
else
10827
  cat > conftest.$ac_ext <<EOF
10735
  cat > conftest.$ac_ext <<EOF
10828
#line 10829 "configure"
10736
#line 10737 "configure"
10829
#include "confdefs.h"
10737
#include "confdefs.h"
10830
10738
10831
    #include <stdio.h>
10739
    #include <stdio.h>
Lines 10846-10852 Link Here
10846
    }
10754
    }
10847
    
10755
    
10848
EOF
10756
EOF
10849
if { (eval echo configure:10850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
10757
if { (eval echo configure:10758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
10850
then
10758
then
10851
  SYSTEM_ZLIB=1
10759
  SYSTEM_ZLIB=1
10852
else
10760
else
Lines 10889-10895 Link Here
10889
    SYSTEM_PNG=
10797
    SYSTEM_PNG=
10890
else
10798
else
10891
    echo $ac_n "checking for png_get_valid in -lpng""... $ac_c" 1>&6
10799
    echo $ac_n "checking for png_get_valid in -lpng""... $ac_c" 1>&6
10892
echo "configure:10893: checking for png_get_valid in -lpng" >&5
10800
echo "configure:10801: checking for png_get_valid in -lpng" >&5
10893
ac_lib_var=`echo png'_'png_get_valid | sed 'y%./+-%__p_%'`
10801
ac_lib_var=`echo png'_'png_get_valid | sed 'y%./+-%__p_%'`
10894
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
10802
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
10895
  echo $ac_n "(cached) $ac_c" 1>&6
10803
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 10897-10903 Link Here
10897
  ac_save_LIBS="$LIBS"
10805
  ac_save_LIBS="$LIBS"
10898
LIBS="-lpng $PNG_LIBS $LIBS"
10806
LIBS="-lpng $PNG_LIBS $LIBS"
10899
cat > conftest.$ac_ext <<EOF
10807
cat > conftest.$ac_ext <<EOF
10900
#line 10901 "configure"
10808
#line 10809 "configure"
10901
#include "confdefs.h"
10809
#include "confdefs.h"
10902
/* Override any gcc2 internal prototype to avoid an error.  */
10810
/* Override any gcc2 internal prototype to avoid an error.  */
10903
/* We use char because int might match the return type of a gcc2
10811
/* We use char because int might match the return type of a gcc2
Lines 10908-10914 Link Here
10908
png_get_valid()
10816
png_get_valid()
10909
; return 0; }
10817
; return 0; }
10910
EOF
10818
EOF
10911
if { (eval echo configure:10912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
10819
if { (eval echo configure:10820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
10912
  rm -rf conftest*
10820
  rm -rf conftest*
10913
  eval "ac_cv_lib_$ac_lib_var=yes"
10821
  eval "ac_cv_lib_$ac_lib_var=yes"
10914
else
10822
else
Lines 10936-10942 Link Here
10936
  SYSTEM_PNG= 
10844
  SYSTEM_PNG= 
10937
else
10845
else
10938
  cat > conftest.$ac_ext <<EOF
10846
  cat > conftest.$ac_ext <<EOF
10939
#line 10940 "configure"
10847
#line 10848 "configure"
10940
#include "confdefs.h"
10848
#include "confdefs.h"
10941
#include <stdio.h>
10849
#include <stdio.h>
10942
	#include <sys/types.h>
10850
	#include <sys/types.h>
Lines 10950-10956 Link Here
10950
	}
10858
	}
10951
	
10859
	
10952
EOF
10860
EOF
10953
if { (eval echo configure:10954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
10861
if { (eval echo configure:10862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
10954
then
10862
then
10955
  SYSTEM_PNG=1
10863
  SYSTEM_PNG=1
10956
else
10864
else
Lines 11132-11138 Link Here
11132
  # Extract the first word of "gtk-config", so it can be a program name with args.
11040
  # Extract the first word of "gtk-config", so it can be a program name with args.
11133
set dummy gtk-config; ac_word=$2
11041
set dummy gtk-config; ac_word=$2
11134
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11042
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11135
echo "configure:11136: checking for $ac_word" >&5
11043
echo "configure:11044: checking for $ac_word" >&5
11136
if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
11044
if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
11137
  echo $ac_n "(cached) $ac_c" 1>&6
11045
  echo $ac_n "(cached) $ac_c" 1>&6
11138
else
11046
else
Lines 11167-11173 Link Here
11167
11075
11168
  min_gtk_version=$GTK_VERSION
11076
  min_gtk_version=$GTK_VERSION
11169
  echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6
11077
  echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6
11170
echo "configure:11171: checking for GTK - version >= $min_gtk_version" >&5
11078
echo "configure:11079: checking for GTK - version >= $min_gtk_version" >&5
11171
  no_gtk=""
11079
  no_gtk=""
11172
  if test "$GTK_CONFIG" = "no" ; then
11080
  if test "$GTK_CONFIG" = "no" ; then
11173
    no_gtk=yes
11081
    no_gtk=yes
Lines 11190-11196 Link Here
11190
  echo $ac_n "cross compiling; assumed OK... $ac_c"
11098
  echo $ac_n "cross compiling; assumed OK... $ac_c"
11191
else
11099
else
11192
  cat > conftest.$ac_ext <<EOF
11100
  cat > conftest.$ac_ext <<EOF
11193
#line 11194 "configure"
11101
#line 11102 "configure"
11194
#include "confdefs.h"
11102
#include "confdefs.h"
11195
11103
11196
#include <gtk/gtk.h>
11104
#include <gtk/gtk.h>
Lines 11268-11274 Link Here
11268
}
11176
}
11269
11177
11270
EOF
11178
EOF
11271
if { (eval echo configure:11272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
11179
if { (eval echo configure:11180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
11272
then
11180
then
11273
  :
11181
  :
11274
else
11182
else
Lines 11303-11309 Link Here
11303
          CFLAGS="$CFLAGS $GTK_CFLAGS"
11211
          CFLAGS="$CFLAGS $GTK_CFLAGS"
11304
          LIBS="$LIBS $GTK_LIBS"
11212
          LIBS="$LIBS $GTK_LIBS"
11305
          cat > conftest.$ac_ext <<EOF
11213
          cat > conftest.$ac_ext <<EOF
11306
#line 11307 "configure"
11214
#line 11215 "configure"
11307
#include "confdefs.h"
11215
#include "confdefs.h"
11308
11216
11309
#include <gtk/gtk.h>
11217
#include <gtk/gtk.h>
Lines 11313-11319 Link Here
11313
 return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); 
11221
 return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); 
11314
; return 0; }
11222
; return 0; }
11315
EOF
11223
EOF
11316
if { (eval echo configure:11317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
11224
if { (eval echo configure:11225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
11317
  rm -rf conftest*
11225
  rm -rf conftest*
11318
   echo "*** The test program compiled, but did not run. This usually means"
11226
   echo "*** The test program compiled, but did not run. This usually means"
11319
          echo "*** that the run-time linker is not finding GTK or finding the wrong"
11227
          echo "*** that the run-time linker is not finding GTK or finding the wrong"
Lines 11365-11371 Link Here
11365
    # Extract the first word of "pkg-config", so it can be a program name with args.
11273
    # Extract the first word of "pkg-config", so it can be a program name with args.
11366
set dummy pkg-config; ac_word=$2
11274
set dummy pkg-config; ac_word=$2
11367
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11275
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11368
echo "configure:11369: checking for $ac_word" >&5
11276
echo "configure:11277: checking for $ac_word" >&5
11369
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
11277
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
11370
  echo $ac_n "(cached) $ac_c" 1>&6
11278
  echo $ac_n "(cached) $ac_c" 1>&6
11371
else
11279
else
Lines 11409-11427 Link Here
11409
     PKG_CONFIG_MIN_VERSION=0.9.0
11317
     PKG_CONFIG_MIN_VERSION=0.9.0
11410
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
11318
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
11411
        echo $ac_n "checking for gtk+-2.0 >= 1.3.7""... $ac_c" 1>&6
11319
        echo $ac_n "checking for gtk+-2.0 >= 1.3.7""... $ac_c" 1>&6
11412
echo "configure:11413: checking for gtk+-2.0 >= 1.3.7" >&5
11320
echo "configure:11321: checking for gtk+-2.0 >= 1.3.7" >&5
11413
11321
11414
        if $PKG_CONFIG --exists "gtk+-2.0 >= 1.3.7" ; then
11322
        if $PKG_CONFIG --exists "gtk+-2.0 >= 1.3.7" ; then
11415
            echo "$ac_t""yes" 1>&6
11323
            echo "$ac_t""yes" 1>&6
11416
            succeeded=yes
11324
            succeeded=yes
11417
11325
11418
            echo $ac_n "checking MOZ_GTK2_CFLAGS""... $ac_c" 1>&6
11326
            echo $ac_n "checking MOZ_GTK2_CFLAGS""... $ac_c" 1>&6
11419
echo "configure:11420: checking MOZ_GTK2_CFLAGS" >&5
11327
echo "configure:11328: checking MOZ_GTK2_CFLAGS" >&5
11420
            MOZ_GTK2_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 1.3.7"`
11328
            MOZ_GTK2_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 1.3.7"`
11421
            echo "$ac_t""$MOZ_GTK2_CFLAGS" 1>&6
11329
            echo "$ac_t""$MOZ_GTK2_CFLAGS" 1>&6
11422
11330
11423
            echo $ac_n "checking MOZ_GTK2_LIBS""... $ac_c" 1>&6
11331
            echo $ac_n "checking MOZ_GTK2_LIBS""... $ac_c" 1>&6
11424
echo "configure:11425: checking MOZ_GTK2_LIBS" >&5
11332
echo "configure:11333: checking MOZ_GTK2_LIBS" >&5
11425
            MOZ_GTK2_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 1.3.7"`
11333
            MOZ_GTK2_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 1.3.7"`
11426
            echo "$ac_t""$MOZ_GTK2_LIBS" 1>&6
11334
            echo "$ac_t""$MOZ_GTK2_LIBS" 1>&6
11427
        else
11335
        else
Lines 11727-11733 Link Here
11727
    # Extract the first word of "pkg-config", so it can be a program name with args.
11635
    # Extract the first word of "pkg-config", so it can be a program name with args.
11728
set dummy pkg-config; ac_word=$2
11636
set dummy pkg-config; ac_word=$2
11729
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11637
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11730
echo "configure:11731: checking for $ac_word" >&5
11638
echo "configure:11639: checking for $ac_word" >&5
11731
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
11639
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
11732
  echo $ac_n "(cached) $ac_c" 1>&6
11640
  echo $ac_n "(cached) $ac_c" 1>&6
11733
else
11641
else
Lines 11771-11789 Link Here
11771
     PKG_CONFIG_MIN_VERSION=0.9.0
11679
     PKG_CONFIG_MIN_VERSION=0.9.0
11772
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
11680
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
11773
        echo $ac_n "checking for xft""... $ac_c" 1>&6
11681
        echo $ac_n "checking for xft""... $ac_c" 1>&6
11774
echo "configure:11775: checking for xft" >&5
11682
echo "configure:11683: checking for xft" >&5
11775
11683
11776
        if $PKG_CONFIG --exists "xft" ; then
11684
        if $PKG_CONFIG --exists "xft" ; then
11777
            echo "$ac_t""yes" 1>&6
11685
            echo "$ac_t""yes" 1>&6
11778
            succeeded=yes
11686
            succeeded=yes
11779
11687
11780
            echo $ac_n "checking MOZ_XFT_CFLAGS""... $ac_c" 1>&6
11688
            echo $ac_n "checking MOZ_XFT_CFLAGS""... $ac_c" 1>&6
11781
echo "configure:11782: checking MOZ_XFT_CFLAGS" >&5
11689
echo "configure:11690: checking MOZ_XFT_CFLAGS" >&5
11782
            MOZ_XFT_CFLAGS=`$PKG_CONFIG --cflags "xft"`
11690
            MOZ_XFT_CFLAGS=`$PKG_CONFIG --cflags "xft"`
11783
            echo "$ac_t""$MOZ_XFT_CFLAGS" 1>&6
11691
            echo "$ac_t""$MOZ_XFT_CFLAGS" 1>&6
11784
11692
11785
            echo $ac_n "checking MOZ_XFT_LIBS""... $ac_c" 1>&6
11693
            echo $ac_n "checking MOZ_XFT_LIBS""... $ac_c" 1>&6
11786
echo "configure:11787: checking MOZ_XFT_LIBS" >&5
11694
echo "configure:11695: checking MOZ_XFT_LIBS" >&5
11787
            MOZ_XFT_LIBS=`$PKG_CONFIG --libs "xft"`
11695
            MOZ_XFT_LIBS=`$PKG_CONFIG --libs "xft"`
11788
            echo "$ac_t""$MOZ_XFT_LIBS" 1>&6
11696
            echo "$ac_t""$MOZ_XFT_LIBS" 1>&6
11789
        else
11697
        else
Lines 11817-11823 Link Here
11817
    # Extract the first word of "pkg-config", so it can be a program name with args.
11725
    # Extract the first word of "pkg-config", so it can be a program name with args.
11818
set dummy pkg-config; ac_word=$2
11726
set dummy pkg-config; ac_word=$2
11819
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11727
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11820
echo "configure:11821: checking for $ac_word" >&5
11728
echo "configure:11729: checking for $ac_word" >&5
11821
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
11729
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
11822
  echo $ac_n "(cached) $ac_c" 1>&6
11730
  echo $ac_n "(cached) $ac_c" 1>&6
11823
else
11731
else
Lines 11861-11879 Link Here
11861
     PKG_CONFIG_MIN_VERSION=0.9.0
11769
     PKG_CONFIG_MIN_VERSION=0.9.0
11862
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
11770
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
11863
        echo $ac_n "checking for pango >= 1.1.0""... $ac_c" 1>&6
11771
        echo $ac_n "checking for pango >= 1.1.0""... $ac_c" 1>&6
11864
echo "configure:11865: checking for pango >= 1.1.0" >&5
11772
echo "configure:11773: checking for pango >= 1.1.0" >&5
11865
11773
11866
        if $PKG_CONFIG --exists "pango >= 1.1.0" ; then
11774
        if $PKG_CONFIG --exists "pango >= 1.1.0" ; then
11867
            echo "$ac_t""yes" 1>&6
11775
            echo "$ac_t""yes" 1>&6
11868
            succeeded=yes
11776
            succeeded=yes
11869
11777
11870
            echo $ac_n "checking _PANGOCHK_CFLAGS""... $ac_c" 1>&6
11778
            echo $ac_n "checking _PANGOCHK_CFLAGS""... $ac_c" 1>&6
11871
echo "configure:11872: checking _PANGOCHK_CFLAGS" >&5
11779
echo "configure:11780: checking _PANGOCHK_CFLAGS" >&5
11872
            _PANGOCHK_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.1.0"`
11780
            _PANGOCHK_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.1.0"`
11873
            echo "$ac_t""$_PANGOCHK_CFLAGS" 1>&6
11781
            echo "$ac_t""$_PANGOCHK_CFLAGS" 1>&6
11874
11782
11875
            echo $ac_n "checking _PANGOCHK_LIBS""... $ac_c" 1>&6
11783
            echo $ac_n "checking _PANGOCHK_LIBS""... $ac_c" 1>&6
11876
echo "configure:11877: checking _PANGOCHK_LIBS" >&5
11784
echo "configure:11785: checking _PANGOCHK_LIBS" >&5
11877
            _PANGOCHK_LIBS=`$PKG_CONFIG --libs "pango >= 1.1.0"`
11785
            _PANGOCHK_LIBS=`$PKG_CONFIG --libs "pango >= 1.1.0"`
11878
            echo "$ac_t""$_PANGOCHK_LIBS" 1>&6
11786
            echo "$ac_t""$_PANGOCHK_LIBS" 1>&6
11879
        else
11787
        else
Lines 11906-11911 Link Here
11906
11814
11907
11815
11908
11816
11817
# Check whether --enable-pango or --disable-pango was given.
11818
if test "${enable_pango+set}" = set; then
11819
  enableval="$enable_pango"
11820
  if test "$enableval" = "yes"; then
11821
    MOZ_ENABLE_PANGO=1
11822
  elif test "$enableval" = "no"; then
11823
    MOZ_ENABLE_PANGO=
11824
  else
11825
    { echo "configure: error: Option, pango, does not take an argument ($enableval)." 1>&2; exit 1; }
11826
  fi
11827
fi
11828
11829
11830
if test "$MOZ_ENABLE_PANGO"
11831
then
11832
    cat >> confdefs.h <<\EOF
11833
#define MOZ_ENABLE_PANGO 1
11834
EOF
11835
11836
    
11837
  succeeded=no
11838
11839
  if test -z "$PKG_CONFIG"; then
11840
    # Extract the first word of "pkg-config", so it can be a program name with args.
11841
set dummy pkg-config; ac_word=$2
11842
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
11843
echo "configure:11844: checking for $ac_word" >&5
11844
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
11845
  echo $ac_n "(cached) $ac_c" 1>&6
11846
else
11847
  case "$PKG_CONFIG" in
11848
  /*)
11849
  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
11850
  ;;
11851
  ?:/*)			 
11852
  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a dos path.
11853
  ;;
11854
  *)
11855
  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
11856
  ac_dummy="$PATH"
11857
  for ac_dir in $ac_dummy; do 
11858
    test -z "$ac_dir" && ac_dir=.
11859
    if test -f $ac_dir/$ac_word; then
11860
      ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
11861
      break
11862
    fi
11863
  done
11864
  IFS="$ac_save_ifs"
11865
  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
11866
  ;;
11867
esac
11868
fi
11869
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
11870
if test -n "$PKG_CONFIG"; then
11871
  echo "$ac_t""$PKG_CONFIG" 1>&6
11872
else
11873
  echo "$ac_t""no" 1>&6
11874
fi
11875
11876
  fi
11877
11878
  if test "$PKG_CONFIG" = "no" ; then
11879
     echo "*** The pkg-config script could not be found. Make sure it is"
11880
     echo "*** in your path, or set the PKG_CONFIG environment variable"
11881
     echo "*** to the full path to pkg-config."
11882
     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
11883
  else
11884
     PKG_CONFIG_MIN_VERSION=0.9.0
11885
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
11886
        echo $ac_n "checking for pango >= 1.5.0""... $ac_c" 1>&6
11887
echo "configure:11888: checking for pango >= 1.5.0" >&5
11888
11889
        if $PKG_CONFIG --exists "pango >= 1.5.0" ; then
11890
            echo "$ac_t""yes" 1>&6
11891
            succeeded=yes
11892
11893
            echo $ac_n "checking MOZ_PANGO_CFLAGS""... $ac_c" 1>&6
11894
echo "configure:11895: checking MOZ_PANGO_CFLAGS" >&5
11895
            MOZ_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.5.0"`
11896
            echo "$ac_t""$MOZ_PANGO_CFLAGS" 1>&6
11897
11898
            echo $ac_n "checking MOZ_PANGO_LIBS""... $ac_c" 1>&6
11899
echo "configure:11900: checking MOZ_PANGO_LIBS" >&5
11900
            MOZ_PANGO_LIBS=`$PKG_CONFIG --libs "pango >= 1.5.0"`
11901
            echo "$ac_t""$MOZ_PANGO_LIBS" 1>&6
11902
        else
11903
            MOZ_PANGO_CFLAGS=""
11904
            MOZ_PANGO_LIBS=""
11905
            ## If we have a custom action on failure, don't print errors, but 
11906
            ## do set a variable so people can do so.
11907
            MOZ_PANGO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pango >= 1.5.0"`
11908
            echo $MOZ_PANGO_PKG_ERRORS
11909
        fi
11910
11911
        
11912
        
11913
     else
11914
        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
11915
        echo "*** See http://www.freedesktop.org/software/pkgconfig"
11916
     fi
11917
  fi
11918
11919
  if test $succeeded = yes; then
11920
     :
11921
  else
11922
     { echo "configure: error: Library requirements (pango >= 1.5.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." 1>&2; exit 1; }
11923
  fi
11924
11925
11926
        _SAVE_CFLAGS=$CFLAGS
11927
    _SAVE_LDFLAGS=$LDFLAGS
11928
    CFLAGS="$MOZ_PANGO_CFLAGS $CFLAGS"
11929
    LDFLAGS="$MOZ_PANGO_LIBS $LDFLAGS"
11930
    echo $ac_n "checking for pango_fc_font_map_add_decoder_find_func in -lpangoft2-1.0""... $ac_c" 1>&6
11931
echo "configure:11932: checking for pango_fc_font_map_add_decoder_find_func in -lpangoft2-1.0" >&5
11932
ac_lib_var=`echo pangoft2-1.0'_'pango_fc_font_map_add_decoder_find_func | sed 'y%./+-%__p_%'`
11933
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
11934
  echo $ac_n "(cached) $ac_c" 1>&6
11935
else
11936
  ac_save_LIBS="$LIBS"
11937
LIBS="-lpangoft2-1.0  $LIBS"
11938
cat > conftest.$ac_ext <<EOF
11939
#line 11940 "configure"
11940
#include "confdefs.h"
11941
/* Override any gcc2 internal prototype to avoid an error.  */
11942
/* We use char because int might match the return type of a gcc2
11943
    builtin and then its argument prototype would still apply.  */
11944
char pango_fc_font_map_add_decoder_find_func();
11945
11946
int main() {
11947
pango_fc_font_map_add_decoder_find_func()
11948
; return 0; }
11949
EOF
11950
if { (eval echo configure:11951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
11951
  rm -rf conftest*
11952
  eval "ac_cv_lib_$ac_lib_var=yes"
11953
else
11954
  echo "configure: failed program was:" >&5
11955
  cat conftest.$ac_ext >&5
11956
  rm -rf conftest*
11957
  eval "ac_cv_lib_$ac_lib_var=no"
11958
fi
11959
rm -f conftest*
11960
LIBS="$ac_save_LIBS"
11961
11962
fi
11963
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
11964
  echo "$ac_t""yes" 1>&6
11965
    ac_tr_lib=HAVE_LIB`echo pangoft2-1.0 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
11966
    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
11967
  cat >> confdefs.h <<EOF
11968
#define $ac_tr_lib 1
11969
EOF
11970
11971
  LIBS="-lpangoft2-1.0 $LIBS"
11972
11973
else
11974
  echo "$ac_t""no" 1>&6
11975
{ echo "configure: error: Your Pango is too old. Sorry." 1>&2; exit 1; }
11976
fi
11977
11978
    CFLAGS=$_SAVE_CFLAGS
11979
    LDFLAGS=$_SAVE_LDFLAGS
11980
11981
    
11982
    
11983
    
11984
fi
11985
11909
MOZ_ENABLE_COREXFONTS=${MOZ_ENABLE_COREXFONTS-1}
11986
MOZ_ENABLE_COREXFONTS=${MOZ_ENABLE_COREXFONTS-1}
11910
if test "$MOZ_ENABLE_COREXFONTS"
11987
if test "$MOZ_ENABLE_COREXFONTS"
11911
then
11988
then
Lines 11937-11943 Link Here
11937
    _SAVE_LDFLAGS="$LDFLAGS"
12014
    _SAVE_LDFLAGS="$LDFLAGS"
11938
    LDFLAGS="$XLDFLAGS $LDFLAGS"
12015
    LDFLAGS="$XLDFLAGS $LDFLAGS"
11939
    echo $ac_n "checking for XpGetPrinterList in -lXp""... $ac_c" 1>&6
12016
    echo $ac_n "checking for XpGetPrinterList in -lXp""... $ac_c" 1>&6
11940
echo "configure:11941: checking for XpGetPrinterList in -lXp" >&5
12017
echo "configure:12018: checking for XpGetPrinterList in -lXp" >&5
11941
ac_lib_var=`echo Xp'_'XpGetPrinterList | sed 'y%./+-%__p_%'`
12018
ac_lib_var=`echo Xp'_'XpGetPrinterList | sed 'y%./+-%__p_%'`
11942
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
12019
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
11943
  echo $ac_n "(cached) $ac_c" 1>&6
12020
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 11945-11951 Link Here
11945
  ac_save_LIBS="$LIBS"
12022
  ac_save_LIBS="$LIBS"
11946
LIBS="-lXp $XEXT_LIBS $XLIBS $LIBS"
12023
LIBS="-lXp $XEXT_LIBS $XLIBS $LIBS"
11947
cat > conftest.$ac_ext <<EOF
12024
cat > conftest.$ac_ext <<EOF
11948
#line 11949 "configure"
12025
#line 12026 "configure"
11949
#include "confdefs.h"
12026
#include "confdefs.h"
11950
/* Override any gcc2 internal prototype to avoid an error.  */
12027
/* Override any gcc2 internal prototype to avoid an error.  */
11951
/* We use char because int might match the return type of a gcc2
12028
/* We use char because int might match the return type of a gcc2
Lines 11956-11962 Link Here
11956
XpGetPrinterList()
12033
XpGetPrinterList()
11957
; return 0; }
12034
; return 0; }
11958
EOF
12035
EOF
11959
if { (eval echo configure:11960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
12036
if { (eval echo configure:12037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
11960
  rm -rf conftest*
12037
  rm -rf conftest*
11961
  eval "ac_cv_lib_$ac_lib_var=yes"
12038
  eval "ac_cv_lib_$ac_lib_var=yes"
11962
else
12039
else
Lines 12029-12035 Link Here
12029
    # Extract the first word of "pkg-config", so it can be a program name with args.
12106
    # Extract the first word of "pkg-config", so it can be a program name with args.
12030
set dummy pkg-config; ac_word=$2
12107
set dummy pkg-config; ac_word=$2
12031
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
12108
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
12032
echo "configure:12033: checking for $ac_word" >&5
12109
echo "configure:12110: checking for $ac_word" >&5
12033
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
12110
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
12034
  echo $ac_n "(cached) $ac_c" 1>&6
12111
  echo $ac_n "(cached) $ac_c" 1>&6
12035
else
12112
else
Lines 12073-12091 Link Here
12073
     PKG_CONFIG_MIN_VERSION=0.9.0
12150
     PKG_CONFIG_MIN_VERSION=0.9.0
12074
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
12151
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
12075
        echo $ac_n "checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION""... $ac_c" 1>&6
12152
        echo $ac_n "checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION""... $ac_c" 1>&6
12076
echo "configure:12077: checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" >&5
12153
echo "configure:12154: checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" >&5
12077
12154
12078
        if $PKG_CONFIG --exists "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" ; then
12155
        if $PKG_CONFIG --exists "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" ; then
12079
            echo "$ac_t""yes" 1>&6
12156
            echo "$ac_t""yes" 1>&6
12080
            succeeded=yes
12157
            succeeded=yes
12081
12158
12082
            echo $ac_n "checking MOZ_GNOMEVFS_CFLAGS""... $ac_c" 1>&6
12159
            echo $ac_n "checking MOZ_GNOMEVFS_CFLAGS""... $ac_c" 1>&6
12083
echo "configure:12084: checking MOZ_GNOMEVFS_CFLAGS" >&5
12160
echo "configure:12161: checking MOZ_GNOMEVFS_CFLAGS" >&5
12084
            MOZ_GNOMEVFS_CFLAGS=`$PKG_CONFIG --cflags "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION"`
12161
            MOZ_GNOMEVFS_CFLAGS=`$PKG_CONFIG --cflags "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION"`
12085
            echo "$ac_t""$MOZ_GNOMEVFS_CFLAGS" 1>&6
12162
            echo "$ac_t""$MOZ_GNOMEVFS_CFLAGS" 1>&6
12086
12163
12087
            echo $ac_n "checking MOZ_GNOMEVFS_LIBS""... $ac_c" 1>&6
12164
            echo $ac_n "checking MOZ_GNOMEVFS_LIBS""... $ac_c" 1>&6
12088
echo "configure:12089: checking MOZ_GNOMEVFS_LIBS" >&5
12165
echo "configure:12166: checking MOZ_GNOMEVFS_LIBS" >&5
12089
            MOZ_GNOMEVFS_LIBS=`$PKG_CONFIG --libs "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION"`
12166
            MOZ_GNOMEVFS_LIBS=`$PKG_CONFIG --libs "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION"`
12090
            echo "$ac_t""$MOZ_GNOMEVFS_LIBS" 1>&6
12167
            echo "$ac_t""$MOZ_GNOMEVFS_LIBS" 1>&6
12091
        else
12168
        else
Lines 12133-12139 Link Here
12133
    # Extract the first word of "pkg-config", so it can be a program name with args.
12210
    # Extract the first word of "pkg-config", so it can be a program name with args.
12134
set dummy pkg-config; ac_word=$2
12211
set dummy pkg-config; ac_word=$2
12135
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
12212
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
12136
echo "configure:12137: checking for $ac_word" >&5
12213
echo "configure:12214: checking for $ac_word" >&5
12137
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
12214
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
12138
  echo $ac_n "(cached) $ac_c" 1>&6
12215
  echo $ac_n "(cached) $ac_c" 1>&6
12139
else
12216
else
Lines 12177-12195 Link Here
12177
     PKG_CONFIG_MIN_VERSION=0.9.0
12254
     PKG_CONFIG_MIN_VERSION=0.9.0
12178
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
12255
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
12179
        echo $ac_n "checking for gconf-2.0 >= $GCONF_VERSION""... $ac_c" 1>&6
12256
        echo $ac_n "checking for gconf-2.0 >= $GCONF_VERSION""... $ac_c" 1>&6
12180
echo "configure:12181: checking for gconf-2.0 >= $GCONF_VERSION" >&5
12257
echo "configure:12258: checking for gconf-2.0 >= $GCONF_VERSION" >&5
12181
12258
12182
        if $PKG_CONFIG --exists "gconf-2.0 >= $GCONF_VERSION" ; then
12259
        if $PKG_CONFIG --exists "gconf-2.0 >= $GCONF_VERSION" ; then
12183
            echo "$ac_t""yes" 1>&6
12260
            echo "$ac_t""yes" 1>&6
12184
            succeeded=yes
12261
            succeeded=yes
12185
12262
12186
            echo $ac_n "checking MOZ_GCONF_CFLAGS""... $ac_c" 1>&6
12263
            echo $ac_n "checking MOZ_GCONF_CFLAGS""... $ac_c" 1>&6
12187
echo "configure:12188: checking MOZ_GCONF_CFLAGS" >&5
12264
echo "configure:12265: checking MOZ_GCONF_CFLAGS" >&5
12188
            MOZ_GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0 >= $GCONF_VERSION"`
12265
            MOZ_GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0 >= $GCONF_VERSION"`
12189
            echo "$ac_t""$MOZ_GCONF_CFLAGS" 1>&6
12266
            echo "$ac_t""$MOZ_GCONF_CFLAGS" 1>&6
12190
12267
12191
            echo $ac_n "checking MOZ_GCONF_LIBS""... $ac_c" 1>&6
12268
            echo $ac_n "checking MOZ_GCONF_LIBS""... $ac_c" 1>&6
12192
echo "configure:12193: checking MOZ_GCONF_LIBS" >&5
12269
echo "configure:12270: checking MOZ_GCONF_LIBS" >&5
12193
            MOZ_GCONF_LIBS=`$PKG_CONFIG --libs "gconf-2.0 >= $GCONF_VERSION"`
12270
            MOZ_GCONF_LIBS=`$PKG_CONFIG --libs "gconf-2.0 >= $GCONF_VERSION"`
12194
            echo "$ac_t""$MOZ_GCONF_LIBS" 1>&6
12271
            echo "$ac_t""$MOZ_GCONF_LIBS" 1>&6
12195
        else
12272
        else
Lines 12233-12239 Link Here
12233
    # Extract the first word of "pkg-config", so it can be a program name with args.
12310
    # Extract the first word of "pkg-config", so it can be a program name with args.
12234
set dummy pkg-config; ac_word=$2
12311
set dummy pkg-config; ac_word=$2
12235
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
12312
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
12236
echo "configure:12237: checking for $ac_word" >&5
12313
echo "configure:12314: checking for $ac_word" >&5
12237
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
12314
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
12238
  echo $ac_n "(cached) $ac_c" 1>&6
12315
  echo $ac_n "(cached) $ac_c" 1>&6
12239
else
12316
else
Lines 12277-12295 Link Here
12277
     PKG_CONFIG_MIN_VERSION=0.9.0
12354
     PKG_CONFIG_MIN_VERSION=0.9.0
12278
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
12355
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
12279
        echo $ac_n "checking for libgnome-2.0 >= $LIBGNOME_VERSION""... $ac_c" 1>&6
12356
        echo $ac_n "checking for libgnome-2.0 >= $LIBGNOME_VERSION""... $ac_c" 1>&6
12280
echo "configure:12281: checking for libgnome-2.0 >= $LIBGNOME_VERSION" >&5
12357
echo "configure:12358: checking for libgnome-2.0 >= $LIBGNOME_VERSION" >&5
12281
12358
12282
        if $PKG_CONFIG --exists "libgnome-2.0 >= $LIBGNOME_VERSION" ; then
12359
        if $PKG_CONFIG --exists "libgnome-2.0 >= $LIBGNOME_VERSION" ; then
12283
            echo "$ac_t""yes" 1>&6
12360
            echo "$ac_t""yes" 1>&6
12284
            succeeded=yes
12361
            succeeded=yes
12285
12362
12286
            echo $ac_n "checking MOZ_LIBGNOME_CFLAGS""... $ac_c" 1>&6
12363
            echo $ac_n "checking MOZ_LIBGNOME_CFLAGS""... $ac_c" 1>&6
12287
echo "configure:12288: checking MOZ_LIBGNOME_CFLAGS" >&5
12364
echo "configure:12365: checking MOZ_LIBGNOME_CFLAGS" >&5
12288
            MOZ_LIBGNOME_CFLAGS=`$PKG_CONFIG --cflags "libgnome-2.0 >= $LIBGNOME_VERSION"`
12365
            MOZ_LIBGNOME_CFLAGS=`$PKG_CONFIG --cflags "libgnome-2.0 >= $LIBGNOME_VERSION"`
12289
            echo "$ac_t""$MOZ_LIBGNOME_CFLAGS" 1>&6
12366
            echo "$ac_t""$MOZ_LIBGNOME_CFLAGS" 1>&6
12290
12367
12291
            echo $ac_n "checking MOZ_LIBGNOME_LIBS""... $ac_c" 1>&6
12368
            echo $ac_n "checking MOZ_LIBGNOME_LIBS""... $ac_c" 1>&6
12292
echo "configure:12293: checking MOZ_LIBGNOME_LIBS" >&5
12369
echo "configure:12370: checking MOZ_LIBGNOME_LIBS" >&5
12293
            MOZ_LIBGNOME_LIBS=`$PKG_CONFIG --libs "libgnome-2.0 >= $LIBGNOME_VERSION"`
12370
            MOZ_LIBGNOME_LIBS=`$PKG_CONFIG --libs "libgnome-2.0 >= $LIBGNOME_VERSION"`
12294
            echo "$ac_t""$MOZ_LIBGNOME_LIBS" 1>&6
12371
            echo "$ac_t""$MOZ_LIBGNOME_LIBS" 1>&6
12295
        else
12372
        else
Lines 12337-12342 Link Here
12337
    
12414
    
12338
fi
12415
fi
12339
12416
12417
if test "$MOZ_ENABLE_GTK2"
12418
then
12419
    MOZ_ENABLE_GNOMEUI=1
12420
12421
    # Check whether --enable-gnomeui or --disable-gnomeui was given.
12422
if test "${enable_gnomeui+set}" = set; then
12423
  enableval="$enable_gnomeui"
12424
  if test "$enableval" = "no"; then
12425
    MOZ_ENABLE_GNOMEUI=
12426
  elif test "$enableval" = "yes"; then
12427
    MOZ_ENABLE_GNOMEUI=force
12428
  else
12429
    { echo "configure: error: Option, gnomeui, does not take an argument ($enableval)." 1>&2; exit 1; }
12430
  fi
12431
fi
12432
12433
12434
    if test "$MOZ_ENABLE_GNOMEUI"
12435
    then
12436
        
12437
  succeeded=no
12438
12439
  if test -z "$PKG_CONFIG"; then
12440
    # Extract the first word of "pkg-config", so it can be a program name with args.
12441
set dummy pkg-config; ac_word=$2
12442
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
12443
echo "configure:12444: checking for $ac_word" >&5
12444
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
12445
  echo $ac_n "(cached) $ac_c" 1>&6
12446
else
12447
  case "$PKG_CONFIG" in
12448
  /*)
12449
  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
12450
  ;;
12451
  ?:/*)			 
12452
  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a dos path.
12453
  ;;
12454
  *)
12455
  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
12456
  ac_dummy="$PATH"
12457
  for ac_dir in $ac_dummy; do 
12458
    test -z "$ac_dir" && ac_dir=.
12459
    if test -f $ac_dir/$ac_word; then
12460
      ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
12461
      break
12462
    fi
12463
  done
12464
  IFS="$ac_save_ifs"
12465
  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
12466
  ;;
12467
esac
12468
fi
12469
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
12470
if test -n "$PKG_CONFIG"; then
12471
  echo "$ac_t""$PKG_CONFIG" 1>&6
12472
else
12473
  echo "$ac_t""no" 1>&6
12474
fi
12475
12476
  fi
12477
12478
  if test "$PKG_CONFIG" = "no" ; then
12479
     echo "*** The pkg-config script could not be found. Make sure it is"
12480
     echo "*** in your path, or set the PKG_CONFIG environment variable"
12481
     echo "*** to the full path to pkg-config."
12482
     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
12483
  else
12484
     PKG_CONFIG_MIN_VERSION=0.9.0
12485
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
12486
        echo $ac_n "checking for libgnomeui-2.0 >= $GNOMEUI_VERSION""... $ac_c" 1>&6
12487
echo "configure:12488: checking for libgnomeui-2.0 >= $GNOMEUI_VERSION" >&5
12488
12489
        if $PKG_CONFIG --exists "libgnomeui-2.0 >= $GNOMEUI_VERSION" ; then
12490
            echo "$ac_t""yes" 1>&6
12491
            succeeded=yes
12492
12493
            echo $ac_n "checking MOZ_GNOMEUI_CFLAGS""... $ac_c" 1>&6
12494
echo "configure:12495: checking MOZ_GNOMEUI_CFLAGS" >&5
12495
            MOZ_GNOMEUI_CFLAGS=`$PKG_CONFIG --cflags "libgnomeui-2.0 >= $GNOMEUI_VERSION"`
12496
            echo "$ac_t""$MOZ_GNOMEUI_CFLAGS" 1>&6
12497
12498
            echo $ac_n "checking MOZ_GNOMEUI_LIBS""... $ac_c" 1>&6
12499
echo "configure:12500: checking MOZ_GNOMEUI_LIBS" >&5
12500
            MOZ_GNOMEUI_LIBS=`$PKG_CONFIG --libs "libgnomeui-2.0 >= $GNOMEUI_VERSION"`
12501
            echo "$ac_t""$MOZ_GNOMEUI_LIBS" 1>&6
12502
        else
12503
            MOZ_GNOMEUI_CFLAGS=""
12504
            MOZ_GNOMEUI_LIBS=""
12505
            ## If we have a custom action on failure, don't print errors, but 
12506
            ## do set a variable so people can do so.
12507
            MOZ_GNOMEUI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libgnomeui-2.0 >= $GNOMEUI_VERSION"`
12508
            
12509
        fi
12510
12511
        
12512
        
12513
     else
12514
        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
12515
        echo "*** See http://www.freedesktop.org/software/pkgconfig"
12516
     fi
12517
  fi
12518
12519
  if test $succeeded = yes; then
12520
     MOZ_ENABLE_GNOMEUI=1
12521
  else
12522
     
12523
            if test "$MOZ_ENABLE_GNOMEUI" = "force"
12524
            then
12525
                { echo "configure: error: * * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION" 1>&2; exit 1; }
12526
            fi
12527
            MOZ_ENABLE_GNOMEUI=
12528
        
12529
  fi
12530
12531
    fi
12532
12533
    
12534
    
12535
    
12536
12537
fi
12340
12538
12341
if (test "$MOZ_ENABLE_GTK"  || test "$MOZ_ENABLE_GTK2") \
12539
if (test "$MOZ_ENABLE_GTK"  || test "$MOZ_ENABLE_GTK2") \
12342
&& test "$MOZ_ENABLE_COREXFONTS" \
12540
&& test "$MOZ_ENABLE_COREXFONTS" \
Lines 12711-12727 Link Here
12711
do
12909
do
12712
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
12910
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
12713
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
12911
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
12714
echo "configure:12715: checking for $ac_hdr" >&5
12912
echo "configure:12913: checking for $ac_hdr" >&5
12715
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
12913
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
12716
  echo $ac_n "(cached) $ac_c" 1>&6
12914
  echo $ac_n "(cached) $ac_c" 1>&6
12717
else
12915
else
12718
  cat > conftest.$ac_ext <<EOF
12916
  cat > conftest.$ac_ext <<EOF
12719
#line 12720 "configure"
12917
#line 12918 "configure"
12720
#include "confdefs.h"
12918
#include "confdefs.h"
12721
#include <$ac_hdr>
12919
#include <$ac_hdr>
12722
EOF
12920
EOF
12723
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
12921
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
12724
{ (eval echo configure:12725: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
12922
{ (eval echo configure:12923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
12725
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
12923
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
12726
if test -z "$ac_err"; then
12924
if test -z "$ac_err"; then
12727
  rm -rf conftest*
12925
  rm -rf conftest*
Lines 12752-12768 Link Here
12752
do
12950
do
12753
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
12951
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
12754
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
12952
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
12755
echo "configure:12756: checking for $ac_hdr" >&5
12953
echo "configure:12954: checking for $ac_hdr" >&5
12756
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
12954
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
12757
  echo $ac_n "(cached) $ac_c" 1>&6
12955
  echo $ac_n "(cached) $ac_c" 1>&6
12758
else
12956
else
12759
  cat > conftest.$ac_ext <<EOF
12957
  cat > conftest.$ac_ext <<EOF
12760
#line 12761 "configure"
12958
#line 12959 "configure"
12761
#include "confdefs.h"
12959
#include "confdefs.h"
12762
#include <$ac_hdr>
12960
#include <$ac_hdr>
12763
EOF
12961
EOF
12764
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
12962
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
12765
{ (eval echo configure:12766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
12963
{ (eval echo configure:12964: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
12766
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
12964
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
12767
if test -z "$ac_err"; then
12965
if test -z "$ac_err"; then
12768
  rm -rf conftest*
12966
  rm -rf conftest*
Lines 12792-12798 Link Here
12792
    CPPFLAGS="$_SAVE_CPPFLAGS $GSSAPI_INCLUDES"
12990
    CPPFLAGS="$_SAVE_CPPFLAGS $GSSAPI_INCLUDES"
12793
12991
12794
                echo $ac_n "checking for gss_init_sec_context in -lgss""... $ac_c" 1>&6
12992
                echo $ac_n "checking for gss_init_sec_context in -lgss""... $ac_c" 1>&6
12795
echo "configure:12796: checking for gss_init_sec_context in -lgss" >&5
12993
echo "configure:12994: checking for gss_init_sec_context in -lgss" >&5
12796
ac_lib_var=`echo gss'_'gss_init_sec_context | sed 'y%./+-%__p_%'`
12994
ac_lib_var=`echo gss'_'gss_init_sec_context | sed 'y%./+-%__p_%'`
12797
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
12995
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
12798
  echo $ac_n "(cached) $ac_c" 1>&6
12996
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 12800-12806 Link Here
12800
  ac_save_LIBS="$LIBS"
12998
  ac_save_LIBS="$LIBS"
12801
LIBS="-lgss  $LIBS"
12999
LIBS="-lgss  $LIBS"
12802
cat > conftest.$ac_ext <<EOF
13000
cat > conftest.$ac_ext <<EOF
12803
#line 12804 "configure"
13001
#line 13002 "configure"
12804
#include "confdefs.h"
13002
#include "confdefs.h"
12805
/* Override any gcc2 internal prototype to avoid an error.  */
13003
/* Override any gcc2 internal prototype to avoid an error.  */
12806
/* We use char because int might match the return type of a gcc2
13004
/* We use char because int might match the return type of a gcc2
Lines 12811-12817 Link Here
12811
gss_init_sec_context()
13009
gss_init_sec_context()
12812
; return 0; }
13010
; return 0; }
12813
EOF
13011
EOF
12814
if { (eval echo configure:12815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
13012
if { (eval echo configure:13013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
12815
  rm -rf conftest*
13013
  rm -rf conftest*
12816
  eval "ac_cv_lib_$ac_lib_var=yes"
13014
  eval "ac_cv_lib_$ac_lib_var=yes"
12817
else
13015
else
Lines 12836-12847 Link Here
12836
                                _GSS_LIBS="-L$GSSAPI_DIR/lib -lgssapi_krb5"
13034
                                _GSS_LIBS="-L$GSSAPI_DIR/lib -lgssapi_krb5"
12837
        LIBS="$LIBS $_GSS_LIBS"
13035
        LIBS="$LIBS $_GSS_LIBS"
12838
        echo $ac_n "checking for gss_init_sec_context""... $ac_c" 1>&6
13036
        echo $ac_n "checking for gss_init_sec_context""... $ac_c" 1>&6
12839
echo "configure:12840: checking for gss_init_sec_context" >&5
13037
echo "configure:13038: checking for gss_init_sec_context" >&5
12840
if eval "test \"`echo '$''{'ac_cv_func_gss_init_sec_context'+set}'`\" = set"; then
13038
if eval "test \"`echo '$''{'ac_cv_func_gss_init_sec_context'+set}'`\" = set"; then
12841
  echo $ac_n "(cached) $ac_c" 1>&6
13039
  echo $ac_n "(cached) $ac_c" 1>&6
12842
else
13040
else
12843
  cat > conftest.$ac_ext <<EOF
13041
  cat > conftest.$ac_ext <<EOF
12844
#line 12845 "configure"
13042
#line 13043 "configure"
12845
#include "confdefs.h"
13043
#include "confdefs.h"
12846
/* System header to define __stub macros and hopefully few prototypes,
13044
/* System header to define __stub macros and hopefully few prototypes,
12847
    which can conflict with char gss_init_sec_context(); below.  */
13045
    which can conflict with char gss_init_sec_context(); below.  */
Lines 12864-12870 Link Here
12864
13062
12865
; return 0; }
13063
; return 0; }
12866
EOF
13064
EOF
12867
if { (eval echo configure:12868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
13065
if { (eval echo configure:13066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
12868
  rm -rf conftest*
13066
  rm -rf conftest*
12869
  eval "ac_cv_func_gss_init_sec_context=yes"
13067
  eval "ac_cv_func_gss_init_sec_context=yes"
12870
else
13068
else
Lines 12894-12900 Link Here
12894
13092
12895
            LIBS="$LIBS $TMP_GSSAPI_LIBS"
13093
            LIBS="$LIBS $TMP_GSSAPI_LIBS"
12896
            echo $ac_n "checking for gss_init_sec_context in -lgssapi""... $ac_c" 1>&6
13094
            echo $ac_n "checking for gss_init_sec_context in -lgssapi""... $ac_c" 1>&6
12897
echo "configure:12898: checking for gss_init_sec_context in -lgssapi" >&5
13095
echo "configure:13096: checking for gss_init_sec_context in -lgssapi" >&5
12898
ac_lib_var=`echo gssapi'_'gss_init_sec_context | sed 'y%./+-%__p_%'`
13096
ac_lib_var=`echo gssapi'_'gss_init_sec_context | sed 'y%./+-%__p_%'`
12899
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
13097
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
12900
  echo $ac_n "(cached) $ac_c" 1>&6
13098
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 12902-12908 Link Here
12902
  ac_save_LIBS="$LIBS"
13100
  ac_save_LIBS="$LIBS"
12903
LIBS="-lgssapi  $LIBS"
13101
LIBS="-lgssapi  $LIBS"
12904
cat > conftest.$ac_ext <<EOF
13102
cat > conftest.$ac_ext <<EOF
12905
#line 12906 "configure"
13103
#line 13104 "configure"
12906
#include "confdefs.h"
13104
#include "confdefs.h"
12907
/* Override any gcc2 internal prototype to avoid an error.  */
13105
/* Override any gcc2 internal prototype to avoid an error.  */
12908
/* We use char because int might match the return type of a gcc2
13106
/* We use char because int might match the return type of a gcc2
Lines 12913-12919 Link Here
12913
gss_init_sec_context()
13111
gss_init_sec_context()
12914
; return 0; }
13112
; return 0; }
12915
EOF
13113
EOF
12916
if { (eval echo configure:12917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
13114
if { (eval echo configure:13115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
12917
  rm -rf conftest*
13115
  rm -rf conftest*
12918
  eval "ac_cv_lib_$ac_lib_var=yes"
13116
  eval "ac_cv_lib_$ac_lib_var=yes"
12919
else
13117
else
Lines 12949-12965 Link Here
12949
do
13147
do
12950
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
13148
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
12951
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
13149
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
12952
echo "configure:12953: checking for $ac_hdr" >&5
13150
echo "configure:13151: checking for $ac_hdr" >&5
12953
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
13151
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
12954
  echo $ac_n "(cached) $ac_c" 1>&6
13152
  echo $ac_n "(cached) $ac_c" 1>&6
12955
else
13153
else
12956
  cat > conftest.$ac_ext <<EOF
13154
  cat > conftest.$ac_ext <<EOF
12957
#line 12958 "configure"
13155
#line 13156 "configure"
12958
#include "confdefs.h"
13156
#include "confdefs.h"
12959
#include <$ac_hdr>
13157
#include <$ac_hdr>
12960
EOF
13158
EOF
12961
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
13159
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
12962
{ (eval echo configure:12963: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
13160
{ (eval echo configure:13161: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
12963
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
13161
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
12964
if test -z "$ac_err"; then
13162
if test -z "$ac_err"; then
12965
  rm -rf conftest*
13163
  rm -rf conftest*
Lines 12989-13005 Link Here
12989
do
13187
do
12990
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
13188
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
12991
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
13189
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
12992
echo "configure:12993: checking for $ac_hdr" >&5
13190
echo "configure:13191: checking for $ac_hdr" >&5
12993
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
13191
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
12994
  echo $ac_n "(cached) $ac_c" 1>&6
13192
  echo $ac_n "(cached) $ac_c" 1>&6
12995
else
13193
else
12996
  cat > conftest.$ac_ext <<EOF
13194
  cat > conftest.$ac_ext <<EOF
12997
#line 12998 "configure"
13195
#line 13196 "configure"
12998
#include "confdefs.h"
13196
#include "confdefs.h"
12999
#include <$ac_hdr>
13197
#include <$ac_hdr>
13000
EOF
13198
EOF
13001
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
13199
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
13002
{ (eval echo configure:13003: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
13200
{ (eval echo configure:13201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
13003
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
13201
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
13004
if test -z "$ac_err"; then
13202
if test -z "$ac_err"; then
13005
  rm -rf conftest*
13203
  rm -rf conftest*
Lines 13027-13033 Link Here
13027
13225
13028
13226
13029
        cat > conftest.$ac_ext <<EOF
13227
        cat > conftest.$ac_ext <<EOF
13030
#line 13031 "configure"
13228
#line 13229 "configure"
13031
#include "confdefs.h"
13229
#include "confdefs.h"
13032
 #if defined(HAVE_GSSAPI_H)
13230
 #if defined(HAVE_GSSAPI_H)
13033
                         #include <gssapi.h>
13231
                         #include <gssapi.h>
Lines 13038-13044 Link Here
13038
 gss_OID oid = GSS_C_NT_HOSTBASED_SERVICE; 
13236
 gss_OID oid = GSS_C_NT_HOSTBASED_SERVICE; 
13039
; return 0; }
13237
; return 0; }
13040
EOF
13238
EOF
13041
if { (eval echo configure:13042: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
13239
if { (eval echo configure:13240: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
13042
  rm -rf conftest*
13240
  rm -rf conftest*
13043
  cat >> confdefs.h <<\EOF
13241
  cat >> confdefs.h <<\EOF
13044
#define HAVE_GSS_C_NT_HOSTBASED_SERVICE 1
13242
#define HAVE_GSS_C_NT_HOSTBASED_SERVICE 1
Lines 13077-13082 Link Here
13077
        MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
13275
        MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
13078
    fi
13276
    fi
13079
    ;;
13277
    ;;
13278
*)
13279
    if test "$MOZ_ENABLE_GNOMEUI"; then
13280
13281
        MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
13282
    fi
13283
    ;;
13284
*)
13285
    if test "$MOZ_ENABLE_GNOMEUI"; then
13286
        MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
13287
    fi
13288
    ;;
13080
esac
13289
esac
13081
13290
13082
# Check whether --enable-image-decoders or --disable-image-decoders was given.
13291
# Check whether --enable-image-decoders or --disable-image-decoders was given.
Lines 13169-13175 Link Here
13169
13378
13170
if test -n "$MOZ_SVG_RENDERER_GDIPLUS"; then
13379
if test -n "$MOZ_SVG_RENDERER_GDIPLUS"; then
13171
            echo $ac_n "checking for Gdiplus.h""... $ac_c" 1>&6
13380
            echo $ac_n "checking for Gdiplus.h""... $ac_c" 1>&6
13172
echo "configure:13173: checking for Gdiplus.h" >&5
13381
echo "configure:13382: checking for Gdiplus.h" >&5
13173
  
13382
  
13174
  ac_ext=C
13383
  ac_ext=C
13175
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
13384
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
Lines 13179-13185 Link Here
13179
cross_compiling=$ac_cv_prog_cxx_cross
13388
cross_compiling=$ac_cv_prog_cxx_cross
13180
13389
13181
  cat > conftest.$ac_ext <<EOF
13390
  cat > conftest.$ac_ext <<EOF
13182
#line 13183 "configure"
13391
#line 13392 "configure"
13183
#include "confdefs.h"
13392
#include "confdefs.h"
13184
#include <windows.h>
13393
#include <windows.h>
13185
                  #include <unknwn.h>
13394
                  #include <unknwn.h>
Lines 13188-13194 Link Here
13188
13397
13189
; return 0; }
13398
; return 0; }
13190
EOF
13399
EOF
13191
if { (eval echo configure:13192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
13400
if { (eval echo configure:13401: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
13192
  rm -rf conftest*
13401
  rm -rf conftest*
13193
  echo "$ac_t""yes" 1>&6
13402
  echo "$ac_t""yes" 1>&6
13194
else
13403
else
Lines 13486-13503 Link Here
13486
13695
13487
if test -n "$MOZ_OPTIMIZE"; then
13696
if test -n "$MOZ_OPTIMIZE"; then
13488
    echo $ac_n "checking for valid optimization flags""... $ac_c" 1>&6
13697
    echo $ac_n "checking for valid optimization flags""... $ac_c" 1>&6
13489
echo "configure:13490: checking for valid optimization flags" >&5
13698
echo "configure:13699: checking for valid optimization flags" >&5
13490
    _SAVE_CFLAGS=$CFLAGS
13699
    _SAVE_CFLAGS=$CFLAGS
13491
    CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
13700
    CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
13492
    cat > conftest.$ac_ext <<EOF
13701
    cat > conftest.$ac_ext <<EOF
13493
#line 13494 "configure"
13702
#line 13703 "configure"
13494
#include "confdefs.h"
13703
#include "confdefs.h"
13495
#include <stdio.h>
13704
#include <stdio.h>
13496
int main() {
13705
int main() {
13497
printf("Hello World\n");
13706
printf("Hello World\n");
13498
; return 0; }
13707
; return 0; }
13499
EOF
13708
EOF
13500
if { (eval echo configure:13501: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
13709
if { (eval echo configure:13710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
13501
  rm -rf conftest*
13710
  rm -rf conftest*
13502
  _results=yes
13711
  _results=yes
13503
else
13712
else
Lines 13715-13721 Link Here
13715
13924
13716
if test -n "$_ENABLE_EFENCE"; then
13925
if test -n "$_ENABLE_EFENCE"; then
13717
    echo $ac_n "checking for malloc in -lefence""... $ac_c" 1>&6
13926
    echo $ac_n "checking for malloc in -lefence""... $ac_c" 1>&6
13718
echo "configure:13719: checking for malloc in -lefence" >&5
13927
echo "configure:13928: checking for malloc in -lefence" >&5
13719
ac_lib_var=`echo efence'_'malloc | sed 'y%./+-%__p_%'`
13928
ac_lib_var=`echo efence'_'malloc | sed 'y%./+-%__p_%'`
13720
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
13929
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
13721
  echo $ac_n "(cached) $ac_c" 1>&6
13930
  echo $ac_n "(cached) $ac_c" 1>&6
Lines 13723-13729 Link Here
13723
  ac_save_LIBS="$LIBS"
13932
  ac_save_LIBS="$LIBS"
13724
LIBS="-lefence  $LIBS"
13933
LIBS="-lefence  $LIBS"
13725
cat > conftest.$ac_ext <<EOF
13934
cat > conftest.$ac_ext <<EOF
13726
#line 13727 "configure"
13935
#line 13936 "configure"
13727
#include "confdefs.h"
13936
#include "confdefs.h"
13728
/* Override any gcc2 internal prototype to avoid an error.  */
13937
/* Override any gcc2 internal prototype to avoid an error.  */
13729
/* We use char because int might match the return type of a gcc2
13938
/* We use char because int might match the return type of a gcc2
Lines 13734-13740 Link Here
13734
malloc()
13943
malloc()
13735
; return 0; }
13944
; return 0; }
13736
EOF
13945
EOF
13737
if { (eval echo configure:13738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
13946
if { (eval echo configure:13947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
13738
  rm -rf conftest*
13947
  rm -rf conftest*
13739
  eval "ac_cv_lib_$ac_lib_var=yes"
13948
  eval "ac_cv_lib_$ac_lib_var=yes"
13740
else
13949
else
Lines 13834-13845 Link Here
13834
    for ac_func in __builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual
14043
    for ac_func in __builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual
13835
do
14044
do
13836
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
14045
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
13837
echo "configure:13838: checking for $ac_func" >&5
14046
echo "configure:14047: checking for $ac_func" >&5
13838
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
14047
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
13839
  echo $ac_n "(cached) $ac_c" 1>&6
14048
  echo $ac_n "(cached) $ac_c" 1>&6
13840
else
14049
else
13841
  cat > conftest.$ac_ext <<EOF
14050
  cat > conftest.$ac_ext <<EOF
13842
#line 13843 "configure"
14051
#line 14052 "configure"
13843
#include "confdefs.h"
14052
#include "confdefs.h"
13844
/* System header to define __stub macros and hopefully few prototypes,
14053
/* System header to define __stub macros and hopefully few prototypes,
13845
    which can conflict with char $ac_func(); below.  */
14054
    which can conflict with char $ac_func(); below.  */
Lines 13865-13871 Link Here
13865
14074
13866
; return 0; }
14075
; return 0; }
13867
EOF
14076
EOF
13868
if { (eval echo configure:13869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
14077
if { (eval echo configure:14078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
13869
  rm -rf conftest*
14078
  rm -rf conftest*
13870
  eval "ac_cv_func_$ac_func=yes"
14079
  eval "ac_cv_func_$ac_func=yes"
13871
else
14080
else
Lines 14109-14120 Link Here
14109
    for ac_func in __cxa_demangle
14318
    for ac_func in __cxa_demangle
14110
do
14319
do
14111
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
14320
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
14112
echo "configure:14113: checking for $ac_func" >&5
14321
echo "configure:14322: checking for $ac_func" >&5
14113
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
14322
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
14114
  echo $ac_n "(cached) $ac_c" 1>&6
14323
  echo $ac_n "(cached) $ac_c" 1>&6
14115
else
14324
else
14116
  cat > conftest.$ac_ext <<EOF
14325
  cat > conftest.$ac_ext <<EOF
14117
#line 14118 "configure"
14326
#line 14327 "configure"
14118
#include "confdefs.h"
14327
#include "confdefs.h"
14119
/* System header to define __stub macros and hopefully few prototypes,
14328
/* System header to define __stub macros and hopefully few prototypes,
14120
    which can conflict with char $ac_func(); below.  */
14329
    which can conflict with char $ac_func(); below.  */
Lines 14140-14146 Link Here
14140
14349
14141
; return 0; }
14350
; return 0; }
14142
EOF
14351
EOF
14143
if { (eval echo configure:14144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
14352
if { (eval echo configure:14353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
14144
  rm -rf conftest*
14353
  rm -rf conftest*
14145
  eval "ac_cv_func_$ac_func=yes"
14354
  eval "ac_cv_func_$ac_func=yes"
14146
else
14355
else
Lines 14278-14284 Link Here
14278
# Compiler Options
14487
# Compiler Options
14279
14488
14280
echo $ac_n "checking for gcc -pipe support""... $ac_c" 1>&6
14489
echo $ac_n "checking for gcc -pipe support""... $ac_c" 1>&6
14281
echo "configure:14282: checking for gcc -pipe support" >&5
14490
echo "configure:14491: checking for gcc -pipe support" >&5
14282
if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
14491
if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
14283
    echo '#include <stdio.h>' > dummy-hello.c
14492
    echo '#include <stdio.h>' > dummy-hello.c
14284
    echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
14493
    echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
Lines 14293-14306 Link Here
14293
        _SAVE_CFLAGS=$CFLAGS
14502
        _SAVE_CFLAGS=$CFLAGS
14294
        CFLAGS="$CFLAGS -pipe"
14503
        CFLAGS="$CFLAGS -pipe"
14295
        cat > conftest.$ac_ext <<EOF
14504
        cat > conftest.$ac_ext <<EOF
14296
#line 14297 "configure"
14505
#line 14506 "configure"
14297
#include "confdefs.h"
14506
#include "confdefs.h"
14298
 #include <stdio.h> 
14507
 #include <stdio.h> 
14299
int main() {
14508
int main() {
14300
printf("Hello World\n");
14509
printf("Hello World\n");
14301
; return 0; }
14510
; return 0; }
14302
EOF
14511
EOF
14303
if { (eval echo configure:14304: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14512
if { (eval echo configure:14513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14304
  rm -rf conftest*
14513
  rm -rf conftest*
14305
  _res_gcc_pipe="yes"
14514
  _res_gcc_pipe="yes"
14306
else
14515
else
Lines 14342-14357 Link Here
14342
     _SAVE_CFLAGS="$CFLAGS"
14551
     _SAVE_CFLAGS="$CFLAGS"
14343
     CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
14552
     CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
14344
     echo $ac_n "checking whether compiler supports -Wno-long-long""... $ac_c" 1>&6
14553
     echo $ac_n "checking whether compiler supports -Wno-long-long""... $ac_c" 1>&6
14345
echo "configure:14346: checking whether compiler supports -Wno-long-long" >&5
14554
echo "configure:14555: checking whether compiler supports -Wno-long-long" >&5
14346
     cat > conftest.$ac_ext <<EOF
14555
     cat > conftest.$ac_ext <<EOF
14347
#line 14348 "configure"
14556
#line 14557 "configure"
14348
#include "confdefs.h"
14557
#include "confdefs.h"
14349
14558
14350
int main() {
14559
int main() {
14351
return(0);
14560
return(0);
14352
; return 0; }
14561
; return 0; }
14353
EOF
14562
EOF
14354
if { (eval echo configure:14355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14563
if { (eval echo configure:14564: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14355
  rm -rf conftest*
14564
  rm -rf conftest*
14356
   _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
14565
   _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
14357
	  _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
14566
	  _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
Lines 14372-14387 Link Here
14372
CFLAGS="$CFLAGS -fprofile-generate"
14581
CFLAGS="$CFLAGS -fprofile-generate"
14373
14582
14374
echo $ac_n "checking whether C compiler supports -fprofile-generate""... $ac_c" 1>&6
14583
echo $ac_n "checking whether C compiler supports -fprofile-generate""... $ac_c" 1>&6
14375
echo "configure:14376: checking whether C compiler supports -fprofile-generate" >&5
14584
echo "configure:14585: checking whether C compiler supports -fprofile-generate" >&5
14376
cat > conftest.$ac_ext <<EOF
14585
cat > conftest.$ac_ext <<EOF
14377
#line 14378 "configure"
14586
#line 14587 "configure"
14378
#include "confdefs.h"
14587
#include "confdefs.h"
14379
14588
14380
int main() {
14589
int main() {
14381
return 0;
14590
return 0;
14382
; return 0; }
14591
; return 0; }
14383
EOF
14592
EOF
14384
if { (eval echo configure:14385: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14593
if { (eval echo configure:14594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14385
  rm -rf conftest*
14594
  rm -rf conftest*
14386
   PROFILE_GEN_CFLAGS="-fprofile-generate"
14595
   PROFILE_GEN_CFLAGS="-fprofile-generate"
14387
                 result="yes" 
14596
                 result="yes" 
Lines 14399-14414 Link Here
14399
else
14608
else
14400
  CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
14609
  CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
14401
  echo $ac_n "checking whether C compiler supports -fprofile-arcs""... $ac_c" 1>&6
14610
  echo $ac_n "checking whether C compiler supports -fprofile-arcs""... $ac_c" 1>&6
14402
echo "configure:14403: checking whether C compiler supports -fprofile-arcs" >&5
14611
echo "configure:14612: checking whether C compiler supports -fprofile-arcs" >&5
14403
  cat > conftest.$ac_ext <<EOF
14612
  cat > conftest.$ac_ext <<EOF
14404
#line 14405 "configure"
14613
#line 14614 "configure"
14405
#include "confdefs.h"
14614
#include "confdefs.h"
14406
14615
14407
int main() {
14616
int main() {
14408
return 0;
14617
return 0;
14409
; return 0; }
14618
; return 0; }
14410
EOF
14619
EOF
14411
if { (eval echo configure:14412: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14620
if { (eval echo configure:14621: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14412
  rm -rf conftest*
14621
  rm -rf conftest*
14413
   PROFILE_GEN_CFLAGS="-fprofile-arcs"
14622
   PROFILE_GEN_CFLAGS="-fprofile-arcs"
14414
                   result="yes" 
14623
                   result="yes" 
Lines 14454-14471 Link Here
14454
    _SAVE_CXXFLAGS=$CXXFLAGS
14663
    _SAVE_CXXFLAGS=$CXXFLAGS
14455
    CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
14664
    CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
14456
    echo $ac_n "checking whether C++ compiler has -pedantic long long bug""... $ac_c" 1>&6
14665
    echo $ac_n "checking whether C++ compiler has -pedantic long long bug""... $ac_c" 1>&6
14457
echo "configure:14458: checking whether C++ compiler has -pedantic long long bug" >&5
14666
echo "configure:14667: checking whether C++ compiler has -pedantic long long bug" >&5
14458
    if test "$cross_compiling" = yes; then
14667
    if test "$cross_compiling" = yes; then
14459
  result="maybe" 
14668
  result="maybe" 
14460
else
14669
else
14461
  cat > conftest.$ac_ext <<EOF
14670
  cat > conftest.$ac_ext <<EOF
14462
#line 14463 "configure"
14671
#line 14672 "configure"
14463
#include "confdefs.h"
14672
#include "confdefs.h"
14673
#ifdef __cplusplus
14674
extern "C" void exit(int);
14675
#endif
14464
 int main () {
14676
 int main () {
14465
                if (sizeof(long long) != 8) { return 1; } 
14677
                if (sizeof(long long) != 8) { return 1; } 
14466
                    return 0; } 
14678
                    return 0; } 
14467
EOF
14679
EOF
14468
if { (eval echo configure:14469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
14680
if { (eval echo configure:14681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
14469
then
14681
then
14470
  result="no"
14682
  result="no"
14471
else
14683
else
Lines 14495-14507 Link Here
14495
fi
14707
fi
14496
14708
14497
echo $ac_n "checking for correct temporary object destruction order""... $ac_c" 1>&6
14709
echo $ac_n "checking for correct temporary object destruction order""... $ac_c" 1>&6
14498
echo "configure:14499: checking for correct temporary object destruction order" >&5
14710
echo "configure:14711: checking for correct temporary object destruction order" >&5
14499
if test "$cross_compiling" = yes; then
14711
if test "$cross_compiling" = yes; then
14500
  result="maybe"
14712
  result="maybe"
14501
else
14713
else
14502
  cat > conftest.$ac_ext <<EOF
14714
  cat > conftest.$ac_ext <<EOF
14503
#line 14504 "configure"
14715
#line 14716 "configure"
14504
#include "confdefs.h"
14716
#include "confdefs.h"
14717
#ifdef __cplusplus
14718
extern "C" void exit(int);
14719
#endif
14505
 class A {
14720
 class A {
14506
             public:  A(int& x) : mValue(x) {}
14721
             public:  A(int& x) : mValue(x) {}
14507
                      ~A() { mValue--; }
14722
                      ~A() { mValue--; }
Lines 14520-14526 Link Here
14520
             }
14735
             }
14521
             
14736
             
14522
EOF
14737
EOF
14523
if { (eval echo configure:14524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
14738
if { (eval echo configure:14739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
14524
then
14739
then
14525
  result="yes"
14740
  result="yes"
14526
else
14741
else
Lines 14541-14552 Link Here
14541
_SAVE_CXXFLAGS=$CXXFLAGS
14756
_SAVE_CXXFLAGS=$CXXFLAGS
14542
CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
14757
CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
14543
echo $ac_n "checking for correct overload resolution with const and templates""... $ac_c" 1>&6
14758
echo $ac_n "checking for correct overload resolution with const and templates""... $ac_c" 1>&6
14544
echo "configure:14545: checking for correct overload resolution with const and templates" >&5
14759
echo "configure:14760: checking for correct overload resolution with const and templates" >&5
14545
if eval "test \"`echo '$''{'ac_nscap_nonconst_opeq_bug'+set}'`\" = set"; then
14760
if eval "test \"`echo '$''{'ac_nscap_nonconst_opeq_bug'+set}'`\" = set"; then
14546
  echo $ac_n "(cached) $ac_c" 1>&6
14761
  echo $ac_n "(cached) $ac_c" 1>&6
14547
else
14762
else
14548
  cat > conftest.$ac_ext <<EOF
14763
  cat > conftest.$ac_ext <<EOF
14549
#line 14550 "configure"
14764
#line 14765 "configure"
14550
#include "confdefs.h"
14765
#include "confdefs.h"
14551
14766
14552
                      template <class T>
14767
                      template <class T>
Lines 14576-14582 Link Here
14576
                    
14791
                    
14577
; return 0; }
14792
; return 0; }
14578
EOF
14793
EOF
14579
if { (eval echo configure:14580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14794
if { (eval echo configure:14795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
14580
  rm -rf conftest*
14795
  rm -rf conftest*
14581
  ac_nscap_nonconst_opeq_bug="no"
14796
  ac_nscap_nonconst_opeq_bug="no"
14582
else
14797
else
Lines 14867-14873 Link Here
14867
    # Extract the first word of "pkg-config", so it can be a program name with args.
15082
    # Extract the first word of "pkg-config", so it can be a program name with args.
14868
set dummy pkg-config; ac_word=$2
15083
set dummy pkg-config; ac_word=$2
14869
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15084
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
14870
echo "configure:14871: checking for $ac_word" >&5
15085
echo "configure:15086: checking for $ac_word" >&5
14871
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
15086
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
14872
  echo $ac_n "(cached) $ac_c" 1>&6
15087
  echo $ac_n "(cached) $ac_c" 1>&6
14873
else
15088
else
Lines 14911-14929 Link Here
14911
     PKG_CONFIG_MIN_VERSION=0.9.0
15126
     PKG_CONFIG_MIN_VERSION=0.9.0
14912
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
15127
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
14913
        echo $ac_n "checking for libIDL-2.0 >= 0.8.0""... $ac_c" 1>&6
15128
        echo $ac_n "checking for libIDL-2.0 >= 0.8.0""... $ac_c" 1>&6
14914
echo "configure:14915: checking for libIDL-2.0 >= 0.8.0" >&5
15129
echo "configure:15130: checking for libIDL-2.0 >= 0.8.0" >&5
14915
15130
14916
        if $PKG_CONFIG --exists "libIDL-2.0 >= 0.8.0" ; then
15131
        if $PKG_CONFIG --exists "libIDL-2.0 >= 0.8.0" ; then
14917
            echo "$ac_t""yes" 1>&6
15132
            echo "$ac_t""yes" 1>&6
14918
            succeeded=yes
15133
            succeeded=yes
14919
15134
14920
            echo $ac_n "checking LIBIDL_CFLAGS""... $ac_c" 1>&6
15135
            echo $ac_n "checking LIBIDL_CFLAGS""... $ac_c" 1>&6
14921
echo "configure:14922: checking LIBIDL_CFLAGS" >&5
15136
echo "configure:15137: checking LIBIDL_CFLAGS" >&5
14922
            LIBIDL_CFLAGS=`$PKG_CONFIG --cflags "libIDL-2.0 >= 0.8.0"`
15137
            LIBIDL_CFLAGS=`$PKG_CONFIG --cflags "libIDL-2.0 >= 0.8.0"`
14923
            echo "$ac_t""$LIBIDL_CFLAGS" 1>&6
15138
            echo "$ac_t""$LIBIDL_CFLAGS" 1>&6
14924
15139
14925
            echo $ac_n "checking LIBIDL_LIBS""... $ac_c" 1>&6
15140
            echo $ac_n "checking LIBIDL_LIBS""... $ac_c" 1>&6
14926
echo "configure:14927: checking LIBIDL_LIBS" >&5
15141
echo "configure:15142: checking LIBIDL_LIBS" >&5
14927
            LIBIDL_LIBS=`$PKG_CONFIG --libs "libIDL-2.0 >= 0.8.0"`
15142
            LIBIDL_LIBS=`$PKG_CONFIG --libs "libIDL-2.0 >= 0.8.0"`
14928
            echo "$ac_t""$LIBIDL_LIBS" 1>&6
15143
            echo "$ac_t""$LIBIDL_LIBS" 1>&6
14929
        else
15144
        else
Lines 15044-15050 Link Here
15044
  # Extract the first word of "glib-config", so it can be a program name with args.
15259
  # Extract the first word of "glib-config", so it can be a program name with args.
15045
set dummy glib-config; ac_word=$2
15260
set dummy glib-config; ac_word=$2
15046
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15261
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15047
echo "configure:15048: checking for $ac_word" >&5
15262
echo "configure:15263: checking for $ac_word" >&5
15048
if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then
15263
if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then
15049
  echo $ac_n "(cached) $ac_c" 1>&6
15264
  echo $ac_n "(cached) $ac_c" 1>&6
15050
else
15265
else
Lines 15079-15085 Link Here
15079
15294
15080
  min_glib_version=1.2.0
15295
  min_glib_version=1.2.0
15081
  echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6
15296
  echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6
15082
echo "configure:15083: checking for GLIB - version >= $min_glib_version" >&5
15297
echo "configure:15298: checking for GLIB - version >= $min_glib_version" >&5
15083
  no_glib=""
15298
  no_glib=""
15084
  if test "$GLIB_CONFIG" = "no" ; then
15299
  if test "$GLIB_CONFIG" = "no" ; then
15085
    no_glib=yes
15300
    no_glib=yes
Lines 15102-15108 Link Here
15102
  echo $ac_n "cross compiling; assumed OK... $ac_c"
15317
  echo $ac_n "cross compiling; assumed OK... $ac_c"
15103
else
15318
else
15104
  cat > conftest.$ac_ext <<EOF
15319
  cat > conftest.$ac_ext <<EOF
15105
#line 15106 "configure"
15320
#line 15321 "configure"
15106
#include "confdefs.h"
15321
#include "confdefs.h"
15107
15322
15108
#include <glib.h>
15323
#include <glib.h>
Lines 15178-15184 Link Here
15178
}
15393
}
15179
15394
15180
EOF
15395
EOF
15181
if { (eval echo configure:15182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
15396
if { (eval echo configure:15397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
15182
then
15397
then
15183
  :
15398
  :
15184
else
15399
else
Lines 15212-15218 Link Here
15212
          CFLAGS="$CFLAGS $GLIB_CFLAGS"
15427
          CFLAGS="$CFLAGS $GLIB_CFLAGS"
15213
          LIBS="$LIBS $GLIB_LIBS"
15428
          LIBS="$LIBS $GLIB_LIBS"
15214
          cat > conftest.$ac_ext <<EOF
15429
          cat > conftest.$ac_ext <<EOF
15215
#line 15216 "configure"
15430
#line 15431 "configure"
15216
#include "confdefs.h"
15431
#include "confdefs.h"
15217
15432
15218
#include <glib.h>
15433
#include <glib.h>
Lines 15222-15228 Link Here
15222
 return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); 
15437
 return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); 
15223
; return 0; }
15438
; return 0; }
15224
EOF
15439
EOF
15225
if { (eval echo configure:15226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
15440
if { (eval echo configure:15441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
15226
  rm -rf conftest*
15441
  rm -rf conftest*
15227
   echo "*** The test program compiled, but did not run. This usually means"
15442
   echo "*** The test program compiled, but did not run. This usually means"
15228
          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
15443
          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
Lines 15266-15272 Link Here
15266
  # Extract the first word of "libIDL-config", so it can be a program name with args.
15481
  # Extract the first word of "libIDL-config", so it can be a program name with args.
15267
set dummy libIDL-config; ac_word=$2
15482
set dummy libIDL-config; ac_word=$2
15268
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15483
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15269
echo "configure:15270: checking for $ac_word" >&5
15484
echo "configure:15485: checking for $ac_word" >&5
15270
if eval "test \"`echo '$''{'ac_cv_path_LIBIDL_CONFIG'+set}'`\" = set"; then
15485
if eval "test \"`echo '$''{'ac_cv_path_LIBIDL_CONFIG'+set}'`\" = set"; then
15271
  echo $ac_n "(cached) $ac_c" 1>&6
15486
  echo $ac_n "(cached) $ac_c" 1>&6
15272
else
15487
else
Lines 15301-15307 Link Here
15301
15516
15302
  min_libIDL_version=$LIBIDL_VERSION
15517
  min_libIDL_version=$LIBIDL_VERSION
15303
  echo $ac_n "checking for libIDL - version >= $min_libIDL_version""... $ac_c" 1>&6
15518
  echo $ac_n "checking for libIDL - version >= $min_libIDL_version""... $ac_c" 1>&6
15304
echo "configure:15305: checking for libIDL - version >= $min_libIDL_version" >&5
15519
echo "configure:15520: checking for libIDL - version >= $min_libIDL_version" >&5
15305
  no_libIDL=""
15520
  no_libIDL=""
15306
  if test "$LIBIDL_CONFIG" = "no" ; then
15521
  if test "$LIBIDL_CONFIG" = "no" ; then
15307
    no_libIDL=yes
15522
    no_libIDL=yes
Lines 15328-15334 Link Here
15328
  echo $ac_n "cross compiling; assumed OK... $ac_c"
15543
  echo $ac_n "cross compiling; assumed OK... $ac_c"
15329
else
15544
else
15330
  cat > conftest.$ac_ext <<EOF
15545
  cat > conftest.$ac_ext <<EOF
15331
#line 15332 "configure"
15546
#line 15547 "configure"
15332
#include "confdefs.h"
15547
#include "confdefs.h"
15333
15548
15334
#include <stdio.h>
15549
#include <stdio.h>
Lines 15414-15420 Link Here
15414
}
15629
}
15415
15630
15416
EOF
15631
EOF
15417
if { (eval echo configure:15418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
15632
if { (eval echo configure:15633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
15418
then
15633
then
15419
  :
15634
  :
15420
else
15635
else
Lines 15448-15454 Link Here
15448
          CFLAGS="$CFLAGS $LIBIDL_CFLAGS"
15663
          CFLAGS="$CFLAGS $LIBIDL_CFLAGS"
15449
          LIBS="$LIBS $LIBIDL_LIBS"
15664
          LIBS="$LIBS $LIBIDL_LIBS"
15450
          cat > conftest.$ac_ext <<EOF
15665
          cat > conftest.$ac_ext <<EOF
15451
#line 15452 "configure"
15666
#line 15667 "configure"
15452
#include "confdefs.h"
15667
#include "confdefs.h"
15453
15668
15454
#include <stdio.h>
15669
#include <stdio.h>
Lines 15459-15465 Link Here
15459
 return IDL_get_libver_string ? 1 : 0; 
15674
 return IDL_get_libver_string ? 1 : 0; 
15460
; return 0; }
15675
; return 0; }
15461
EOF
15676
EOF
15462
if { (eval echo configure:15463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
15677
if { (eval echo configure:15678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
15463
  rm -rf conftest*
15678
  rm -rf conftest*
15464
   echo "*** The test program compiled, but did not run. This usually means"
15679
   echo "*** The test program compiled, but did not run. This usually means"
15465
          echo "*** that the run-time linker is not finding libIDL or finding the wrong"
15680
          echo "*** that the run-time linker is not finding libIDL or finding the wrong"
Lines 15499-15505 Link Here
15499
# Extract the first word of "$ac_prog", so it can be a program name with args.
15714
# Extract the first word of "$ac_prog", so it can be a program name with args.
15500
set dummy $ac_prog; ac_word=$2
15715
set dummy $ac_prog; ac_word=$2
15501
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15716
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15502
echo "configure:15503: checking for $ac_word" >&5
15717
echo "configure:15718: checking for $ac_word" >&5
15503
if eval "test \"`echo '$''{'ac_cv_path_ORBIT_CONFIG'+set}'`\" = set"; then
15718
if eval "test \"`echo '$''{'ac_cv_path_ORBIT_CONFIG'+set}'`\" = set"; then
15504
  echo $ac_n "(cached) $ac_c" 1>&6
15719
  echo $ac_n "(cached) $ac_c" 1>&6
15505
else
15720
else
Lines 15578-15584 Link Here
15578
    # Extract the first word of "pkg-config", so it can be a program name with args.
15793
    # Extract the first word of "pkg-config", so it can be a program name with args.
15579
set dummy pkg-config; ac_word=$2
15794
set dummy pkg-config; ac_word=$2
15580
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15795
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15581
echo "configure:15582: checking for $ac_word" >&5
15796
echo "configure:15797: checking for $ac_word" >&5
15582
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
15797
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
15583
  echo $ac_n "(cached) $ac_c" 1>&6
15798
  echo $ac_n "(cached) $ac_c" 1>&6
15584
else
15799
else
Lines 15622-15640 Link Here
15622
     PKG_CONFIG_MIN_VERSION=0.9.0
15837
     PKG_CONFIG_MIN_VERSION=0.9.0
15623
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
15838
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
15624
        echo $ac_n "checking for glib-2.0 >= 1.3.7""... $ac_c" 1>&6
15839
        echo $ac_n "checking for glib-2.0 >= 1.3.7""... $ac_c" 1>&6
15625
echo "configure:15626: checking for glib-2.0 >= 1.3.7" >&5
15840
echo "configure:15841: checking for glib-2.0 >= 1.3.7" >&5
15626
15841
15627
        if $PKG_CONFIG --exists "glib-2.0 >= 1.3.7" ; then
15842
        if $PKG_CONFIG --exists "glib-2.0 >= 1.3.7" ; then
15628
            echo "$ac_t""yes" 1>&6
15843
            echo "$ac_t""yes" 1>&6
15629
            succeeded=yes
15844
            succeeded=yes
15630
15845
15631
            echo $ac_n "checking GLIB_CFLAGS""... $ac_c" 1>&6
15846
            echo $ac_n "checking GLIB_CFLAGS""... $ac_c" 1>&6
15632
echo "configure:15633: checking GLIB_CFLAGS" >&5
15847
echo "configure:15848: checking GLIB_CFLAGS" >&5
15633
            GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 1.3.7"`
15848
            GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 1.3.7"`
15634
            echo "$ac_t""$GLIB_CFLAGS" 1>&6
15849
            echo "$ac_t""$GLIB_CFLAGS" 1>&6
15635
15850
15636
            echo $ac_n "checking GLIB_LIBS""... $ac_c" 1>&6
15851
            echo $ac_n "checking GLIB_LIBS""... $ac_c" 1>&6
15637
echo "configure:15638: checking GLIB_LIBS" >&5
15852
echo "configure:15853: checking GLIB_LIBS" >&5
15638
            GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 1.3.7"`
15853
            GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 1.3.7"`
15639
            echo "$ac_t""$GLIB_LIBS" 1>&6
15854
            echo "$ac_t""$GLIB_LIBS" 1>&6
15640
        else
15855
        else
Lines 15716-15722 Link Here
15716
  # Extract the first word of "glib-config", so it can be a program name with args.
15931
  # Extract the first word of "glib-config", so it can be a program name with args.
15717
set dummy glib-config; ac_word=$2
15932
set dummy glib-config; ac_word=$2
15718
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15933
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
15719
echo "configure:15720: checking for $ac_word" >&5
15934
echo "configure:15935: checking for $ac_word" >&5
15720
if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then
15935
if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then
15721
  echo $ac_n "(cached) $ac_c" 1>&6
15936
  echo $ac_n "(cached) $ac_c" 1>&6
15722
else
15937
else
Lines 15751-15757 Link Here
15751
15966
15752
  min_glib_version=${GLIB_VERSION}
15967
  min_glib_version=${GLIB_VERSION}
15753
  echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6
15968
  echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6
15754
echo "configure:15755: checking for GLIB - version >= $min_glib_version" >&5
15969
echo "configure:15970: checking for GLIB - version >= $min_glib_version" >&5
15755
  no_glib=""
15970
  no_glib=""
15756
  if test "$GLIB_CONFIG" = "no" ; then
15971
  if test "$GLIB_CONFIG" = "no" ; then
15757
    no_glib=yes
15972
    no_glib=yes
Lines 15774-15780 Link Here
15774
  echo $ac_n "cross compiling; assumed OK... $ac_c"
15989
  echo $ac_n "cross compiling; assumed OK... $ac_c"
15775
else
15990
else
15776
  cat > conftest.$ac_ext <<EOF
15991
  cat > conftest.$ac_ext <<EOF
15777
#line 15778 "configure"
15992
#line 15993 "configure"
15778
#include "confdefs.h"
15993
#include "confdefs.h"
15779
15994
15780
#include <glib.h>
15995
#include <glib.h>
Lines 15850-15856 Link Here
15850
}
16065
}
15851
16066
15852
EOF
16067
EOF
15853
if { (eval echo configure:15854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
16068
if { (eval echo configure:16069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
15854
then
16069
then
15855
  :
16070
  :
15856
else
16071
else
Lines 15884-15890 Link Here
15884
          CFLAGS="$CFLAGS $GLIB_CFLAGS"
16099
          CFLAGS="$CFLAGS $GLIB_CFLAGS"
15885
          LIBS="$LIBS $GLIB_LIBS"
16100
          LIBS="$LIBS $GLIB_LIBS"
15886
          cat > conftest.$ac_ext <<EOF
16101
          cat > conftest.$ac_ext <<EOF
15887
#line 15888 "configure"
16102
#line 16103 "configure"
15888
#include "confdefs.h"
16103
#include "confdefs.h"
15889
16104
15890
#include <glib.h>
16105
#include <glib.h>
Lines 15894-15900 Link Here
15894
 return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); 
16109
 return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); 
15895
; return 0; }
16110
; return 0; }
15896
EOF
16111
EOF
15897
if { (eval echo configure:15898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
16112
if { (eval echo configure:16113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
15898
  rm -rf conftest*
16113
  rm -rf conftest*
15899
   echo "*** The test program compiled, but did not run. This usually means"
16114
   echo "*** The test program compiled, but did not run. This usually means"
15900
          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
16115
          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
Lines 15969-15987 Link Here
15969
    # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
16184
    # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
15970
# for constant arguments.  Useless!
16185
# for constant arguments.  Useless!
15971
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
16186
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
15972
echo "configure:15973: checking for working alloca.h" >&5
16187
echo "configure:16188: checking for working alloca.h" >&5
15973
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
16188
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
15974
  echo $ac_n "(cached) $ac_c" 1>&6
16189
  echo $ac_n "(cached) $ac_c" 1>&6
15975
else
16190
else
15976
  cat > conftest.$ac_ext <<EOF
16191
  cat > conftest.$ac_ext <<EOF
15977
#line 15978 "configure"
16192
#line 16193 "configure"
15978
#include "confdefs.h"
16193
#include "confdefs.h"
15979
#include <alloca.h>
16194
#include <alloca.h>
15980
int main() {
16195
int main() {
15981
char *p = alloca(2 * sizeof(int));
16196
char *p = alloca(2 * sizeof(int));
15982
; return 0; }
16197
; return 0; }
15983
EOF
16198
EOF
15984
if { (eval echo configure:15985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
16199
if { (eval echo configure:16200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
15985
  rm -rf conftest*
16200
  rm -rf conftest*
15986
  ac_cv_header_alloca_h=yes
16201
  ac_cv_header_alloca_h=yes
15987
else
16202
else
Lines 16002-16013 Link Here
16002
fi
16217
fi
16003
16218
16004
echo $ac_n "checking for alloca""... $ac_c" 1>&6
16219
echo $ac_n "checking for alloca""... $ac_c" 1>&6
16005
echo "configure:16006: checking for alloca" >&5
16220
echo "configure:16221: checking for alloca" >&5
16006
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
16221
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
16007
  echo $ac_n "(cached) $ac_c" 1>&6
16222
  echo $ac_n "(cached) $ac_c" 1>&6
16008
else
16223
else
16009
  cat > conftest.$ac_ext <<EOF
16224
  cat > conftest.$ac_ext <<EOF
16010
#line 16011 "configure"
16225
#line 16226 "configure"
16011
#include "confdefs.h"
16226
#include "confdefs.h"
16012
16227
16013
#ifdef __GNUC__
16228
#ifdef __GNUC__
Lines 16035-16041 Link Here
16035
char *p = (char *) alloca(1);
16250
char *p = (char *) alloca(1);
16036
; return 0; }
16251
; return 0; }
16037
EOF
16252
EOF
16038
if { (eval echo configure:16039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
16253
if { (eval echo configure:16254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
16039
  rm -rf conftest*
16254
  rm -rf conftest*
16040
  ac_cv_func_alloca_works=yes
16255
  ac_cv_func_alloca_works=yes
16041
else
16256
else
Lines 16067-16078 Link Here
16067
16282
16068
16283
16069
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
16284
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
16070
echo "configure:16071: checking whether alloca needs Cray hooks" >&5
16285
echo "configure:16286: checking whether alloca needs Cray hooks" >&5
16071
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
16286
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
16072
  echo $ac_n "(cached) $ac_c" 1>&6
16287
  echo $ac_n "(cached) $ac_c" 1>&6
16073
else
16288
else
16074
  cat > conftest.$ac_ext <<EOF
16289
  cat > conftest.$ac_ext <<EOF
16075
#line 16076 "configure"
16290
#line 16291 "configure"
16076
#include "confdefs.h"
16291
#include "confdefs.h"
16077
#if defined(CRAY) && ! defined(CRAY2)
16292
#if defined(CRAY) && ! defined(CRAY2)
16078
webecray
16293
webecray
Lines 16097-16108 Link Here
16097
if test $ac_cv_os_cray = yes; then
16312
if test $ac_cv_os_cray = yes; then
16098
for ac_func in _getb67 GETB67 getb67; do
16313
for ac_func in _getb67 GETB67 getb67; do
16099
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
16314
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
16100
echo "configure:16101: checking for $ac_func" >&5
16315
echo "configure:16316: checking for $ac_func" >&5
16101
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
16316
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
16102
  echo $ac_n "(cached) $ac_c" 1>&6
16317
  echo $ac_n "(cached) $ac_c" 1>&6
16103
else
16318
else
16104
  cat > conftest.$ac_ext <<EOF
16319
  cat > conftest.$ac_ext <<EOF
16105
#line 16106 "configure"
16320
#line 16321 "configure"
16106
#include "confdefs.h"
16321
#include "confdefs.h"
16107
/* System header to define __stub macros and hopefully few prototypes,
16322
/* System header to define __stub macros and hopefully few prototypes,
16108
    which can conflict with char $ac_func(); below.  */
16323
    which can conflict with char $ac_func(); below.  */
Lines 16125-16131 Link Here
16125
16340
16126
; return 0; }
16341
; return 0; }
16127
EOF
16342
EOF
16128
if { (eval echo configure:16129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
16343
if { (eval echo configure:16344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
16129
  rm -rf conftest*
16344
  rm -rf conftest*
16130
  eval "ac_cv_func_$ac_func=yes"
16345
  eval "ac_cv_func_$ac_func=yes"
16131
else
16346
else
Lines 16152-16158 Link Here
16152
fi
16367
fi
16153
16368
16154
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
16369
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
16155
echo "configure:16156: checking stack direction for C alloca" >&5
16370
echo "configure:16371: checking stack direction for C alloca" >&5
16156
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
16371
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
16157
  echo $ac_n "(cached) $ac_c" 1>&6
16372
  echo $ac_n "(cached) $ac_c" 1>&6
16158
else
16373
else
Lines 16160-16166 Link Here
16160
  ac_cv_c_stack_direction=0
16375
  ac_cv_c_stack_direction=0
16161
else
16376
else
16162
  cat > conftest.$ac_ext <<EOF
16377
  cat > conftest.$ac_ext <<EOF
16163
#line 16164 "configure"
16378
#line 16379 "configure"
16164
#include "confdefs.h"
16379
#include "confdefs.h"
16165
find_stack_direction ()
16380
find_stack_direction ()
16166
{
16381
{
Lines 16179-16185 Link Here
16179
  exit (find_stack_direction() < 0);
16394
  exit (find_stack_direction() < 0);
16180
}
16395
}
16181
EOF
16396
EOF
16182
if { (eval echo configure:16183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
16397
if { (eval echo configure:16398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
16183
then
16398
then
16184
  ac_cv_c_stack_direction=1
16399
  ac_cv_c_stack_direction=1
16185
else
16400
else
Lines 16222-16228 Link Here
16222
    # Extract the first word of "pkg-config", so it can be a program name with args.
16437
    # Extract the first word of "pkg-config", so it can be a program name with args.
16223
set dummy pkg-config; ac_word=$2
16438
set dummy pkg-config; ac_word=$2
16224
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16439
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16225
echo "configure:16226: checking for $ac_word" >&5
16440
echo "configure:16441: checking for $ac_word" >&5
16226
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
16441
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
16227
  echo $ac_n "(cached) $ac_c" 1>&6
16442
  echo $ac_n "(cached) $ac_c" 1>&6
16228
else
16443
else
Lines 16266-16284 Link Here
16266
     PKG_CONFIG_MIN_VERSION=0.9.0
16481
     PKG_CONFIG_MIN_VERSION=0.9.0
16267
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
16482
     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
16268
        echo $ac_n "checking for cairo >= $CAIRO_VERSION""... $ac_c" 1>&6
16483
        echo $ac_n "checking for cairo >= $CAIRO_VERSION""... $ac_c" 1>&6
16269
echo "configure:16270: checking for cairo >= $CAIRO_VERSION" >&5
16484
echo "configure:16485: checking for cairo >= $CAIRO_VERSION" >&5
16270
16485
16271
        if $PKG_CONFIG --exists "cairo >= $CAIRO_VERSION" ; then
16486
        if $PKG_CONFIG --exists "cairo >= $CAIRO_VERSION" ; then
16272
            echo "$ac_t""yes" 1>&6
16487
            echo "$ac_t""yes" 1>&6
16273
            succeeded=yes
16488
            succeeded=yes
16274
16489
16275
            echo $ac_n "checking CAIRO_CFLAGS""... $ac_c" 1>&6
16490
            echo $ac_n "checking CAIRO_CFLAGS""... $ac_c" 1>&6
16276
echo "configure:16277: checking CAIRO_CFLAGS" >&5
16491
echo "configure:16492: checking CAIRO_CFLAGS" >&5
16277
            CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo >= $CAIRO_VERSION"`
16492
            CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo >= $CAIRO_VERSION"`
16278
            echo "$ac_t""$CAIRO_CFLAGS" 1>&6
16493
            echo "$ac_t""$CAIRO_CFLAGS" 1>&6
16279
16494
16280
            echo $ac_n "checking CAIRO_LIBS""... $ac_c" 1>&6
16495
            echo $ac_n "checking CAIRO_LIBS""... $ac_c" 1>&6
16281
echo "configure:16282: checking CAIRO_LIBS" >&5
16496
echo "configure:16497: checking CAIRO_LIBS" >&5
16282
            CAIRO_LIBS=`$PKG_CONFIG --libs "cairo >= $CAIRO_VERSION"`
16497
            CAIRO_LIBS=`$PKG_CONFIG --libs "cairo >= $CAIRO_VERSION"`
16283
            echo "$ac_t""$CAIRO_LIBS" 1>&6
16498
            echo "$ac_t""$CAIRO_LIBS" 1>&6
16284
        else
16499
        else
Lines 16512-16525 Link Here
16512
cross_compiling=$ac_cv_prog_cc_cross
16727
cross_compiling=$ac_cv_prog_cc_cross
16513
16728
16514
    cat > conftest.$ac_ext <<EOF
16729
    cat > conftest.$ac_ext <<EOF
16515
#line 16516 "configure"
16730
#line 16731 "configure"
16516
#include "confdefs.h"
16731
#include "confdefs.h"
16517
#include <gmodule.h>
16732
#include <gmodule.h>
16518
int main() {
16733
int main() {
16519
 int x = 1; x++; 
16734
 int x = 1; x++; 
16520
; return 0; }
16735
; return 0; }
16521
EOF
16736
EOF
16522
if { (eval echo configure:16523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16737
if { (eval echo configure:16738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16523
  :
16738
  :
16524
else
16739
else
16525
  echo "configure: failed program was:" >&5
16740
  echo "configure: failed program was:" >&5
Lines 16798-16804 Link Here
16798
                _SAVE_CFLAGS=$CFLAGS
17013
                _SAVE_CFLAGS=$CFLAGS
16799
    CFLAGS="$CFLAGS $XCFLAGS"
17014
    CFLAGS="$CFLAGS $XCFLAGS"
16800
    cat > conftest.$ac_ext <<EOF
17015
    cat > conftest.$ac_ext <<EOF
16801
#line 16802 "configure"
17016
#line 17017 "configure"
16802
#include "confdefs.h"
17017
#include "confdefs.h"
16803
17018
16804
        #include <stdio.h>
17019
        #include <stdio.h>
Lines 16814-16820 Link Here
16814
    
17029
    
16815
; return 0; }
17030
; return 0; }
16816
EOF
17031
EOF
16817
if { (eval echo configure:16818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17032
if { (eval echo configure:17033: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16818
  :
17033
  :
16819
else
17034
else
16820
  echo "configure: failed program was:" >&5
17035
  echo "configure: failed program was:" >&5
Lines 17024-17057 Link Here
17024
# Transform confdefs.h into DEFS.
17239
# Transform confdefs.h into DEFS.
17025
# Protect against shell expansion while executing Makefile rules.
17240
# Protect against shell expansion while executing Makefile rules.
17026
# Protect against Makefile macro expansion.
17241
# Protect against Makefile macro expansion.
17027
#
17242
cat > conftest.defs <<\EOF
17028
# If the first sed substitution is executed (which looks for macros that
17243
s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
17029
# take arguments), then we branch to the quote section.  Otherwise,
17244
s%[ 	`~#$^&*(){}\\|;'"<>?]%\\&%g
17030
# look for a macro that doesn't take arguments.
17245
s%\[%\\&%g
17031
cat >confdef2opt.sed <<\_ACEOF
17246
s%\]%\\&%g
17032
t clear
17247
s%\$%$$%g
17033
: clear
17248
EOF
17034
s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	(][^ 	(]*([^)]*)\)[ 	]*\(.*\),-D\1=\2,g
17249
DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
17035
t quote
17250
rm -f conftest.defs
17036
s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	][^ 	]*\)[ 	]*\(.*\),-D\1=\2,g
17037
t quote
17038
d
17039
: quote
17040
s,[ 	`~#$^&*(){}\\|;'"<>?],\\&,g
17041
s,\[,\\&,g
17042
s,\],\\&,g
17043
s,\$,$$,g
17044
p
17045
_ACEOF
17046
# We use echo to avoid assuming a particular line-breaking character.
17047
# The extra dot is to prevent the shell from consuming trailing
17048
# line-breaks from the sub-command output.  A line-break within
17049
# single-quotes doesn't work because, if this script is created in a
17050
# platform that uses two characters for line-breaks (e.g., DOS), tr
17051
# would break.
17052
ac_LF_and_DOT=`echo; echo .`
17053
DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
17054
rm -f confdef2opt.sed
17055
17251
17056
MOZ_DEFINES=$DEFS
17252
MOZ_DEFINES=$DEFS
17057
17253
Lines 17315-17320 Link Here
17315
s%@_PANGOCHK_CFLAGS@%$_PANGOCHK_CFLAGS%g
17511
s%@_PANGOCHK_CFLAGS@%$_PANGOCHK_CFLAGS%g
17316
s%@_PANGOCHK_LIBS@%$_PANGOCHK_LIBS%g
17512
s%@_PANGOCHK_LIBS@%$_PANGOCHK_LIBS%g
17317
s%@MOZ_ENABLE_XFT@%$MOZ_ENABLE_XFT%g
17513
s%@MOZ_ENABLE_XFT@%$MOZ_ENABLE_XFT%g
17514
s%@MOZ_PANGO_CFLAGS@%$MOZ_PANGO_CFLAGS%g
17515
s%@MOZ_PANGO_LIBS@%$MOZ_PANGO_LIBS%g
17516
s%@MOZ_ENABLE_PANGO@%$MOZ_ENABLE_PANGO%g
17318
s%@MOZ_ENABLE_COREXFONTS@%$MOZ_ENABLE_COREXFONTS%g
17517
s%@MOZ_ENABLE_COREXFONTS@%$MOZ_ENABLE_COREXFONTS%g
17319
s%@MOZ_GNOMEVFS_CFLAGS@%$MOZ_GNOMEVFS_CFLAGS%g
17518
s%@MOZ_GNOMEVFS_CFLAGS@%$MOZ_GNOMEVFS_CFLAGS%g
17320
s%@MOZ_GNOMEVFS_LIBS@%$MOZ_GNOMEVFS_LIBS%g
17519
s%@MOZ_GNOMEVFS_LIBS@%$MOZ_GNOMEVFS_LIBS%g
Lines 17323-17328 Link Here
17323
s%@MOZ_LIBGNOME_CFLAGS@%$MOZ_LIBGNOME_CFLAGS%g
17522
s%@MOZ_LIBGNOME_CFLAGS@%$MOZ_LIBGNOME_CFLAGS%g
17324
s%@MOZ_LIBGNOME_LIBS@%$MOZ_LIBGNOME_LIBS%g
17523
s%@MOZ_LIBGNOME_LIBS@%$MOZ_LIBGNOME_LIBS%g
17325
s%@MOZ_ENABLE_GNOME_COMPONENT@%$MOZ_ENABLE_GNOME_COMPONENT%g
17524
s%@MOZ_ENABLE_GNOME_COMPONENT@%$MOZ_ENABLE_GNOME_COMPONENT%g
17525
s%@MOZ_GNOMEUI_CFLAGS@%$MOZ_GNOMEUI_CFLAGS%g
17526
s%@MOZ_GNOMEUI_LIBS@%$MOZ_GNOMEUI_LIBS%g
17527
s%@MOZ_ENABLE_GNOMEUI@%$MOZ_ENABLE_GNOMEUI%g
17326
s%@MOZ_EXTRA_X11CONVERTERS@%$MOZ_EXTRA_X11CONVERTERS%g
17528
s%@MOZ_EXTRA_X11CONVERTERS@%$MOZ_EXTRA_X11CONVERTERS%g
17327
s%@MOZ_PLAINTEXT_EDITOR_ONLY@%$MOZ_PLAINTEXT_EDITOR_ONLY%g
17529
s%@MOZ_PLAINTEXT_EDITOR_ONLY@%$MOZ_PLAINTEXT_EDITOR_ONLY%g
17328
s%@MOZ_COMPOSER@%$MOZ_COMPOSER%g
17530
s%@MOZ_COMPOSER@%$MOZ_COMPOSER%g
Lines 17895-17901 Link Here
17895
      fi
18097
      fi
17896
    fi
18098
    fi
17897
18099
17898
    cd $ac_popdir
18100
    cd "$ac_popdir"
17899
  done
18101
  done
17900
fi
18102
fi
17901
18103
Lines 18032-18038 Link Here
18032
      fi
18234
      fi
18033
    fi
18235
    fi
18034
18236
18035
    cd $ac_popdir
18237
    cd "$ac_popdir"
18036
  done
18238
  done
18037
fi
18239
fi
18038
18240
18039
-- debian/mozilla-firefoxrc
18241
++ debian/mozilla-firefoxrc
Line 0 Link Here
0
-- debian/presubj
1
# which /dev/dsp wrapper to use
2
FIREFOX_DSP="auto"
3
++ debian/presubj
Line 0 Link Here
0
-- debian/mozilla-firefox.links
1
*** Please submit non packaging issue (e.g. feature requests) bugs to
2
the Debian BTS and the upstream bugzilla
3
(http://bugzilla.mozilla.org/buglist.cgi?product=Firefox) and put a
4
reference to the bugzilla bug in the Debian bug report, to ease bug
5
triage for the maintainers. Thank you. ***
6
7
If your Firefox installation pre-dates 1.0, you might have had problems
8
Firefox not really cleanly supporting upgrade from one release to another.
9
Please try moving around your ~/.mozilla/firefox directory to see if it
10
helps with your issue.
11
12
Firefox requires the loopback interface (lo) to be up and unfiltered
13
to accept keyboard input and function correctly. Please make sure this
14
is the case before filing any bugs.
15
++ debian/mozilla-firefox.links
Line 0 Link Here
0
-- debian/mozilla-firefox-dom-inspector.install
1
/usr/lib/mozilla-firefox/firefox /usr/bin/mozilla-firefox
2
/usr/lib/mozilla-firefox/firefox /usr/bin/firefox
3
/usr/share/man/man1/mozilla-firefox.1.gz /usr/share/man/man1/firefox.1.gz
4
/var/lib/mozilla-firefox/chrome/overlayinfo /usr/lib/mozilla-firefox/chrome/overlayinfo
5
/var/lib/mozilla-firefox/chrome/chrome.rdf /usr/lib/mozilla-firefox/chrome/chrome.rdf
6
/var/lib/mozilla-firefox/extensions/installed-extensions.txt /usr/lib/mozilla-firefox/extensions/installed-extensions-processed.txt
7
/var/lib/mozilla-firefox/extensions/Extensions.rdf /usr/lib/mozilla-firefox/extensions/Extensions.rdf
8
/var/lib/mozilla-firefox/defaults.ini /usr/lib/mozilla-firefox/defaults.ini
9
/var/lib/mozilla-firefox/components.ini /usr/lib/mozilla-firefox/components.ini
10
/var/lib/mozilla-firefox/components/xpti.dat /usr/lib/mozilla-firefox/components/xpti.dat
11
/var/lib/mozilla-firefox/components/compreg.dat /usr/lib/mozilla-firefox/components/compreg.dat
12
/etc/mozilla-firefox/pref /usr/lib/mozilla-firefox/defaults/syspref
13
/etc/mozilla-firefox/profile /usr/lib/mozilla-firefox/defaults/profile
14
++ debian/mozilla-firefox-dom-inspector.install
Line 0 Link Here
0
-- debian/mozilla-firefox.png.uu
1
debian/tmp/usr/lib/mozilla-firefox/components/libinspector.so usr/lib/mozilla-firefox/extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}/components
2
debian/tmp/usr/lib/mozilla-firefox/components/inspector.xpt usr/lib/mozilla-firefox/extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}/components
3
debian/tmp/usr/lib/mozilla-firefox/chrome/inspector.jar usr/lib/mozilla-firefox/extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}/chrome
4
debian/tmp/usr/lib/mozilla-firefox/res/inspector/viewer-registry.rdf usr/lib/mozilla-firefox/res/inspector
5
debian/tmp/usr/lib/mozilla-firefox/res/inspector/search-registry.rdf usr/lib/mozilla-firefox/res/inspector
6
debian/inspector/install.rdf usr/lib/mozilla-firefox/extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}
7
debian/inspector/Uninstall usr/lib/mozilla-firefox/extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}/uninstall
8
debian/inspector/00dom-inspector var/lib/mozilla-firefox/extensions.d
9
debian/tmp/usr/lib/mozilla-firefox/defaults/pref/inspector.js usr/lib/mozilla-firefox/extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}/defaults/preferences
10
++ debian/mozilla-firefox.png.uu
Line 0 Link Here
0
-- debian/debsearch.gif.uu
1
begin 644 mozilla-firefox.png
2
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
144
KQSEW52FU$X8A412U#A\^;/B[S^O[^;\Z\7.<>GK+0@````!)14Y$KD)@@@``
145
`
146
end
147
++ debian/debsearch.gif.uu
Line 0 Link Here
0
-- debian/mozilla-firefox.install
1
begin 644 debsearch.gif
2
M1TE&.#EA$``0`*4``/___^^_S]!(<,``0,@80-`H8-A@@.>OO\@04-]_G]!`
3
M<-A8@."(H.>?K\`(0._'S\@@4/??W^_/W\@00-^'G]AH@/?G[^^_O_??[^^O
4
MO]`P8-!`8.^OK]!0@-`X<,@84-A@<,@X4-AHD.^GO]A0@.>/K_?/W_______
5
M____________________________________________________________
6
M_________________________________R'^%4-R96%T960@=VET:"!4:&4@
7
M1TE-4``L`````!``$`!`!GA`@%`8$`P(!<-A*+P@A@<#@`.P>"Q#R80R9%02
8
M#T"`(&&22LQT>C%@I`,#P?#B&$J'&(`#*U0DF!8C?&I")%R$:48("8Q&"FD-
9
M#F%J!A`11`.756X`FI)"&1I#&WQ4#QU,'T,1("$)(@N#0@^/B(0*D[9I)B(9
10
$A$$`.P``
11
`
12
end
13
++ debian/mozilla-firefox.install
Line 0 Link Here
0
-- debian/mozilla-firefox.desktop
1
debian/tmp/usr/bin/firefox usr/bin
2
debian/tmp/usr/lib/mozilla-firefox/*.so usr/lib/mozilla-firefox
3
debian/tmp/usr/lib/mozilla-firefox/*.chk usr/lib/mozilla-firefox
4
debian/tmp/usr/lib/mozilla-firefox/components usr/lib/mozilla-firefox
5
debian/tmp/usr/lib/mozilla-firefox/defaults usr/lib/mozilla-firefox
6
debian/tmp/usr/lib/mozilla-firefox/greprefs usr/lib/mozilla-firefox
7
debian/tmp/usr/lib/mozilla-firefox/res usr/lib/mozilla-firefox
8
debian/tmp/usr/lib/mozilla-firefox/searchplugins usr/lib/mozilla-firefox
9
debian/tmp/usr/lib/mozilla-firefox/icons usr/lib/mozilla-firefox
10
debian/tmp/usr/lib/mozilla-firefox/firefox-bin usr/lib/mozilla-firefox
11
debian/mozilla-firefox-xremote-client usr/lib/mozilla-firefox
12
debian/tmp/usr/lib/mozilla-firefox/regchrome usr/lib/mozilla-firefox
13
debian/tmp/usr/lib/mozilla-firefox/regxpcom usr/lib/mozilla-firefox
14
debian/tmp/usr/lib/mozilla-firefox/xp* usr/lib/mozilla-firefox
15
debian/tmp/usr/lib/mozilla-firefox/run-mozilla.sh usr/lib/mozilla-firefox
16
17
debian/tmp/usr/lib/mozilla-firefox/chrome/browser.jar usr/lib/mozilla-firefox/chrome
18
debian/tmp/usr/lib/mozilla-firefox/chrome/comm.jar usr/lib/mozilla-firefox/chrome
19
debian/tmp/usr/lib/mozilla-firefox/chrome/en-US.jar usr/lib/mozilla-firefox/chrome
20
debian/tmp/usr/lib/mozilla-firefox/chrome/help.jar usr/lib/mozilla-firefox/chrome
21
debian/tmp/usr/lib/mozilla-firefox/chrome/icons usr/lib/mozilla-firefox/chrome
22
debian/tmp/usr/lib/mozilla-firefox/chrome/toolkit.jar usr/lib/mozilla-firefox/chrome
23
debian/tmp/usr/lib/mozilla-firefox/chrome/pipnss.jar usr/lib/mozilla-firefox/chrome
24
debian/tmp/usr/lib/mozilla-firefox/chrome/pippki.jar usr/lib/mozilla-firefox/chrome
25
26
debian/mozilla-firefox.desktop usr/share/applications
27
debian/mozilla-firefoxrc etc/mozilla-firefox
28
debian/mozilla-firefox.xpm usr/share/pixmaps
29
debian/mozilla-firefox.png usr/share/pixmaps
30
debian/presubj usr/share/bug/mozilla-firefox
31
32
debian/firefox.js etc/mozilla-firefox/pref
33
34
debian/debsearch.gif usr/lib/mozilla-firefox/searchplugins
35
debian/debsearch.src usr/lib/mozilla-firefox/searchplugins
36
37
debian/tmp/usr/lib/mozilla-firefox/chrome/classic.jar usr/lib/mozilla-firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome
38
debian/theme/00classic var/lib/mozilla-firefox/extensions.d
39
debian/theme/Uninstall usr/lib/mozilla-firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/uninstall
40
++ debian/mozilla-firefox.desktop
Line 0 Link Here
0
-- debian/mozilla-firefox.dirs
1
[Desktop Entry]
2
Encoding=UTF-8
3
Name=Firefox Web Browser
4
Name[fr]=Navigateur Web Firefox
5
GenericName=Web Browser
6
GenericName[fr]=Navigateur Web
7
Comment=Browse the World Wide Web
8
Comment[fr]=Navigue sur Internet
9
Exec=firefox %u
10
Terminal=false
11
MultipleArgs=false
12
Type=Application
13
Icon=mozilla-firefox.png
14
Categories=Application;Network
15
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;x-directory/webdav;x-directory/webdav-prefer-directory;image/gif;image/jpeg;image/png
16
StartupWMClass=Firefox-bin
17
++ debian/mozilla-firefox.dirs
Line 0 Link Here
0
-- debian/update-mozilla-firefox-chrome.8
1
var/lib/mozilla-firefox/extensions.d
2
var/lib/mozilla-firefox/extensions
3
usr/lib/mozilla-firefox/extensions
4
usr/lib/mozilla-firefox/plugins
5
usr/sbin
6
etc/mozilla-firefox
7
8
++ debian/update-mozilla-firefox-chrome.8
Line 0 Link Here
0
-- debian/mozilla-firefox-dom-inspector.preinst
1
.TH UPDATE-MOZILLA-FIREFOX-CHROME 8 
2
.SH NAME
3
update-mozilla-firefox-chrome \- maintence script for Mozilla Firefox
4
.SH SYNOPSIS
5
.B update-mozilla-firefox-chrome [ -v ]
6
.SH OPTIONS
7
.TP
8
\fB\-v\fR
9
Display warning messages, if any.
10
.SH DESCRIPTION
11
Run as superuser to update the installation of Mozilla Firefox.
12
This script is normally called by the package maintainance script; however, you may invoke it yourself if you've added chrome to Mozilla Firefox.
13
.SH "SEE ALSO"
14
.BR mozilla-firefox (1).
15
++ debian/mozilla-firefox-dom-inspector.preinst
Line 0 Link Here
0
-- debian/industrial.jar.uu
1
#!/bin/sh -e
2
3
if [ "$1" = "upgrade" ]; then
4
    # Remove old conf files 
5
    if dpkg --compare-versions "$2" lt 1.0-2; then
6
      rm -f /etc/mozilla-firefox/pref/inspector.js
7
    fi
8
fi
9
10
#DEBHELPER#
11
++ debian/industrial.jar.uu
Line 0 Link Here
0
-- debian/update-mozilla-firefox-chrome
1
begin 644 industrial.jar
2
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
2899
MME73_OE(^H^=%:`=&-ZR\&M@;N?4OZ:[$3)57LM0`````$E%3D2N0F""4$L#
2900
M!`H``````")R9#$'T5!3_@$``/X!```6`!4`8G)O=W-E<B]396%R8V@M8F%R
2901
M+G!N9U54"0`#+X"*05)YR$%5>`0`Z`-D`(E03D<-"AH*````#4E(1%(````0
2902
M````$`@&````'_/_80````9B2T=$`/\`_P#_H+VGDP````EP2%ES```+$P``
2903
M"Q,!`)J<&`````=T24U%!]0("10"$#RMB9@```&+241!5'C:C9.QBNI`%(;_
2904
M7&]CXSR+A6]AMV7:V\@6/H2^@^F7*VHCI+:(J(5"%(2;6DAA,I%H&+`),_\M
2905
MEH3-)L(.'&88SO_QGS-G@,_U!H`_B#Y>+!IC&D-KS<OEPO5Z74#>7@*R+&N,
2906
MS6;#/,\YF\UJ3JPO`"BE&NVM5BOL]WM<KU>$80C/\TKMKR:!XS@00D`(`<=Q
2907
MT.OU((1`FMX0!$$EMP:83"8(PQ!!$$`IA3`,,9U.,1@,\/'Q%\OE\G43[_<[
2908
M`?!P./#Y?-(80Z44`?!\/O-VNW&[W19]``#\+@DDR,][*26R+$.KU<+C\4!3
2909
M3@U0)(Q&([BN"Y+H=#I8+!88#H?06H,DC#'-)6BMF20)HRCB>#PNA\>V[?+L
2910
M^SX]SZN44`%(*2FE9!S'C..84131]_W*-,[G\PK`^@)`DB2-%H_'(_K]VA37
2911
MYX`D+,O"][MNMPO7=1MKKSB(X[C2Y>)<[*?3"4HIV+9=:LM7V.UVR//\I1@`
2912
MVNTVTC0%@'_?G;S_\#L7\:<0_@=?4%M6IMUIH@````!)14Y$KD)@@E!+`P0*
2913
M```````B<F0QK:[IVT$"``!!`@``$@`5`&)R;W=S97(O4V5C=7)E+G!N9U54
2914
M"0`#+X"*05)YR$%5>`0`Z`-D`(E03D<-"AH*````#4E(1%(````0````$`@&
2915
M````'_/_80````9B2T=$`/\`_P#_H+VGDP````EP2%ES```+$P``"Q,!`)J<
2916
M&`````=T24U%!]0("1,[$MEH<XL```'.241!5'C:K9,]BU-!%(:?^Q&3$-8/
2917
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
4465
M8&#X#P:*/UD8&1@8&708@``DP\`DT-,ON>!T=8-)L%UZ<-CVA4P,U@!02P,$
4466
M"@``````'')D,77C:_19`0``60$``"``%0!G;&]B86PO;65N=2]M96YU+6-H
4467
M96-K+6AO=F5R+G!N9U54"0`#)X"*05)YR$%5>`0`Z`-D`(E03D<-"AH*````
4468
M#4E(1%(````,````#`@&````5G5<YP````9B2T=$`/\`_P#_H+VGDP````EP
4469
M2%ES```+$P``"Q,!`)J<&`````=T24U%!]0(#!`?`9FFG9@```#F241!5'C:
4470
MC9&A3D-1$$3/WCSZ!S7(_@`)C@\`C:_I?0D"'`X24(0\A\+>NP1+%0*!02+X
4471
M`2R.Y/4/H'<0M.0%2/M&K9B9G=TQ?6H'8T1/5!@C!3WVY&]4R\G=VU7,&.-F
4472
M"&$6^MC&&$\-\^](:U!/Z@;8%CI;*Z@G=8-Q(K3K[B_``,TU+BK#E!-%Y:JH
4473
M'*:<T(>V)$E%3<J)E!,8@ZKC=@X<+S*WP`'P1N&^N_7GZ'R3+X2N@=:P.V!/
4474
MZ#7?YN=_!0M<"AT!RQ<__"VN`W=_!Z8QQJ%A^\#TM\`TUUA!3R&$69].O@#!
4475
MHUSV^>ROH0````!)14Y$KD)@@E!+`P04````"``<<F0QU+FJA2T```!=````
4476
M(``5`&=L;V)A;"]M96YU+VUE;G4M87)R;W<M:&]V97(N9VEF550)``,G@(I!
4477
M4GG(055X!`#H`V0`<_=TL[!,9&%@9]C,``35_TD!BC]9&$&Z=$`$R`P&%BZ#
4478
M!DF5%4*OLW4[&*P!4$L#!`H``````!QR9#$````````````````,`!4`9VQO
4479
M8F%L+W1R964O550)``,H@(I!"67-055X!`#H`V0`4$L#!!0````(`!QR9#$W
4480
M7AR+J0```+4````;`!4`9VQO8F%L+W1R964O='=I<W1Y+6]P96XN<&YG550)
4481
M``,G@(I!4GG(055X!`#H`V0`ZPSP<^?EDN)B8&#@]?1P"0+2W"#,P08D5ZXI
4482
M5P-2;$G>[BX,8/#3>7<]D.(L\(@L!JH2!F%&AEES)(""["6>OJ[L5S@X1<14
4483
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
4825
M7^K<6R>1;=WC]3WM%?6IO0_K=M>F726L4@R7%<Q"08GHX#HM$JN$_B9RU="O
4826
MN5>&<:WZ+0V?YB73&7ZWP?"NS'X!B79-V8YDW0Y7N];>=24S2C-PL?P;U$?B
4827
MM:W:A%PE;(UY:^S-ZP6Y!=#X#U!+`P0*```````=<F0Q````````````````
4828
M#0`5`&=L;V)A;"]A<G)O=R]55`D``RJ`BD$)9<U!57@$`.@#9`!02P,$%```
4829
M``@`'7)D,3OH[)(J````+P```!X`%0!G;&]B86PO87)R;W<O87)R;W<M;&9T
4830
M+6AO=BYG:6955`D``RF`BD%3><A!57@$`.@#9`!S]W2SL$QD9F!E:&!D`(+_
4831
M__\K_F0!,AD9=$!\D`P#$YM/P8(5;*P,U@!02P,$%`````@`'7)D,8\A8O<I
4832
M````+@```!X`%0!G;&]B86PO87)R;W<O87)R;W<M<FET+6AO=BYG:6955`D`
4833
M`RF`BD%3><A!57@$`.@#9`!S]W2SL$QD9F!E:&!D`(+___\K_F0!,AD9=$!\
4834
MD`P#$ZL+T[3N<`9K`%!+`P04````"``=<F0Q16`+_C0````X````)``5`&=L
4835
M;V)A;"]A<G)O=R]A<G)O=RUR:70M<VAA<G`M96YD+F=I9E54"0`#*8"*05-Y
4836
MR$%5>`0`Z`-D`'/W=+.P3&1GX&1H8&0`@O___RO^9`$R&1ET0'R0#`,3OTO=
4837
M`HE=+WVZVPZ9JZ:L96"P!@!02P,$%`````@`'7)D,;]7;'@I````+@```!D`
4838
M%0!G;&]B86PO87)R;W<O87)R;W<M9&XN9VEF550)``,I@(I!4WG(055X!`#H
4839
M`V0`<_=TL[!,9&5@9FA@9`""____*_YD`3(9&71`?)`,`Q-KBZPX=S2#-0!0
4840
M2P,$%`````@`'7)D,3VB(L_9````W@```"D`%0!G;&]B86PO87)R;W<O87)R
4841
M;W=S+61R;W!D;W=N+61I<V%B;&5D+G!N9U54"0`#*8"*05-YR$%5>`0`Z`-D
4842
M`.L,\'/GY9+B8F!@X/7T<`D"TGQ`+,3!!B2S8]X;`BFV)&]W%X;_(+A@[_+)
4843
M0!'.`H_(8@8&_@X&!H$YC/HRT^8!!=E+/'U=V:]P\/*SL+RW45P*,L#3Q3&D
4844
MXM;1R=Y<#08\+O%.^8__5K'O_;)CHU)K71`K<V3)J<4O51AOJ`CZIALN<S`^
4845
MG;C!P?3-Q.GSTONGA+^V#9\]T2V^YNFKY0E=LY@57GZXE^I\G['4>^U#[EV^
4846
MTGR6$^3G:MSZ4I91:OWFOMV\FLF[N)\\T`;Y@,'3U<]EG5-"$P!02P,$%```
4847
M``@`'7)D,5XT[M8P````-0```"``%0!G;&]B86PO87)R;W<O87)R;W<M;&9T
4848
M+7-H87)P+F=I9E54"0`#*8"*05-YR$%5>`0`Z`-D`'/W=+.P3&1EX&1H8&0`
4849
M@O___RO^9`$R&1ET0'R0#`,33P\S>^=M[EB3`,,H!@9K`%!+`P04````"``=
4850
M<F0Q\GE>/3`````T````'P`5`&=L;V)A;"]A<G)O=R]A<G)O=RUU<"US:&%R
4851
M<"YG:6955`D``RF`BD%3><A!57@$`.@#9`!S]W2SL$SD9&!E:&!D`(+___\K
4852
M_F0!,AD9=$!\D`P#$W</\_(#77=XYN0?8F*P!@!02P,$%`````@`'7)D,3!_
4853
MVT0M````+@```!T`%0!G;&]B86PO87)R;W<O87)R;W<M9&XM9&ES+F=I9E54
4854
M"0`#*8"*05-YR$%5>`0`Z`-D`'/W=+.P3&1E8&9H8&2HKZ____^_XD\61@8&
4855
M1@8=!B``R3`PL;;(BG-',U@#`%!+`P04````"``=<F0QCR%B]RD````N````
4856
M&@`5`&=L;V)A;"]A<G)O=R]A<G)O=RUR:70N9VEF550)``,I@(I!4WG(055X
4857
M!`#H`V0`<_=TL[!,9&9@96A@9`""____*_YD`3(9&71`?)`,`Q.K"].T[G`&
4858
M:P!02P,$%`````@`'7)D,0B2B%LI````+@```!D`%0!G;&]B86PO87)R;W<O
4859
M87)R;W<M=7`N9VEF550)``,I@(I!4WG(055X!`#H`V0`<_=TL[!,9&5@9FA@
4860
M9`""____*_YD`3(9&71`?)`,`Q.K3P+[CE@&:P!02P,$%`````@`'7)D,3OH
4861
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
5329
M"S<Z]S>++R^OBD,;_9JMF#[^-ZXB;A[9[->33R^+52'WS'\#I1:<KC)NK6_T
5330
MY9975U[_!545(4%DLZDM`````$E%3D2N0F""4$L#!`H``````"!R9#'P'?2R
5331
MN0$``+D!```D`!4`9VQO8F%L+VEC;VYS+VUE;G4O<&%S=&4M9&ES86)L960N
5332
M<&YG550)``,K@(I!4WG(055X!`#H`V0`B5!.1PT*&@H````-24A$4@```!``
5333
M```0"`8````?\_]A````!F)+1T0`_P#_`/^@O:>3````"7!(67,```L3```+
5334
M$P$`FIP8````!W1)344'U`L#%0<BH-+<W@```49)1$%4>-J]T;U+6V$4!^`G
5335
MB0E2A0R66-.KT204B78HXM#1P8Q2NCAT,JB%XBS([=*AD_X!KHX."B(N;A5<
5336
M'+IU:[%0[*#@X"Q<E_>6^`$72^E9?KQ?AX?S\G#]P`HN950!\WB#(UR'G$4_
5337
MMD*SZZ[S*KZE#?)H#@TZ17%TV!F62R6KN"H4?,)*_Q/3>%6MF$+SKB)!\?6D
5338
M373*?3:0KSSU#HU2CP-\:$;V,1/NWZJX'NF@]J)F%YW>H@LLA5P<&G",ER//
5339
M?$'\D*`G"&JMNC6\#?MQ1K8@'HLL=0EJ2)(D^85V1B9W9Y`*8K0183UD.PQP
5340
M'>6PCB%NC%C^'X+WZ3IM\D<P%@23#=M_*RAE",:Q%AY]OC>#^K"%?R8(F0K*
5341
M78+N7ZC?$CROV,/L:-57S#U&D,?WLW,G./SYVP[V\#&7RT68SLB)&P-PT1#8
5342
M".UM`````$E%3D2N0F""4$L#!`H``````"!R9#&3+119]P$``/<!```:`!4`
5343
M9VQO8F%L+VEC;VYS+VUE;G4O<')E9BYP;F=55`D``RN`BD%3><A!57@$`.@#
5344
M9`")4$Y'#0H:"@````U)2$12````$````!`(!@```!_S_V$````&8DM'1`#_
5345
M`/\`_Z"]IY,```&L241!5'C:K9%/2--Q&,8_1C0(`Z%IEX:74'9I&\%HARX=
5346
MDH)01K<.'B4HL+QX4`(1A'`'#Q:"!(*R0Q$,/5D7#Y6*-)WMUTJG^`><3CH%
5347
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
10945
MH^$7.85`7W<I.#.Y`7I0YL<$(0RELI=@'JNQBI*)0,90,^M@<PD2IJ2&87#A
10946
MQ&R?11W&7>,%Y"Y8D>R]A0(LMH<*C*6"-;F\V";I61^%+_(4]V-$"<53,\HL
10947
MS7!LD)9*CFQU7Q9'MBZS77KT?J&R'F1-6M8Y`RVMM\E24,+#576];Z1\T11;
10948
M]-;S:HM8LOT_J;VD*[?7M(WI*.O]WM;+,%I<7=O[=P.TANHF2Y6KQP">/)RB
10949
MLZKGM*T-9?(PTQ`E)69%F[_[N6@H;2S+Y>Y[.:DS*R/K2$+?:=A3F;(4"A">
10950
M,WX_%I](JRKA)9Y+_MER%/_17+1':CH;K0&O3S%/4"FICRH85:1$#1Z!$[4C
10951
M?%[G9"LW>-?(_P0JGZUA<<1=;/W266W:8\FYVRDL'&D3C'/(?5=J7MTZ*B=;
10952
ML%3U$]^PS92Z9(7ZK\PJE[B_STO_``Y6SW@1<GJG)<+=D'V:(6;7M($7H%D.
10953
MD9"'!-2>^J`PR=IOLU2'>[Z5O9>LK];ZH+[18V754ES8W_D<ZG$A#1@BZ+M6
10954
M@R]W+*-\\E1^N`K_)JG3?3#=T>+;'PQ?J<0&<PJ=FOMM/C$T/';J+2^HS-J)
10955
M,]5@17TOVJ98SM_`IQCOUJQY\__[$S\,/6+"UM'>!+>.WJ,]#25Y-;D*&;/@
10956
M_P!02P$"%P,*``````"`<Y4Q````````````````"``-`````````!``[4$`
10957
M````8G)O=W-E<B]55`4``S]YR$%5>```4$L!`A<#"@``````E1)K,0``````
10958
M``````````T`#0`````````0`.U!.P```&)R;W=S97(O<')E9B]55`4``\H2
10959
MDT%5>```4$L!`A<#%`````@`E1)K,=_]B'*-!@``>Q,``!4`#0```````0``
10960
M`("!>P```&)R;W=S97(O<')E9B]P<F5F+F-S<U54!0`#RA*3055X``!02P$"
10961
M%P,4````"`!4@F0Q(N^V6&<C``#*(P``&``-````````````@(%0!P``8G)O
10962
M=W-E<B]P<F5F+T]P=&EO;G,N<&YG550%``.PG(I!57@``%!+`0(7`Q0````(
10963
M`")R9#'@^Q%V7@<``&D)```4``T```````````"`@0(K``!B<F]W<V5R+U1H
10964
M<F]B8F5R+F=I9E54!0`#+X"*055X``!02P$"%P,*```````B<F0QV)#%O5<"
10965
M``!7`@``%``-````````````@(&G,@``8G)O=W-E<B]4:')O8F)E<BYP;F=5
10966
M5`4``R^`BD%5>```4$L!`A<#"@``````(G)D,9[\J5?`!@``P`8```X`#0``
10967
M`````````("!134``&)R;W=S97(O1V\N<&YG550%``,O@(I!57@``%!+`0(7
10968
M`Q0````(`")R9#'B>DX+X@```)H!```4``T```````$```"`@48\``!B<F]W
10969
M<V5R+W!A9V5);F9O+F-S<U54!0`#+X"*055X``!02P$"%P,*```````B<F0Q
10970
MM1I"&0P#```,`P``%0`-````````````I(%O/0``8G)O=W-E<B]H:6=H;&EG
10971
M:'0N<&YG550%``,O@(I!57@``%!+`0(7`Q0````(`$R8DS&B#*7VS$@!`,-(
10972
M`0`6``T```````````"`@<-```!B<F]W<V5R+U1O;VQB87(N>&-F+F=Z550%
10973
M``./%L9!57@``%!+`0(7`PH``````")R9#%=R2MYD`$``)`!```9``T`````
10974
M``````"`@=B)`0!B<F]W<V5R+T-L;W-E+71A8BUO;&0N<&YG550%``,O@(I!
10975
M57@``%!+`0(7`PH``````(=>93%CD$/_L`$``+`!```:``T```````````"D
10976
M@;2+`0!B<F]W<V5R+W!A9V4M;&EV96UA<FMS+G!N9U54!0`#O:^+055X``!0
10977
M2P$"%P,*``````#+F9,Q0SR)N%<^``!7/@``'``-````````````@(&QC0$`
10978
M8G)O=W-E<B]4;V]L8F%R+7-M86QL+GAC9BYG>E54!0`#7AG&055X``!02P$"
10979
M%P,4````"``B<F0Q3B05*SP```!#````&``-````````````@(%7S`$`8G)O
10980
M=W-E<B]S96%R8V@M87)R;W<N9VEF550%``,O@(I!57@``%!+`0(7`Q0````(
10981
M`-B9DS'_8=-R524``'LE```9``T```````````"`@=[,`0!B<F]W<V5R+U1O
10982
M;VQB87(M<VUA;&PN<&YG550%``-W&<9!57@``%!+`0(7`PH``````#M@93&<
10983
M*,]+=@<``'8'```9``T```````````"V@7_R`0!B<F]W<V5R+VQI=F5M87)K
10984
M+6ET96TN<&YG550%``,"LHM!57@``%!+`0(7`PH``````")R9#$13AS9W`(`
10985
M`-P"```7``T```````````"`@4'Z`0!B<F]W<V5R+W!A9V4M=&AE;65S+G!N
10986
M9U54!0`#+X"*055X``!02P$"%P,*```````B<F0Q!]%04_X!``#^`0``%@`-
10987
M````````````@(%G_0$`8G)O=W-E<B]396%R8V@M8F%R+G!N9U54!0`#+X"*
10988
M055X``!02P$"%P,*```````B<F0QK:[IVT$"``!!`@``$@`-````````````
10989
M@(&N_P$`8G)O=W-E<B]396-U<F4N<&YG550%``,O@(I!57@``%!+`0(7`PH`
10990
M`````")R9#'&^^M<'0(``!T"```;``T```````````"`@30"`@!B<F]W<V5R
10991
M+U-E8W5R:71Y+6)R;VME;BYP;F=55`4``R^`BD%5>```4$L!`A<#"@``````
10992
M(G)D,76TG0EX`0``>`$``!``#0```````````("!GP0"`&)R;W=S97(O26YF
10993
M;RYP;F=55`4``R^`BD%5>```4$L!`A<#%`````@`(G)D,3A*:OF,#P``;1(`
10994
M`!L`#0```````````*2!6@8"`&)R;W=S97(O5&AR;V)B97(M;65D:75M+F=I
10995
M9E54!0`#+X"*055X``!02P$"%P,*```````B<F0QXDZ/=((#``""`P``&P`-
10996
M````````````I($T%@(`8G)O=W-E<B]4:')O8F)E<BUM961I=6TN<&YG550%
10997
M``,O@(I!57@``%!+`0(7`PH``````")R9#%$]5ILP`8``,`&```4``T`````
10998
M``````"`@00:`@!B<F]W<V5R+T=O+7-M86QL+G!N9U54!0`#+X"*055X``!0
10999
M2P$"%P,*``````!*7V4Q$;;]<MT$``#=!```&@`-````````````I($+(0(`
11000
M8G)O=W-E<B]L:79E;6%R:RUI=&5M:2YP;F=55`4``RRQBT%5>```4$L!`A<#
11001
M%`````@`(G)D,?>)VO="!0``"P<``!\`#0```````````*2!-28"`&)R;W=S
11002
M97(O5&AR;V)B97(M<VUA;&PM9&%R:RYG:6955`4``R^`BD%5>```4$L!`A<#
11003
M%`````@`R9B3,;2(J*@E;```OFX``!,`#0```````````("!R2L"`&)R;W=S
11004
M97(O5&]O;&)A<BYP;F=55`4``WD7QD%5>```4$L!`A<#%`````@`(G)D,07)
11005
MPTJA`0``;P,``!<`#0```````0```("!-)@"`&)R;W=S97(O86)O=71$:6%L
11006
M;V<N8W-S550%``,O@(I!57@``%!+`0(7`Q0````(`")R9#%0OOIR>P4``$4'
11007
M```:``T```````````"`@1^:`@!B<F]W<V5R+U1H<F]B8F5R+7-M86QL+F=I
11008
M9E54!0`#+X"*055X``!02P$"%P,*```````B<F0Q\_<8)+\!``"_`0``&@`-
11009
M````````````@('GGP(`8G)O=W-E<B]4:')O8F)E<BUS;6%L;"YP;F=55`4`
11010
M`R^`BD%5>```4$L!`A<#"@``````#IR3,0```````````````!(`#0``````
11011
M```0`.U!\Z$"`&)R;W=S97(O8F]O:VUA<FMS+U54!0`#FQW&055X``!02P$"
11012
M%P,4````"`!`<F0Q.39WZST"```T"0``)@`-```````!````@($XH@(`8G)O
11013
M=W-E<B]B;V]K;6%R:W,O8F]O:VUA<FMS36%N86=E<BYC<W-55`4``VB`BD%5
11014
M>```4$L!`A<#%`````@`)YR3,2O,06Y4'@``@AX``"<`#0```````````("!
11015
MSJ0"`&)R;W=S97(O8F]O:VUA<FMS+T)O;VMM87)K<RUT;V]L8F%R+G!N9U54
11016
M!0`#R1W&055X``!02P$"%P,4````"``B<F0Q_.S?N<$```!I`0``(0`-````
11017
M```!````@(%\PP(`8G)O=W-E<B]B;V]K;6%R:W,O861D0F]O:VUA<FLN8W-S
11018
M550%``,O@(I!57@``%!+`0(7`Q0````(`")R9#'EL0&'K@```&,!```5``T`
11019
M``````$```"D@9'$`@!B<F]W<V5R+W-E87)C:&)A<BYC<W-55`4``R^`BD%5
11020
M>```4$L!`A<#%`````@`(G)D,0!.1KQ8`0``-P,``!0`#0```````0```("!
11021
MA\4"`&)R;W=S97(O8V]N=&5N=',N<F1F550%``,O@(I!57@``%!+`0(7`Q0`
11022
M```(`+&:DS&Z"LRH;Q@``-&%```3``T```````$```"`@2;'`@!B<F]W<V5R
11023
M+V)R;W=S97(N8W-S550%``,-&\9!57@``%!+`0(7`Q0````(`")R9#%F#U]P
11024
MV`$``'($```3``T```````$```"`@=O?`@!B<F]W<V5R+V)R;W=S97(N>&UL
11025
M550%``,O@(I!57@``%!+`0(7`PH``````!MR9#$````````````````-``T`
11026
M````````$`#M0?GA`@!C;VUM=6YI8V%T;W(O550%``,F@(I!57@``%!+`0(7
11027
M`PH``````!MR9#$````````````````4``T`````````$`#M03GB`@!C;VUM
11028
M=6YI8V%T;W(O8V]O:VEE+U54!0`#)H"*055X``!02P$"%P,4````"``;<F0Q
11029
MCNOQSML"``#_`P``)@`-````````````@(&`X@(`8V]M;75N:6-A=&]R+V-O
11030
M;VMI92]T87-K8F%R+6-O;VMI92YG:6955`4``R:`BD%5>```4$L!`A<#%```
11031
M``@`&W)D,<B#)S:2!@``S`8``"4`#0```````````("!M.4"`&-O;6UU;FEC
11032
M871O<B]C;V]K:64O<W1A='5S+6-O;VMI92YG:6955`4``R:`BD%5>```4$L!
11033
M`A<#"@``````&W)D,>--XFTI````*0```!T`#0```````0```("!GNP"`&-O
11034
M;6UU;FEC871O<B]C;VUM=6YI8V%T;W(N8W-S550%``,F@(I!57@``%!+`0(7
11035
M`Q0````(`!MR9#%*-T.N;`$``%T#```9``T```````$```"`@1?M`@!C;VUM
11036
M=6YI8V%T;W(O8V]N=&5N=',N<F1F550%``,F@(I!57@``%!+`0(7`PH`````
11037
M`!QR9#$````````````````5``T`````````$`#M0<_N`@!C;VUM=6YI8V%T
11038
M;W(O<')O9FEL92]55`4``R>`BD%5>```4$L!`A<#%`````@`&W)D,7:SD,V,
11039
M`P``.P<``"``#0```````0```("!%^\"`&-O;6UU;FEC871O<B]P<F]F:6QE
11040
M+W!R;V9I;&4N8W-S550%``,F@(I!57@``%!+`0(7`Q0````(`!MR9#&98$<[
11041
M@@```(<````@``T```````````"`@?;R`@!C;VUM=6YI8V%T;W(O<')O9FEL
11042
M92]M:6=R871E+F=I9E54!0`#)H"*055X``!02P$"%P,4````"``<<F0Q*>V;
11043
M\DH```!,````*@`-````````````@('+\P(`8V]M;75N:6-A=&]R+W!R;V9I
11044
M;&4O<')O9FEL96EC;VXM;&%R9V4N9VEF550%``,G@(I!57@``%!+`0(7`Q0`
11045
M```(`!QR9#$,TS?7K@```.0````G``T```````$```"`@7+T`@!C;VUM=6YI
11046
M8V%T;W(O<')O9FEL92]P<F]F:6QE36%N86=E<BYC<W-55`4``R>`BD%5>```
11047
M4$L!`A<#%`````@`(G)D,56)HW2E`0``608```P`#0```````0```("!>O4"
11048
M`&-O;G1E;G1S+G)D9E54!0`#+X"*055X``!02P$"%P,*``````!\<Y4Q````
11049
M````````````!P`-`````````!``[4%>]P(`9VQO8F%L+U54!0`#/'G(055X
11050
M``!02P$"%P,4````"`#P8'$Q%Y)5&C`&``!3%P``#P`-```````!````@(&8
11051
M]P(`9VQO8F%L+VUE;G4N8W-S550%``-3A9M!57@``%!+`0(7`PH``````(]H
11052
M:3$````````````````,``T`````````$`#M00K^`@!G;&]B86PO;65N=2]5
11053
M5`4``ZX&D4%5>```4$L!`A<#%`````@`'')D,:=LYC`\````8P```!H`#0``
11054
M`````````("!2?X"`&=L;V)A;"]M96YU+VUE;G4M<F%D:6\N9VEF550%``,G
11055
M@(I!57@``%!+`0(7`PH``````!QR9#%D^=$<&0(``!D"```:``T`````````
11056
M``"`@=+^`@!G;&]B86PO;65N=2]M96YU+7)A9&EO+G!N9U54!0`#)X"*055X
11057
M``!02P$"%P,4````"``<<F0Q)CO?<I$```":````(P`-````````````@($X
11058
M`0,`9VQO8F%L+VUE;G4O365N=2UA<G)O=RUD:7-A8FQE9"YP;F=55`4``R>`
11059
MBD%5>```4$L!`A<#%`````@`'')D,7RP(BH\````8P```"``#0``````````
11060
M`("!'P(#`&=L;V)A;"]M96YU+VUE;G4M<F%D:6\M:&]V97(N9VEF550%``,G
11061
M@(I!57@``%!+`0(7`PH``````!QR9#&G->:MA0$``(4!```@``T`````````
11062
M``"`@:X"`P!G;&]B86PO;65N=2]M96YU+7)A9&EO+6AO=F5R+G!N9U54!0`#
11063
M)X"*055X``!02P$"%P,4````"``<<F0QIVSF,#P```!C````(P`-````````
11064
M````@(&&!`,`9VQO8F%L+VUE;G4O;65N=2UR861I;RUD:7-A8FQE9"YG:695
11065
M5`4``R>`BD%5>```4$L!`A<#"@``````'')D,:6Q,GZ1`0``D0$``",`#0``
11066
M`````````("!&`4#`&=L;V)A;"]M96YU+VUE;G4M<F%D:6\M9&ES86)L960N
11067
M<&YG550%``,G@(I!57@``%!+`0(7`Q0````(`!QR9#'667E^C````)8````:
11068
M``T```````````"`@?\&`P!G;&]B86PO;65N=2]-96YU+6%R<F]W+G!N9U54
11069
M!0`#)X"*055X``!02P$"%P,4````"``<<F0Q'>4D^(T```"7````(``-````
11070
M````````@('8!P,`9VQO8F%L+VUE;G4O365N=2UA<G)O=RUH;W9E<BYP;F=5
11071
M5`4``R>`BD%5>```4$L!`A<#%`````@`'')D,8]QYA0T`0``.0$``"D`#0``
11072
M`````````("!N`@#`&=L;V)A;"]M96YU+VUE;G4M<F%D:6\M9&ES86)L960M
11073
M:&]V97(N<&YG550%``,G@(I!57@``%!+`0(7`Q0````(`!QR9#$[(DHW/```
11074
M`&8````C``T```````````"`@4@*`P!G;&]B86PO;65N=2]M96YU+6-H96-K
11075
M+61I<V%B;&5D+F=I9E54!0`#)X"*055X``!02P$"%P,4````"``<<F0QK[(Y
11076
M#IT```"L````(P`-````````````@(':"@,`9VQO8F%L+VUE;G4O;65N=2UC
11077
M:&5C:RUD:7-A8FQE9"YP;F=55`4``R>`BD%5>```4$L!`A<#%`````@`'')D
11078
M,3LB2C<\````9@```!H`#0```````````("!S0L#`&=L;V)A;"]M96YU+VUE
11079
M;G4M8VAE8VLN9VEF550%``,G@(I!57@``%!+`0(7`Q0````(`!QR9#&&K?0+
11080
M'0$``"`!```:``T```````````"`@58,`P!G;&]B86PO;65N=2]M96YU+6-H
11081
M96-K+G!N9U54!0`#)X"*055X``!02P$"%P,4````"``<<F0QNYF-0RT````Q
11082
M````&@`-````````````@('`#0,`9VQO8F%L+VUE;G4O;65N=2UA<G)O=RYG
11083
M:6955`4``R>`BD%5>```4$L!`A<#%`````@`'')D,;BDY@TV````70```",`
11084
M#0```````````("!.@X#`&=L;V)A;"]M96YU+VUE;G4M87)R;W<M9&ES86)L
11085
M960N9VEF550%``,G@(I!57@``%!+`0(7`Q0````(`!QR9#'LHLLD`P$```@!
11086
M```I``T```````````"`@<8.`P!G;&]B86PO;65N=2]M96YU+6-H96-K+61I
11087
M<V%B;&5D+6AO=F5R+G!N9U54!0`#)X"*055X``!02P$"%P,4````"``<<F0Q
11088
M,O'-/30````Y````(``-````````````@($E$`,`9VQO8F%L+VUE;G4O;65N
11089
M=2UC:&5C:RUH;W9E<BYG:6955`4``R>`BD%5>```4$L!`A<#"@``````'')D
11090
M,77C:_19`0``60$``"``#0```````````("!K!`#`&=L;V)A;"]M96YU+VUE
11091
M;G4M8VAE8VLM:&]V97(N<&YG550%``,G@(I!57@``%!+`0(7`Q0````(`!QR
11092
M9#'4N:J%+0```%T````@``T```````````"`@5@2`P!G;&]B86PO;65N=2]M
11093
M96YU+6%R<F]W+6AO=F5R+F=I9E54!0`#)X"*055X``!02P$"%P,*```````<
11094
M<F0Q````````````````#``-`````````!``[4'8$@,`9VQO8F%L+W1R964O
11095
M550%``,H@(I!57@``%!+`0(7`Q0````(`!QR9#$W7AR+J0```+4````;``T`
11096
M``````````"`@1<3`P!G;&]B86PO=')E92]T=VES='DM;W!E;BYP;F=55`4`
11097
M`R>`BD%5>```4$L!`A<#%`````@`'')D,</_`AA'````2@```!P`#0``````
11098
M`````("!#A0#`&=L;V)A;"]T<F5E+V-O;'5M;G!I8VME<BYG:6955`4``R>`
11099
MBD%5>```4$L!`A<#%`````@`'')D,;[HM@RP````N@```!L`#0``````````
11100
M`("!I!0#`&=L;V)A;"]T<F5E+W1W:7-T>2UC;'-D+G!N9U54!0`#)X"*055X
11101
M``!02P$"%P,*```````<<F0Q@["Z0#4#```U`P``&``-````````````@(&B
11102
M%0,`9VQO8F%L+W1R964O<V]R="UA<V,N9VEF550%``,G@(I!57@``%!+`0(7
11103
M`Q0````(`!QR9#'AUA_;K````+D````?``T```````````"`@2(9`P!G;&]B
11104
M86PO=')E92]T=VES='DM8VQS9"UH=G(N<&YG550%``,H@(I!57@``%!+`0(7
11105
M`Q0````(`!QR9#'3!(23H````*X````?``T```````````"`@2`:`P!G;&]B
11106
M86PO=')E92]T=VES='DM;W!E;BUH=G(N<&YG550%``,H@(I!57@``%!+`0(7
11107
M`PH``````!QR9#%\%T9A,P,``#,#```8``T```````````"`@1(;`P!G;&]B
11108
M86PO=')E92]S;W)T+61S8RYG:6955`4``RB`BD%5>```4$L!`A<#%`````@`
11109
MPUYF,?4EKX-^!P``AQX```\`#0```````0```("!D!X#`&=L;V)A;"]T<F5E
11110
M+F-S<U54!0`#K@&-055X``!02P$"%P,*```````<<F0Q````````````````
11111
M#P`-`````````!``[4%0)@,`9VQO8F%L+V-O;G-O;&4O550%``,H@(I!57@`
11112
M`%!+`0(7`Q0````(`!QR9#'GN";O+0```#`````E``T```````````"`@9(F
11113
M`P!G;&]B86PO8V]N<V]L92]C;VYS;VQE+65R<F]R+61A<V@N9VEF550%``,H
11114
M@(I!57@``%!+`0(7`Q0````(`!QR9#&Y!:W!E@4``%L.```:``T```````$`
11115
M``"`@1<G`P!G;&]B86PO8V]N<V]L92]C;VYS;VQE+F-S<U54!0`#*("*055X
11116
M``!02P$"%P,4````"``<<F0Q6,*4FC4````W````)@`-````````````@('Z
11117
M+`,`9VQO8F%L+V-O;G-O;&4O8V]N<V]L92UE<G)O<BUC87)E="YG:6955`4`
11118
M`RB`BD%5>```4$L!`A<#%`````@`'')D,8.-S5V5!```T`L``!@`#0``````
11119
M`0```("!B"T#`&=L;V)A;"]P<F]G<F5S<VUE=&5R+F-S<U54!0`#*("*055X
11120
M``!02P$"%P,4````"``<<F0Q$(9MEAD$``#I"@``$``-```````!````@(%H
11121
M,@,`9VQO8F%L+W)A9&EO+F-S<U54!0`#*("*055X``!02P$"%P,4````"``<
11122
M<F0Q&0PWEX$"``!'!```&P`-```````!````@('$-@,`9VQO8F%L+V-U<W1O
11123
M;6EZ951O;VQB87(N8W-S550%``,H@(I!57@``%!+`0(7`Q0````(`&AZ<#$I
11124
M>F6R?`0``.82```5``T```````$```"`@9,Y`P!G;&]B86PO9F]R;6%T=&EN
11125
M9RYC<W-55`4``\1@FD%5>```4$L!`A<#%`````@`'')D,1(H5,T.`@``FP,`
11126
M`!,`#0```````0```("!5SX#`&=L;V)A;"]E>'!A;F1E<BYC<W-55`4``RB`
11127
MBD%5>```4$L!`A<#%`````@`$FQQ,28F#_H*!0``!Q```!(`#0```````0``
11128
M`("!JT`#`&=L;V)A;"]T;V]L8F%R+F-S<U54!0`#1)F;055X``!02P$"%P,4
11129
M````"``=<F0Q??6Q**X$``"/"P``$@`-```````!````@('Z10,`9VQO8F%L
11130
M+W!L=6=I;G,N8W-S550%``,I@(I!57@``%!+`0(7`Q0````(`!(-:S'^S9`U
11131
M!P4```$0```1``T```````$```"`@>U*`P!G;&]B86PO=&%B8F]X+F-S<U54
11132
M!0`#9`F3055X``!02P$"%P,*```````=<F0Q````````````````#0`-````
11133
M`````!``[4$X4`,`9VQO8F%L+V%R<F]W+U54!0`#*H"*055X``!02P$"%P,4
11134
M````"``=<F0Q.^CLDBH````O````'@`-````````````@(%X4`,`9VQO8F%L
11135
M+V%R<F]W+V%R<F]W+6QF="UH;W8N9VEF550%``,I@(I!57@``%!+`0(7`Q0`
11136
M```(`!UR9#&/(6+W*0```"X````>``T```````````"`@?-0`P!G;&]B86PO
11137
M87)R;W<O87)R;W<M<FET+6AO=BYG:6955`4``RF`BD%5>```4$L!`A<#%```
11138
M``@`'7)D,45@"_XT````.````"0`#0```````````("!;5$#`&=L;V)A;"]A
11139
M<G)O=R]A<G)O=RUR:70M<VAA<G`M96YD+F=I9E54!0`#*8"*055X``!02P$"
11140
M%P,4````"``=<F0QOU=L>"D````N````&0`-````````````@('X40,`9VQO
11141
M8F%L+V%R<F]W+V%R<F]W+61N+F=I9E54!0`#*8"*055X``!02P$"%P,4````
11142
M"``=<F0Q/:(BS]D```#>````*0`-````````````@(%M4@,`9VQO8F%L+V%R
11143
M<F]W+V%R<F]W<RUD<F]P9&]W;BUD:7-A8FQE9"YP;F=55`4``RF`BD%5>```
11144
M4$L!`A<#%`````@`'7)D,5XT[M8P````-0```"``#0```````````("!HE,#
11145
M`&=L;V)A;"]A<G)O=R]A<G)O=RUL9G0M<VAA<G`N9VEF550%``,I@(I!57@`
11146
M`%!+`0(7`Q0````(`!UR9#'R>5X],````#0````?``T```````````"`@254
11147
M`P!G;&]B86PO87)R;W<O87)R;W<M=7`M<VAA<G`N9VEF550%``,I@(I!57@`
11148
M`%!+`0(7`Q0````(`!UR9#$P?]M$+0```"X````=``T```````````"`@:=4
11149
M`P!G;&]B86PO87)R;W<O87)R;W<M9&XM9&ES+F=I9E54!0`#*8"*055X``!0
11150
M2P$"%P,4````"``=<F0QCR%B]RD````N````&@`-````````````@($D50,`
11151
M9VQO8F%L+V%R<F]W+V%R<F]W+7)I="YG:6955`4``RF`BD%5>```4$L!`A<#
11152
M%`````@`'7)D,0B2B%LI````+@```!D`#0```````````("!FE4#`&=L;V)A
11153
M;"]A<G)O=R]A<G)O=RUU<"YG:6955`4``RF`BD%5>```4$L!`A<#%`````@`
11154
M'7)D,3OH[)(J````+P```!H`#0```````````("!#U8#`&=L;V)A;"]A<G)O
11155
M=R]A<G)O=RUL9G0N9VEF550%``,I@(I!57@``%!+`0(7`Q0````(`!UR9#&B
11156
MP=?O+@```"\````>``T```````````"`@896`P!G;&]B86PO87)R;W<O87)R
11157
M;W<M;&9T+61I<RYG:6955`4``RF`BD%5>```4$L!`A<#%`````@`'7)D,0`)
11158
MU<LM````+@```!X`#0```````````("!!5<#`&=L;V)A;"]A<G)O=R]A<G)O
11159
M=RUR:70M9&ES+F=I9E54!0`#*8"*055X``!02P$"%P,4````"``=<F0Q")*(
11160
M6RD````N````'0`-````````````@(&#5P,`9VQO8F%L+V%R<F]W+V%R<F]W
11161
M+75P+6AO=BYG:6955`4``RF`BD%5>```4$L!`A<#%`````@`'7)D,82"10XK
11162
M````,P```!\`#0```````````("!_%<#`&=L;V)A;"]A<G)O=R]A<G)O=RUD
11163
M;BUS:&%R<"YG:6955`4``RF`BD%5>```4$L!`A<#%`````@`'7)D,0S8;-FF
11164
M````J@```!L`#0```````````("!>5@#`&=L;V)A;"]A<G)O=R]A<G)O=RUD
11165
M;W=N+G!N9U54!0`#*8"*055X``!02P$"%P,4````"``=<F0QA[H_9RT````N
11166
M````'0`-````````````@(%M60,`9VQO8F%L+V%R<F]W+V%R<F]W+75P+61I
11167
M<RYG:6955`4``RF`BD%5>```4$L!`A<#%`````@`'7)D,5U-MI3,````U```
11168
M`"``#0```````````("!ZED#`&=L;V)A;"]A<G)O=R]A<G)O=W,M9')O<&1O
11169
M=VXN<&YG550%``,I@(I!57@``%!+`0(7`Q0````(`!UR9#$&E<`?,````#4`
11170
M```@``T```````````"`@0E;`P!G;&]B86PO87)R;W<O87)R;W<M<FET+7-H
11171
M87)P+F=I9E54!0`#*H"*055X``!02P$"%P,4````"``=<F0QOU=L>"D````N
11172
M````'0`-````````````@(&,6P,`9VQO8F%L+V%R<F]W+V%R<F]W+61N+6AO
11173
M=BYG:6955`4``RJ`BD%5>```4$L!`A<#%`````@`'7)D,3E&.R\T````.```
11174
M`"0`#0```````````("!!5P#`&=L;V)A;"]A<G)O=R]A<G)O=RUL9G0M<VAA
11175
M<G`M96YD+F=I9E54!0`#*H"*055X``!02P$"%P,*``````![F64Q````````
11176
M````````#0`-`````````!``[4&07`,`9VQO8F%L+VEC;VYS+U54!0`#R1:,
11177
M055X``!02P$"%P,*```````@<F0Q````````````````$@`-`````````!``
11178
M[4'07`,`9VQO8F%L+VEC;VYS+VUE;G4O550%``,K@(I!57@``%!+`0(7`PH`
11179
M`````!UR9#$&@)M;[`$``.P!```:``T```````````"`@15=`P!G;&]B86PO
11180
M:6-O;G,O;65N=2]E9&ET+G!N9U54!0`#*H"*055X``!02P$"%P,4````"``=
11181
M<F0Q)R"`TX8!``">`0``)``-````````````@(%.7P,`9VQO8F%L+VEC;VYS
11182
M+VUE;G4O8V]O:VEE+7-E<W-I;VXN<&YG550%``,J@(I!57@``%!+`0(7`PH`
11183
M`````!UR9#%$]2_D"@,```H#```9``T```````````"`@2MA`P!G;&]B86PO
11184
M:6-O;G,O;65N=2]D96PN<&YG550%``,J@(I!57@``%!+`0(7`PH``````!UR
11185
M9#&H$`4Q`0(```$"```:``T```````````"`@8%D`P!G;&]B86PO:6-O;G,O
11186
M;65N=2]U;F1O+G!N9U54!0`#*H"*055X``!02P$"%P,*```````=<F0Q3D'/
11187
M\(H"``"*`@``(@`-````````````I('/9@,`9VQO8F%L+VEC;VYS+VUE;G4O
11188
M9&5L+61I<V%B;&5D+G!N9U54!0`#*H"*055X``!02P$"%P,*```````=<F0Q
11189
M>QT62"<"```G`@``'@`-````````````@(&N:0,`9VQO8F%L+VEC;VYS+VUE
11190
M;G4O;6%X:6UI>F4N<&YG550%``,J@(I!57@``%!+`0(7`PH``````!UR9#$R
11191
MB+6M\`$``/`!```9``T```````````"`@29L`P!G;&]B86PO:6-O;G,O;65N
11192
M=2]C=70N<&YG550%``,J@(I!57@``%!+`0(7`PH``````!UR9#'0)07:4P(`
11193
M`%,"```:``T```````````"`@6)N`P!G;&]B86PO:6-O;G,O;65N=2]S879E
11194
M+G!N9U54!0`#*H"*055X``!02P$"%P,*```````=<F0QF9!B9",#```C`P``
11195
M'@`-````````````@($"<0,`9VQO8F%L+VEC;VYS+VUE;G4O>F]O;5]F:70N
11196
M<&YG550%``,J@(I!57@``%!+`0(7`PH``````!UR9#'GN`@`,P(``#,"```;
11197
M``T```````````"`@79T`P!G;&]B86PO:6-O;G,O;65N=2]P87-T92YP;F=5
11198
M5`4``RJ`BD%5>```4$L!`A<#"@``````'7)D,67W@[M,`@``3`(``!H`#0``
11199
M`````````("!]W8#`&=L;V)A;"]I8V]N<R]M96YU+V9O;G0N<&YG550%``,J
11200
M@(I!57@``%!+`0(7`PH``````!UR9#'PN]@E_0(``/T"```C``T`````````
11201
M``"`@9!Y`P!G;&]B86PO:6-O;G,O;65N=2]P<FEN=%]P<F5V:65W+G!N9U54
11202
M!0`#*H"*055X``!02P$"%P,*```````=<F0QEDZ&L>\"``#O`@``'0`-````
11203
M````````@('C?`,`9VQO8F%L+VEC;VYS+VUE;G4O<V%V95]A<RYP;F=55`4`
11204
M`RJ`BD%5>```4$L!`A<#"@``````'7)D,1=295Z[`0``NP$``"(`#0``````
11205
M`````*2!(H`#`&=L;V)A;"]I8V]N<R]M96YU+V-U="UD:7-A8FQE9"YP;F=5
11206
M5`4``RJ`BD%5>```4$L!`A<#"@``````'7)D,<W!3(;P`P``\`,``!L`#0``
11207
M`````````("!,H(#`&=L;V)A;"]I8V]N<R]M96YU+V]K+3(R+G!N9U54!0`#
11208
M*H"*055X``!02P$"%P,4````"``=<F0Q5H@</9\```"M````'``-````````
11209
M````@(%PA@,`9VQO8F%L+VEC;VYS+VUE;G4O<F5M;W9E+G!N9U54!0`#*H"*
11210
M055X``!02P$"%P,*```````=<F0Q.%RIG>H!``#J`0``&@`-````````````
11211
M@(%>AP,`9VQO8F%L+VEC;VYS+VUE;G4O=V%I="YP;F=55`4``RJ`BD%5>```
11212
M4$L!`A<#"@``````'7)D,8[>GH60`@``D`(``"0`#0```````````("!E8D#
11213
M`&=L;V)A;"]I8V]N<R]M96YU+W-E87)C:%]R97!L86-E+G!N9U54!0`#*H"*
11214
M055X``!02P$"%P,*```````=<F0Q"TDF^EP"``!<`@``'``-````````````
11215
M@(%\C`,`9VQO8F%L+VEC;VYS+VUE;G4O:6UP;W)T+G!N9U54!0`#*H"*055X
11216
M``!02P$"%P,4````"``=<F0Q]^QQPUL!``!=`0``&0`-````````````@($G
11217
MCP,`9VQO8F%L+VEC;VYS+VUE;G4O;F5W+G!N9U54!0`#*H"*055X``!02P$"
11218
M%P,*```````=<F0QYUW>`F@"``!H`@``)@`-````````````@('.D`,`9VQO
11219
M8F%L+VEC;VYS+VUE;G4O<')I;G1?<')O<&5R=&EE<RYP;F=55`4``RJ`BD%5
11220
M>```4$L!`A<#%`````@`'7)D,0]^-MM2`0``50$``!H`#0```````````("!
11221
MCY,#`&=L;V)A;"]I8V]N<R]M96YU+V-O<'DN<&YG550%``,J@(I!57@``%!+
11222
M`0(7`PH``````!UR9#%PU7@)#P,```\#```C``T```````````"`@2Z5`P!G
11223
M;&]B86PO:6-O;G,O;65N=2]E9&ET7V)O;VMM87)K+G!N9U54!0`#*H"*055X
11224
M``!02P$"%P,*```````@<F0Q<^M\!=P"``#<`@``&P`-````````````@(&3
11225
MF`,`9VQO8F%L+VEC;VYS+VUE;G4O=&AE;64N<&YG550%``,K@(I!57@``%!+
11226
M`0(7`PH``````"!R9#'-?3Y]50$``%4!```9``T```````````"`@;V;`P!G
11227
M;&]B86PO:6-O;G,O;65N=2]A9&0N<&YG550%``,K@(I!57@``%!+`0(7`PH`
11228
M`````"!R9#%2<*L&3@,``$X#```8``T```````````"`@5Z=`P!G;&]B86PO
11229
M:6-O;G,O;65N=2]O:RYP;F=55`4``RN`BD%5>```4$L!`A<#"@``````(')D
11230
M,7]T6R&&`0``A@$``",`#0```````````*2!]Z`#`&=L;V)A;"]I8V]N<R]M
11231
M96YU+W5N9&\M9&ES86)L960N<&YG550%``,K@(I!57@``%!+`0(7`PH`````
11232
M`"!R9#&[/QO('P(``!\"```?``T```````````"`@=.B`P!G;&]B86PO:6-O
11233
M;G,O;65N=2]L:6=H=&)U;&(N<&YG550%``,K@(I!57@``%!+`0(7`PH`````
11234
M`"!R9#$8@+"F&`,``!@#```<``T```````````"`@42E`P!G;&]B86PO:6-O
11235
M;G,O;65N=2]Z;V]M7S$N<&YG550%``,K@(I!57@``%!+`0(7`PH``````"!R
11236
M9#'P'?2RN0$``+D!```D``T```````````"D@:NH`P!G;&]B86PO:6-O;G,O
11237
M;65N=2]P87-T92UD:7-A8FQE9"YP;F=55`4``RN`BD%5>```4$L!`A<#"@``
11238
M````(')D,9,M%%GW`0``]P$``!H`#0```````````("!NZH#`&=L;V)A;"]I
11239
M8V]N<R]M96YU+W!R968N<&YG550%``,K@(I!57@``%!+`0(7`PH``````"!R
11240
M9#$XXSA#00(``$$"```<``T```````````"`@?^L`P!G;&]B86PO:6-O;G,O
11241
M;65N=2]C;VQO<G,N<&YG550%``,K@(I!57@``%!+`0(7`PH``````"!R9#%*
11242
M&WN*0`$``$`!```;``T```````````"`@8^O`P!G;&]B86PO:6-O;G,O;65N
11243
M=2]A8F]U="YP;F=55`4``RN`BD%5>```4$L!`A<#"@``````(')D,4T<EZC`
11244
M`0``P`$``!H`#0```````````("!';$#`&=L;V)A;"]I8V]N<R]M96YU+V]P
11245
M96XN<&YG550%``,K@(I!57@``%!+`0(7`PH``````"!R9#'LRHQ3%0,``!4#
11246
M```>``T```````````"`@2JS`P!G;&]B86PO:6-O;G,O;65N=2]Z;V]M7V]U
11247
M="YP;F=55`4``RN`BD%5>```4$L!`A<#%`````@`(')D,6G%J3<$`P``"`,`
11248
M`!P`#0```````````("!D+8#`&=L;V)A;"]I8V]N<R]M96YU+W-C<FEP="YP
11249
M;F=55`4``RN`BD%5>```4$L!`A<#"@``````(')D,>[79-\'`@``!P(``!D`
11250
M#0```````````*2!X[D#`&=L;V)A;"]I8V]N<R]M96YU+W5R;"YP;F=55`4`
11251
M`RN`BD%5>```4$L!`A<#"@``````(')D,1]5<(<.`@``#@(``!P`#0``````
11252
M`````("!-KP#`&=L;V)A;"]I8V]N<R]M96YU+W-E87)C:"YP;F=55`4``RN`
11253
MBD%5>```4$L!`A<#"@``````(')D,?C7KK&(`@``B`(``!T`#0``````````
11254
M`("!D[X#`&=L;V)A;"]I8V]N<R]M96YU+VYE=U]T86(N<&YG550%``,K@(I!
11255
M57@``%!+`0(7`Q0````(`"!R9#$A-WD,<0$``'(!```C``T```````````"D
11256
M@6O!`P!G;&]B86PO:6-O;G,O;65N=2]C;W!Y+61I<V%B;&5D+G!N9U54!0`#
11257
M*X"*055X``!02P$"%P,4````"``@<F0QD&]39"D!``!&`0``&P`-````````
11258
M````@($RPP,`9VQO8F%L+VEC;VYS+VUE;G4O8VQO<V4N<&YG550%``,K@(I!
11259
M57@``%!+`0(7`PH``````"!R9#%]VCEC=`,``'0#```;``T```````````"`
11260
M@:G$`P!G;&]B86PO:6-O;G,O;65N=2]G;&]B92YP;F=55`4``RN`BD%5>```
11261
M4$L!`A<#"@``````(')D,40^?SX>`P``'@,``!T`#0```````````("!:\@#
11262
M`&=L;V)A;"]I8V]N<R]M96YU+WIO;VU?:6XN<&YG550%``,K@(I!57@``%!+
11263
M`0(7`PH``````"!R9#$0\7GT(`(``"`"```B``T```````````"`@=G+`P!G
11264
M;&]B86PO:6-O;G,O;65N=2]A9&1?8F]O:VUA<FLN<&YG550%``,K@(I!57@`
11265
M`%!+`0(7`PH``````"!R9#'ZA(56)@(``"8"```:``T```````````"`@4[.
11266
M`P!G;&]B86PO:6-O;G,O;65N=2]I;F9O+G!N9U54!0`#*X"*055X``!02P$"
11267
M%P,*```````@<F0Q"RZ)2/4!``#U`0``&@`-````````````@('!T`,`9VQO
11268
M8F%L+VEC;VYS+VUE;G4O97AE8RYP;F=55`4``RN`BD%5>```4$L!`A<#"@``
11269
M````(')D,7::VBJ0`0``D`$``",`#0```````````*2!`],#`&=L;V)A;"]I
11270
M8V]N<R]M96YU+W)E9&\M9&ES86)L960N<&YG550%``,K@(I!57@``%!+`0(7
11271
M`Q0````(`"!R9#'BG/1T3P$``&P!```C``T```````````"`@>G4`P!G;&]B
11272
M86PO:6-O;G,O;65N=2]C;V]K:64M86-C97!T+G!N9U54!0`#*X"*055X``!0
11273
M2P$"%P,*```````@<F0QX$#*;_L!``#[`0``&@`-````````````@(&.U@,`
11274
M9VQO8F%L+VEC;VYS+VUE;G4O97AI="YP;F=55`4``RN`BD%5>```4$L!`A<#
11275
M"@``````(')D,?S798?Q`0``\0$``!H`#0```````````("!UM@#`&=L;V)A
11276
M;"]I8V]N<R]M96YU+W)E9&\N<&YG550%``,K@(I!57@``%!+`0(7`PH`````
11277
M`"!R9#$95MKZX`$``.`!```>``T```````````"`@13;`P!G;&]B86PO:6-O
11278
M;G,O;65N=2]D;W=N;&]A9"YP;F=55`4``RN`BD%5>```4$L!`A<#"@``````
11279
M(')D,</_:YXT`P``-`,``!P`#0```````````("!1=T#`&=L;V)A;"]I8V]N
11280
M<R]M96YU+V-A;F-E;"YP;F=55`4``RN`BD%5>```4$L!`A<#"@``````(')D
11281
M,42)*G.I`P``J0,``!H`#0```````````("!R.`#`&=L;V)A;"]I8V]N<R]M
11282
M96YU+VAE;'`N<&YG550%``,K@(I!57@``%!+`0(7`PH``````"!R9#&4\:H,
11283
M?1T``'T=```=``T```````````"`@;[D`P!G;&]B86PO:6-O;G,O86QE<G0M
11284
M97AC;&%M+G!N9U54!0`#+("*055X``!02P$"%P,4````"``@<F0Q"!>@CQ4!
11285
M```W`0``'0`-````````````@(&+`@0`9VQO8F%L+VEC;VYS+W!G+6QA;F1S
11286
M8V%P92YG:6955`4``RR`BD%5>```4$L!`A<#%`````@`(')D,>[&S_PY````
11287
M/0```!@`#0```````````("!\`,$`&=L;V)A;"]I8V]N<R]297-T;W)E+F=I
11288
M9E54!0`#+("*055X``!02P$"%P,4````"``@<F0Q^V&O=)0```"7````(P`-
11289
M````````````@(%T!`0`9VQO8F%L+VEC;VYS+W!G+6QA;F1S8V%P92US;6%L
11290
M;"YG:6955`4``RR`BD%5>```4$L!`A<#%`````@`(')D,2HS$S0=`0``/@$`
11291
M`!P`#0```````````("!7@4$`&=L;V)A;"]I8V]N<R]P9RUP;W)T<F%I="YG
11292
M:6955`4``RR`BD%5>```4$L!`A<#"@``````(')D,?DX%/3U#@``]0X``!D`
11293
M#0```````````("!R@8$`&=L;V)A;"]I8V]N<R]1=65S=&EO;BYP;F=55`4`
11294
M`RR`BD%5>```4$L!`A<#"@``````>)EE,2.O"&8-"0``#0D``!P`#0``````
11295
M`````("!"Q8$`&=L;V)A;"]I8V]N<R]F;VQD97(M:71E;2YP;F=55`4``\,6
11296
MC$%5>```4$L!`A<#%`````@`(')D,0IM)0T[````0P```!T`#0``````````
11297
M`("!9Q\$`&=L;V)A;"]I8V]N<R]C;&]S92UB=71T;VXN9VEF550%``,L@(I!
11298
M57@``%!+`0(7`Q0````(`-:.93&UP_LU&0$``!\!```=``T```````````"D
11299
M@?(?!`!G;&]B86PO:6-O;G,O8VQO<V4M8G5T=&]N+G!N9U54!0`#LP2,055X
11300
M``!02P$"%P,4````"``@<F0Q<'E_?3<````[````%@`-````````````@(%;
11301
M(00`9VQO8F%L+VEC;VYS+T-L;W-E+F=I9E54!0`#+("*055X``!02P$"%P,*
11302
M```````B<F0QA5!SSXX&``".!@``%0`-````````````I(';(00`9VQO8F%L
11303
M+VEC;VYS+V9I;F0N<&YG550%``,O@(I!57@``%!+`0(7`PH``````/2<DS'T
11304
M-A#UKP(``*\"```>``T```````````"V@;$H!`!G;&]B86PO:6-O;G,O4')I
11305
M;G0M<')E=FEE=RYP;F=55`4``TP?QD%5>```4$L!`A<#"@``````(')D,6Q;
11306
M]G@["0``.PD``!8`#0```````````("!L2L$`&=L;V)A;"]I8V]N<R]%<G)O
11307
M<BYP;F=55`4``RR`BD%5>```4$L!`A<#"@``````(G)D,?W<7_.1`@``D0(`
11308
M`!D`#0```````````*2!-34$`&=L;V)A;"]I8V]N<R]N;W1F;W5N9"YP;F=5
11309
M5`4``R^`BD%5>```4$L!`A<#"@``````(')D,7T1X)Z6"0``E@D``!@`#0``
11310
M`````````("!$C@$`&=L;V)A;"]I8V]N<R]787)N:6YG+G!N9U54!0`#+("*
11311
M055X``!02P$"%P,*```````B<F0QJ[<QTF8!``!F`0``%@`-````````````
11312
MI('S000`9VQO8F%L+VEC;VYS+V-L;W-E+G!N9U54!0`#+X"*055X``!02P$"
11313
M%P,*```````B<F0Q38N)5%("``!2`@``%0`-````````````I(&B0P0`9VQO
11314
M8F%L+VEC;VYS+W=R87`N<&YG550%``,O@(I!57@``%!+`0(7`Q0````(`"!R
11315
M9#%G$'<8<P```'H````@``T```````````"`@3Q&!`!G;&]B86PO:6-O;G,O
11316
M=&%B<W1R:7`M8F]T=&]M+G!N9U54!0`#+("*055X``!02P$"%P,4````"``@
11317
M<F0QU-V^=C$````U````&0`-````````````@($"1P0`9VQO8F%L+VEC;VYS
11318
M+TUI;FEM:7IE+F=I9E54!0`#+("*055X``!02P$"%P,*```````@<F0Q````
11319
M````````````#0`-`````````!``[4%_1P0`9VQO8F%L+W)A9&EO+U54!0`#
11320
M+("*055X``!02P$"%P,4````"``@<F0QL4[Z`2H````N````'``-````````
11321
M````@(&_1P0`9VQO8F%L+W)A9&EO+W)A9&EO+6-H96-K+F=I9E54!0`#+("*
11322
M055X``!02P$"%P,4````"``@<F0QJ$KLC2T````N````(``-````````````
11323
M@($X2`0`9VQO8F%L+W)A9&EO+W)A9&EO+6-H96-K+61I<RYG:6955`4``RR`
11324
MBD%5>```4$L!`A<#%`````@`[6IQ,>V#94N'!0``4Q@``!4`#0```````0``
11325
M`("!N$@$`&=L;V)A;"]S8W)O;&QB87)S+F-S<U54!0`#'I>;055X``!02P$"
11326
M%P,4````"`"C>G`QDF\30]4"``"X!0``$P`-```````!````@(&'3@0`9VQO
11327
M8F%L+V=R;W5P8F]X+F-S<U54!0`#,F&:055X``!02P$"%P,4````"`!O=F4Q
11328
M9J]OL@<$``#L"```$``-```````!````@(&B400`9VQO8F%L+W!O<'5P+F-S
11329
M<U54!0`#PMF+055X``!02P$"%P,4````"``@<F0Q57,Z>OP$``#2#P``$@`-
11330
M```````!````@('L500`9VQO8F%L+VQI<W1B;W@N8W-S550%``,L@(I!57@`
11331
M`%!+`0(7`Q0````(`"!R9#%NKM\W@`$``%0$```9``T```````$```"`@2U;
11332
M!`!G;&]B86PO9VQO8F%L0FEN9&EN9W,N>&UL550%``,L@(I!57@``%!+`0(7
11333
M`Q0````(`"!R9#'(UUR[7P```*4````9``T```````$```"`@?E<!`!G;&]B
11334
M86PO<')I;G1086=E4V5T=7`N8W-S550%``,L@(I!57@``%!+`0(7`PH`````
11335
M`"%R9#$````````````````0``T`````````$`#M0:1=!`!G;&]B86PO8VAE
11336
M8VMB;W@O550%``,M@(I!57@``%!+`0(7`Q0````(`"%R9#%QEZ`>.0```#P`
11337
M```B``T```````````"`@>==!`!G;&]B86PO8VAE8VMB;W@O8V)O>"UC:&5C
11338
M:RUD:7,N9VEF550%``,M@(I!57@``%!+`0(7`Q0````(`"%R9#%/!B[:,P``
11339
M`#8````>``T```````````"`@75>!`!G;&]B86PO8VAE8VMB;W@O8V)O>"UC
11340
M:&5C:RYG:6955`4``RV`BD%5>```4$L!`A<#%`````@`B!)K,?IM%)6=!0``
11341
M!A$``!<`#0```````0```("!^5X$`&=L;V)A;"]A=71O8V]M<&QE=&4N8W-S
11342
M550%``.O$I-!57@``%!+`0(7`Q0````(`"%R9#$54Y!\J``````!```1``T`
11343
M``````$```"`@>!D!`!G;&]B86PO8V]N9FEG+F-S<U54!0`#+8"*055X``!0
11344
M2P$"%P,4````"``A<F0QK*H3XR,"``"$!```%@`-```````!````@(',900`
11345
M9VQO8F%L+W-P:6YB=71T;VYS+F-S<U54!0`#+8"*055X``!02P$"%P,4````
11346
M"`##F64Q,K=I?NP"``"E"@``$@`-```````!````I($X:`0`9VQO8F%L+V9I
11347
M;F1"87(N8W-S550%``--%XQ!57@``%!+`0(7`PH``````"%R9#$`````````
11348
M```````.``T`````````$`#M06EK!`!G;&]B86PO86QE<G1S+U54!0`#+8"*
11349
M055X``!02P$"%P,4````"``A<F0Q?]#ZAW,$``!:"@``%P`-```````!````
11350
M@(&J:P0`9VQO8F%L+V%L97)T<R]A;&5R="YC<W-55`4``RV`BD%5>```4$L!
11351
M`A<#%`````@`(7)D,9FH4R]:!```[`H``!(`#0```````0```("!9W`$`&=L
11352
M;V)A;"]C;VYS;VQE+F-S<U54!0`#+8"*055X``!02P$"%P,*```````A<F0Q
11353
M24YFM-,"``#3`@``$P`-````````````I($&=00`9VQO8F%L+W5R;'-H:6YE
11354
M+G!N9U54!0`#+8"*055X``!02P$"%P,4````"`"%>G`Q6P-B17L%``"6#@``
11355
M$0`-```````!````@($?>`0`9VQO8F%L+V1I86QO9RYC<W-55`4``_E@FD%5
11356
M>```4$L!`A<#%`````@`(7)D,540NY06!```:PL``!,`#0```````0```("!
11357
MWGT$`&=L;V)A;"]P<FEN=&EN9RYC<W-55`4``RV`BD%5>```4$L!`A<#%```
11358
M``@`0')D,>*V3,T,`0``Y0,``!<`#0```````0```("!.H($`&=L;V)A;"]P
11359
M<FEN=%!R979I97<N8W-S550%``-H@(I!57@``%!+`0(7`Q0````(`"%R9#'O
11360
M-AFB?@$``"L#```3``T```````$```"`@9"#!`!G;&]B86PO;&EN:U1R964N
11361
M8W-S550%``,M@(I!57@``%!+`0(7`Q0````(`'!B9C'+1()V904``&(4```1
11362
M``T```````$```"`@52%!`!G;&]B86PO8G5T=&]N+F-S<U54!0`#I`>-055X
11363
M``!02P$"%P,*```````A<F0Q````````````````#P`-`````````!``[4']
11364
MB@0`9VQO8F%L+W1O;VQB87(O550%``,M@(I!57@``%!+`0(7`Q0````(`"%R
11365
M9#%&]C35L0```+P````:``T```````````"`@3^+!`!G;&]B86PO=&]O;&)A
11366
M<B],:6=H=&5N+G!N9U54!0`#+8"*055X``!02P$"%P,4````"``A<F0Q-LL$
11367
M%8T```"A````&0`-````````````@($]C`0`9VQO8F%L+W1O;VQB87(O1&%R
11368
M:V5N+G!N9U54!0`#+8"*055X``!02P$"%P,4````"``A<F0Q\#]\Z34````X
11369
M````&@`-````````````@($6C00`9VQO8F%L+W1O;VQB87(O8VAE=G)O;BYG
11370
M:6955`4``RV`BD%5>```4$L!`A<#%`````@`(7)D,<PJ'XV9`P``N`H``!8`
11371
M#0```````0```("!F(T$`&=L;V)A;"]C;VQO<G!I8VME<BYC<W-55`4``RV`
11372
MBD%5>```4$L!`A<#%`````@`(7)D,?<[6'_G`P``$PH``!,`#0```````0``
11373
M`("!>I$$`&=L;V)A;"]C:&5C:V)O>"YC<W-55`4``RV`BD%5>```4$L!`A<#
11374
M%`````@`V@N(,>7#(>/U"```\QL``!$`#0```````0```("!IY4$`&=L;V)A
11375
M;"]G;&]B86PN8W-S550%``.<G[9!57@``%!+`0(7`PH``````/!=9C'3+MH=
11376
M?0D``'T)```5``T```````````"`@>">!`!G;&]B86PO1FEL97!I8VME<BYP
11377
M;F=55`4``R,`C4%5>```4$L!`A<#%`````@`(7)D,2P2#<$$`0``U`0``!``
11378
M#0```````0```("!I:@$`&=L;V)A;"]A<G)O=RYC<W-55`4``RZ`BD%5>```
11379
M4$L!`A<#%`````@`(7)D,4J,DT@U`0``I`(``!$`#0```````0```("![*D$
11380
M`&=L;V)A;"]W:7IA<F0N8W-S550%``,N@(I!57@``%!+`0(7`Q0````(`"%R
11381
M9#&MIJ;='`,``+@&```3``T```````$```"`@66K!`!G;&]B86PO<W!L:71T
11382
M97(N8W-S550%``,N@(I!57@``%!+`0(7`Q0````(`"%R9#&S2Y`%LP4``'`6
11383
M```3``T```````$```"`@<>N!`!G;&]B86PO;65N=6QI<W0N8W-S550%``,N
11384
M@(I!57@``%!+`0(7`Q0````(`,D!B#'?'4XFW04``/X6```8``T```````$`
11385
M``"`@<"T!`!G;&]B86PO=&]O;&)A<F)U='1O;BYC<W-55`4``ZJ-MD%5>```
11386
M4$L!`A<#%`````@`(7)D,<J@A?-C`@``;08``!$`#0```````0```("!Z+H$
11387
M`&=L;V)A;"]A;'1T86(N>&UL550%``,N@(I!57@``%!+`0(7`Q0````(`',"
11388
MB#%O:6(`\P,``,$)```2``T```````$```"`@8^]!`!G;&]B86PO=&5X=&)O
11389
M>"YC<W-55`4``^F.MD%5>```4$L!`A<#%`````@`(7)D,3QL2=X]`0``00,`
11390
M`!0`#0```````0```("!Q\$$`&=L;V)A;"]S8W)O;&QB;W@N8W-S550%``,N
11391
M@(I!57@``%!+`0(7`PH``````"%R9#$````````````````1``T`````````
11392
M$`#M04O#!`!G;&]B86PO<V-R;VQL8F%R+U54!0`#+H"*055X``!02P$"%P,4
11393
M````"``A<F0Q3*GPWI$```"8````'P`-````````````I(&/PP0`9VQO8F%L
11394
M+W-C<F]L;&)A<B]G<FEP<&EE<RUH+G!N9U54!0`#+H"*055X``!02P$"%P,4
11395
M````"``A<F0Q\?G?>(L```"4````'P`-````````````I(%RQ`0`9VQO8F%L
11396
M+W-C<F]L;&)A<B]G<FEP<&EE<RUV+G!N9U54!0`#+H"*055X``!02P$"%P,4
11397
M````"``A<F0Q:1<M0RL````L````&P`-````````````@(%/Q00`9VQO8F%L
11398
M+W-C<F]L;&)A<B]S;&ED97(N9VEF550%``,N@(I!57@``%!+`0(7`Q0````(
11399
M`"%R9#',*C+ZFP```*(````=``T```````````"D@<C%!`!G;&]B86PO<V-R
11400
M;VQL8F%R+V=R:7!P:65S+G!N9U54!0`#+H"*055X``!02P$"%P,4````"`"7
11401
M!FLQ^TJ]G)T$``">"P``%0`-```````!````@(&SQ@0`9VQO8F%L+V9I;&5P
11402
M:6-K97(N8W-S550%``,N_I)!57@``%!+`0(7`Q0````(`"%R9#%0R5BN;P$`
11403
M`&0#```3``T```````$```"`@9C+!`!G;&]B86PO8V]N=&5N=',N<F1F550%
11404
M``,N@(I!57@``%!+`0(7`Q0````(`-IS9#'(!5/S]`$``$$$```2``T`````
11405
M``$```"`@4W-!`!G;&]B86PO8G)O=W-E<BYC<W-55`4``VR#BD%5>```4$L!
11406
M`A<#"@``````&W)D,0````````````````4`#0`````````0`.U!AL\$`&AE
11407
M;'`O550%``,F@(I!57@``%!+`0(7`Q0````(`!MR9#'/HTXA9`8``',)```*
11408
M``T```````````"D@;[/!`!H96QP+VXN<&YG550%``,F@(I!57@``%!+`0(7
11409
M`Q0````(`!MR9#$K5>O@@0<``)H2```7``T```````$```"D@5_6!`!H96QP
11410
M+VAE;'!&:6QE3&%Y;W5T+F-S<U54!0`#)H"*055X``!02P$"%P,*```````;
11411
M<F0QC'[<TFP$``!L!```#@`-````````````I($JW@0`:&5L<"]P<F5F<RYP
11412
M;F=55`4``R:`BD%5>```4$L!`A<#"@``````&W)D,2SE=5?H`0``Z`$``!``
11413
M#0```````````*2!U^($`&AE;'`O5V5B;&EN:RYP;F=55`4``R:`BD%5>```
11414
M4$L!`A<#%`````@`&W)D,>JA?&MP`@``_`8``!``#0```````0```*2!`N4$
11415
M`&AE;'`O<VED96)A<BYC<W-55`4``R:`BD%5>```4$L!`A<#"@``````&W)D
11416
M,;'QN+@-`@``#0(``!``#0```````````*2!M><$`&AE;'`O<VED96)A<BYP
11417
M;F=55`4``R:`BD%5>```4$L!`A<#%`````@`&W)D,3]'O8GV````Y`$``!@`
11418
M#0```````0```*2!!>H$`&AE;'`O<VED96)A<D)I;F1I;F=S+GAM;%54!0`#
11419
M)H"*055X``!02P$"%P,*```````;<F0Q0!X6K3($```R!```$0`-````````
11420
M````I(%&ZP0`:&5L<"]Z;V]M7V]U="YP;F=55`4``R:`BD%5>```4$L!`A<#
11421
M"@``````&W)D,;NIH:=H!```:`0```\`#0```````````*2!O.\$`&AE;'`O
11422
M<V5A<F-H+G!N9U54!0`#)H"*055X``!02P$"%P,4````"``;<F0Q?(@;8MX`
11423
M``!"`0``#``-````````````I(%F]`0`:&5L<"]B8V<N<&YG550%``,F@(I!
11424
M57@``%!+`0(7`PH``````!MR9#&TIKQL2P0``$L$```0``T```````````"D
11425
M@8/U!`!H96QP+WIO;VU?:6XN<&YG550%``,F@(I!57@``%!+`0(7`Q0````(
11426
M`!MR9#';K)HG]````%\"```1``T```````$```"D@1'Z!`!H96QP+V-O;G1E
11427
M;G1S+G)D9E54!0`#)H"*055X``!02P$"%P,4````"``;<F0QLGX3R?0&``#F
11428
M&@``#0`-```````!````I(%)^P0`:&5L<"]H96QP+F-S<U54!0`#)H"*055X
11429
M``!02P$"%P,*```````<<F0QL5),/T4"``!%`@``"``-````````````@(%]
11430
M`@4`:6-O;BYP;F=55`4``R>`BD%5>```4$L!`A<#%`````@`CG.5,8@X,/U;
11431
M`@``T@0```L`#0```````0```("!_00%`&EN<W1A;&PN<F1F550%``-;><A!
11432
M57@``%!+`0(7`PH``````$%R9#$````````````````(``T`````````$`#M
11433
M098'!0!M;WIA<'!S+U54!0`#:8"*055X``!02P$"%P,*``````"#!6LQ````
11434
M````````````#0`-`````````!``[4'1!P4`;6]Z87!P<R]P<F5F+U54!0`#
11435
M)OR2055X``!02P$"%P,4````"``A<F0Q><2L<UT```!@````%``-````````
11436
M````@($1"`4`;6]Z87!P<R]P<F5F+V1O="YG:6955`4``RZ`BD%5>```4$L!
11437
M`A<#%`````@`(7)D,7E;@.)3!@``G`\``!8`#0```````0```("!M0@%`&UO
11438
M>F%P<',O<')E9B]P<F5F+F-S<WY55`4``RZ`BD%5>```4$L!`A<#%`````@`
11439
M@P5K,4B`FM%8!@``A@\``!4`#0```````0```("!40\%`&UO>F%P<',O<')E
11440
M9B]P<F5F+F-S<U54!0`#)OR2055X``!02P$"%P,4````"``A<F0Q"4+]T+@`
11441
M``#,````%@`-````````````@('Q%04`;6]Z87!P<R]P<F5F+V-H96-K+F=I
11442
M9E54!0`#+H"*055X``!02P$"%P,*``````!]<Y4Q````````````````$@`-
11443
M`````````!``[4'R%@4`;6]Z87!P<R]D;W=N;&]A9',O550%``,^><A!57@`
11444
M`%!+`0(7`PH``````"%R9#'XU@?,T@D``-()```I``T```````````"`@3<7
11445
M!0!M;WIA<'!S+V1O=VYL;V%D<R]B86-K9W)O=6YD+6=R861I96YT+G!N9U54
11446
M!0`#+H"*055X``!02P$"%P,*```````A<F0Q:Q'+SSX"```^`@``)0`-````
11447
M````````@(%E(04`;6]Z87!P<R]D;W=N;&]A9',O9&]W;FQO861#;&5A;G5P
11448
M+G!N9U54!0`#+H"*055X``!02P$"%P,4````"`!VF&4QX1P/]?X```"Q`0``
11449
M*``-```````!````@('[(P4`;6]Z87!P<R]D;W=N;&]A9',O=6YK;F]W;D-O
11450
M;G1E;G14>7!E+F-S<U54!0`#X!2,055X``!02P$"%P,*```````A<F0Q[BM[
11451
MQ#HP```Z,```(0`-````````````@(%4)04`;6]Z87!P<R]D;W=N;&]A9',O
11452
M9&]W;FQO861S0D<N<&YG550%``,N@(I!57@``%!+`0(7`PH``````"%R9#$4
11453
M=V>@3@(``$X"```M``T```````````"`@>)5!0!M;WIA<'!S+V1O=VYL;V%D
11454
M<R]D;W=N;&]A9$-L96%N=7!$:7-A8FQE9"YP;F=55`4``RZ`BD%5>```4$L!
11455
M`A<#"@``````(7)D,<[QB5W$!```Q`0``"(`#0```````````("!D%@%`&UO
11456
M>F%P<',O9&]W;FQO861S+V1O=VYL;V%D26-O;BYP;F=55`4``RZ`BD%5>```
11457
M4$L!`A<#%`````@`4G.5,='ZO/P!!```EA,``!\`#0```````0```("!J5T%
11458
M`&UO>F%P<',O9&]W;FQO861S+V1O=VYL;V%D<RYC<W-55`4``^QXR$%5>```
11459
M4$L!`A<#%`````@`07)D,1U]N$7Q````Z0$``!\`#0```````0```("!_&$%
11460
M`&UO>F%P<',O9&]W;FQO861S+V1O=VYL;V%D<RYX;6Q55`4``VF`BD%5>```
11461
M4$L!`A<#%`````@`(7)D,5NGG`E^````AP```"<`#0```````````("!/V,%
11462
M`&UO>F%P<',O9&]W;FQO861S+V)A8VMG<F]U;F0M<W1R:7!E+G!N9U54!0`#
11463
M+H"*055X``!02P$"%P,*```````A<F0Q^^[I%1\"```?`@``)0`-````````
11464
M````@($79`4`;6]Z87!P<R]D;W=N;&]A9',O9&]W;FQO861/<'1I;VYS+G!N
11465
M9U54!0`#+H"*055X``!02P$"%P,4````"``A<F0Q]8"%3U<#``!""@``(P`-
11466
M```````!````@(&.9@4`;6]Z87!P<R]D;W=N;&]A9',O9&]W;FQO861S+F-S
11467
M<RYO;&155`4``RZ`BD%5>```4$L!`A<#%`````@`(7)D,8.\)]NG````40,`
11468
M`!\`#0```````````("!.VH%`&UO>F%P<',O9&]W;FQO861S+W9I97=&861E
11469
M<BYP;F=55`4``RZ`BD%5>```4$L!`A<#%`````@`(7)D,;F."S]J`0``-08`
11470
M`"8`#0```````````("!-&L%`&UO>F%P<',O9&]W;FQO861S+V1O=VYL;V%D
11471
M4V5L96-T960N<&YG550%``,N@(I!57@``%!+`0(7`PH``````"%R9#$`````
11472
M```````````2``T`````````$`#M0?=L!0!M;WIA<'!S+WAP:6YS=&%L;"]5
11473
M5`4``RZ`BD%5>```4$L!`A<#"@``````(7)D,:FZR1I$!P``1`<``"H`#0``
11474
M`````````("!/&T%`&UO>F%P<',O>'!I;G-T86QL+WAP:6YS=&%L;$ET96U'
11475
M96YE<FEC+G!N9U54!0`#+H"*055X``!02P$"%P,4````"``A<F0Q?'59V&X!
11476
M``!.`P``)@`-```````!````@('==`4`;6]Z87!P<R]X<&EN<W1A;&PO>'!I
11477
M;G-T86QL0V]N9FER;2YC<W-55`4``RZ`BD%5>```4$L!`A<#"@``````07)D
11478
M,0````````````````\`#0`````````0`.U!I'8%`&UO>F%P<',O<VAA<F5D
11479
M+U54!0`#:8"*055X``!02P$"%P,4````"``A<F0QN8X+/VH!```U!@``'P`-
11480
M````````````@('F=@4`;6]Z87!P<R]S:&%R960O:71E;5-E;&5C=&5D+G!N
11481
M9U54!0`#+H"*055X``!02P$"%P,4````"`!!<F0QHYH_E+H```#_````&P`-
11482
M```````!````@(&B>`4`;6]Z87!P<R]S:&%R960O<FEC:'9I97<N8W-S550%
11483
M``-I@(I!57@``%!+`0(7`Q0````(`$%R9#&7%#7(#`$``#T"```;``T`````
11484
M``$```"`@:IY!0!M;WIA<'!S+W-H87)E9"]R:6-H=FEE=RYX;6Q55`4``VF`
11485
MBD%5>```4$L!`A<#%`````@`(7)D,1X%URNG````40,``!P`#0``````````
11486
M`("!!'L%`&UO>F%P<',O<VAA<F5D+VET96U&861E<BYP;F=55`4``RZ`BD%5
11487
M>```4$L!`A<#%`````@`(7)D,8.\)]NG````40,``!P`#0```````````("!
11488
M^GL%`&UO>F%P<',O<VAA<F5D+W9I97=&861E<BYP;F=55`4``RZ`BD%5>```
11489
M4$L!`A<#"@``````(7)D,0````````````````\`#0`````````0`.U!\'P%
11490
M`&UO>F%P<',O=7!D871E+U54!0`#+H"*055X``!02P$"%P,4````"``A<F0Q
11491
MH%KR5FP```!W````&@`-````````````@($R?04`;6]Z87!P<R]U<&1A=&4O
11492
M=V%R;FEN9RYG:6955`4``RZ`BD%5>```4$L!`A<#%`````@`(7)D,99T'I5E
11493
M#0``D0T``!D`#0```````````("!ZWT%`&UO>F%P<',O=7!D871E+VEC;VXS
11494
M,BYP;F=55`4``RZ`BD%5>```4$L!`A<#%`````@`(7)D,2S0"6\]`@``]@4`
11495
M`!D`#0```````0```("!G(L%`&UO>F%P<',O=7!D871E+W5P9&%T92YC<W-5
11496
M5`4``RZ`BD%5>```4$L!`A<#"@``````(7)D,:-7`.C=`0``W0$``!D`#0``
11497
M`````````("!)8X%`&UO>F%P<',O=7!D871E+W5P9&%T92YP;F=55`4``RZ`
11498
MBD%5>```4$L!`A<#"@``````(7)D,<V3)QW0!0``T`4``"$`#0``````````
11499
M`("!3I`%`&UO>F%P<',O=7!D871E+V5X=&5N<VEO;F%L97)T+G!N9U54!0`#
11500
M+H"*055X``!02P$"%P,*``````!]<Y4Q````````````````$P`-````````
11501
M`!``[4%RE@4`;6]Z87!P<R]E>'1E;G-I;VYS+U54!0`#/GG(055X``!02P$"
11502
M%P,*```````A<F0QWHMC!,X!``#.`0``,``-````````````I(&XE@4`;6]Z
11503
M87!P<R]E>'1E;G-I;VYS+V5X=&5N<VEO;D]P=&EO;G,M9&ES86)L960N<&YG
11504
M550%``,N@(I!57@``%!+`0(7`PH``````"%R9#'$`F6T50@``%4(```C``T`
11505
M``````````"`@>F8!0!M;WIA<'!S+V5X=&5N<VEO;G,O=&AE;65'96YE<FEC
11506
M+G!N9U54!0`#+H"*055X``!02P$"%P,4````"``A<F0QSQ<KPL#<``"1W0``
11507
M*@`-````````````@(&4H04`;6]Z87!P<R]E>'1E;G-I;VYS+W9I97=7871E
11508
M<FUA<FM4:&5M97,N<&YG550%``,N@(I!57@``%!+`0(7`Q0````(`"%R9#'>
11509
MOQ1E.````$`````B``T```````````"`@;%^!@!M;WIA<'!S+V5X=&5N<VEO
11510
M;G,O<&QA8V5H;VQD97(N9VEF550%``,N@(I!57@``%!+`0(7`PH``````"%R
11511
M9#&CC=CT4`(``%`"```D``T```````````"`@3Y_!@!M;WIA<'!S+V5X=&5N
11512
M<VEO;G,O97AT96YS:6]N2&]M92YP;F=55`4``RZ`BD%5>```4$L!`A<#%```
11513
M``@`(7)D,7=.</I8`0``%P,``!P`#0```````0```("!Y8$&`&UO>F%P<',O
11514
M97AT96YS:6]N<R]A8F]U="YC<W-55`4``RZ`BD%5>```4$L!`A<#%`````@`
11515
M^IEE,?!&[44%!```UP\``"$`#0```````0```("!C(,&`&UO>F%P<',O97AT
11516
M96YS:6]N<R]E>'1E;G-I;VYS+F-S<U54!0`#N!>,055X``!02P$"%P,4````
11517
M"``A<F0QTYGVB4F\``!GO0``+@`-````````````@('EAP8`;6]Z87!P<R]E
11518
M>'1E;G-I;VYS+W9I97=7871E<FUA<FM%>'1E;G-I;VYS+G!N9U54!0`#+H"*
11519
M055X``!02P$"%P,*```````A<F0QO.XL/I@,``"8#```)``-````````````
11520
M@(&/1`<`;6]Z87!P<R]E>'1E;G-I;VYS+V%C=&EO;F)U='1O;G,N<&YG550%
11521
M``,N@(I!57@``%!+`0(7`PH``````"%R9#%5L+Z6:`$``&@!```E``T`````
11522
M``````"`@7Y1!P!M;WIA<'!S+V5X=&5N<VEO;G,O97AT96YS:6]N06)O=70N
11523
M<&YG550%``,N@(I!57@``%!+`0(7`PH``````"%R9#&,]O[T'P(``!\"```G
11524
M``T```````````"`@3Y3!P!M;WIA<'!S+V5X=&5N<VEO;G,O97AT96YS:6]N
11525
M3W!T:6]N<RYP;F=55`4``RZ`BD%5>```4$L!`A<#"@``````(7)D,2Y[!,Z@
11526
M#0``H`T``"4`#0```````````*2!MU4'`&UO>F%P<',O97AT96YS:6]N<R]A
11527
M8W1I;VYB=71T;VYS:2YP;F=55`4``RZ`BD%5>```4$L!`A<#"@``````07)D
11528
M,0```````````````!``#0`````````0`.U!KV,'`&UO>F%P<',O<&QU9VEN
11529
M<R]55`4``VF`BD%5>```4$L!`A<#%`````@`07)D,1XHX:NV````DP$``"D`
11530
M#0```````0```*2!\F,'`&UO>F%P<',O<&QU9VEN<R]P;'5G:6Y);G-T86QL
11531
M97)7:7IA<F0N8W-S550%``-I@(I!57@``%!+`0(7`Q0````(`"%R9#'@/2NY
11532
M/P$```0#```4``T```````$```"`@01E!P!M;WIA<'!S+V-O;G1E;G1S+G)D
11533
M9E54!0`#+H"*055X``!02P$"%P,*```````A<F0Q````````````````$``-
11534
M`````````!``[4&*9@<`;6]Z87!P<R]P<F]F:6QE+U54!0`#+H"*055X``!0
11535
M2P$"%P,4````"``A<F0Q8]\@L[4#``#O!P``)``-```````!````@('-9@<`
11536
M;6]Z87!P<R]P<F]F:6QE+W!R;V9I;&5396QE8W1I;VXN8W-S550%``,N@(I!
11537
M57@``%!+`0(7`Q0````(`"%R9#$I[9OR2@```$P````?``T```````````"`
11538
M@=EJ!P!M;WIA<'!S+W!R;V9I;&4O<')O9FEL96EC;VXN9VEF550%``,N@(I!
11539
M57@``%!+`0(7`Q0````(`!QR9#&QZQI<T1D``"L:```+``T```````````"D
11540
M@75K!P!P<F5V:65W+G!N9U54!0`#)X"*055X``!02P4&`````#8!-@'#9@``
11541
&A(4'````
11542
`
11543
end
11544
++ debian/update-mozilla-firefox-chrome
Line 0 Link Here
0
-- debian/mozilla-firefox-gnome-support.postinst
1
#!/bin/sh
2
3
set -e
4
5
umask 022
6
7
echo -n "Updating mozilla-firefox chrome registry..."
8
9
if [ "$1" = "-v" ]; then
10
    VERBOSE=1
11
    echo
12
fi
13
14
unset MOZILLA_FIVE_HOME || :
15
MOZILLA_FIVE_HOME=/usr/lib/mozilla-firefox
16
export MOZILLA_FIVE_HOME
17
18
# PATH
19
PATH=/usr/lib/mozilla-firefox:$PATH
20
export PATH
21
22
# added /usr/lib : don't load your local library
23
LD_LIBRARY_PATH=/usr/lib/mozilla-firefox${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
24
export LD_LIBRARY_PATH
25
26
# fake home to capture .firefox
27
HOME=`mktemp -d /tmp/mozilla-firefox-pkg.XXXXXX`
28
export HOME
29
30
/sbin/ldconfig
31
32
VARDIR=/var/lib/mozilla-firefox
33
LIBDIR=/usr/lib/mozilla-firefox
34
EXTDIR=${VARDIR}/extensions.d
35
36
# cleaning VARDIR
37
rm -fr ${VARDIR}/chrome ${VARDIR}/components ${VARDIR}/extensions/*
38
39
# cleaning LIBDIR
40
rm -rf ${LIBDIR}/chrome/overlayinfo
41
rm -f  ${LIBDIR}/chrome/*.rdf
42
rm -f  ${LIBDIR}/components/*.dat
43
rm -f  ${LIBDIR}/components.ini
44
rm -f  ${LIBDIR}/defaults.ini
45
46
# create VARDIR
47
install -d ${VARDIR}/chrome/overlayinfo
48
install -d ${VARDIR}/components
49
50
# create symlinks to LIBDIR
51
ln -sf ${VARDIR}/chrome/overlayinfo ${LIBDIR}/chrome/overlayinfo
52
ln -sf ${VARDIR}/extensions/installed-extensions.txt \
53
    ${LIBDIR}/extensions
54
55
# purge installed-extensions-processed.txt
56
rm -f ${LIBDIR}/extensions/installed-extensions-processed.txt
57
58
# reinitialize Extensions.rdf
59
rm -f ${LIBDIR}/extensions/Extensions.rdf
60
cat <<EOF > ${LIBDIR}/extensions/Extensions.rdf
61
<?xml version="1.0"?>
62
63
<RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
64
     xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
65
66
  <Seq about="urn:mozilla:extension:root"/>
67
  <Seq about="urn:mozilla:theme:root"/>
68
69
</RDF>
70
EOF
71
72
# gen installed-extensions.txt
73
TMPFILE=`tempfile`
74
for f in `echo ${EXTDIR}/* | sort`; do
75
    while read line; do
76
    	EXTUID=`echo ${line} | cut -f 2 -d ,`
77
        EXTUIDDIR=${LIBDIR}/extensions/${EXTUID}
78
        if [ -e ${EXTUIDDIR} ]; then
79
	    if [ -e ${EXTUIDDIR}/install.rdf ]; then
80
	        if grep ${EXTUID} ${EXTUIDDIR}/install.rdf 2>&1 > /dev/null; then
81
	            echo $line >> ${TMPFILE}
82
	        elif [ "${VERBOSE}" ]; then
83
		    echo "W: ${f}: ${EXTUIDDIR}/install.rdf doesn't contain the UID." >& 2
84
		fi
85
	    elif [ "${VERBOSE}" ]; then
86
	        echo "W: ${f}: ${EXTUIDDIR}/install.rdf doesn't exist." >&2
87
	    fi
88
	elif [ "${VERBOSE}" ]; then
89
	    echo "W: ${f}: ${EXTUIDDIR} doesn't exist." >&2
90
	fi
91
    done < $f
92
done
93
94
mv ${TMPFILE} ${VARDIR}/extensions/installed-extensions.txt
95
chmod 0644 ${VARDIR}/extensions/installed-extensions.txt
96
97
if [ "$VERBOSE" ]; then
98
    for f in `find ${LIBDIR}/extensions/ -name '{*}' -maxdepth 1`; do
99
        if ! grep `basename $f` ${VARDIR}/extensions/installed-extensions.txt 2>&1 > /dev/null; then
100
	    echo "W: `basename $f` not in ${VARDIR}/extensions/installed-extensions.txt" >&2
101
	fi
102
    done
103
fi
104
105
# gen
106
firefox-bin -register >/dev/null 2>&1 || echo "E: Registration process existed with status: $?" >&2
107
108
if [ -e ${LIBDIR}/extensions/installed-extensions.txt ]; then
109
    echo "E: ${LIBDIR}/extensions/installed-extensions.txt still present. Registration might have gone wrong." >&2
110
fi
111
112
# move and link
113
for file in ${LIBDIR}/components/*.dat; do
114
  if [ -f "${file}" ]; then
115
    mv ${file} ${VARDIR}/components/
116
    ln -fs ${VARDIR}/components/`basename "${file}"` ${LIBDIR}/components/
117
  fi
118
done
119
120
for file in ${LIBDIR}/chrome/*.rdf; do
121
  if [ -f "${file}" ]; then
122
    mv ${file} ${VARDIR}/chrome/
123
    ln -fs ${VARDIR}/chrome/`basename "${file}"` ${LIBDIR}/chrome/
124
  fi
125
done
126
127
mv ${LIBDIR}/defaults.ini ${VARDIR}/
128
ln -fs ${VARDIR}/defaults.ini ${LIBDIR}/
129
130
mv ${LIBDIR}/components.ini ${VARDIR}/
131
ln -fs ${VARDIR}/components.ini ${LIBDIR}/
132
133
mv ${LIBDIR}/extensions/Extensions.rdf ${VARDIR}/extensions/
134
ln -fs ${VARDIR}/extensions/Extensions.rdf ${LIBDIR}/extensions/
135
136
rm -fr ${HOME}
137
138
# done
139
echo done.
140
++ debian/mozilla-firefox-gnome-support.postinst
Line 0 Link Here
0
-- debian/mozilla-firefox.postinst
1
#!/bin/sh -e
2
 
3
if [ "$1" = "configure" ] ; then
4
    update-mozilla-firefox-chrome
5
fi
6
 
7
#DEBHELPER#
8
++ debian/mozilla-firefox.postinst
Line 0 Link Here
0
-- debian/mozilla-firefox-dev.dirs
1
#!/bin/sh -e
2
3
if [ "$1" = "configure" -o "$1" = "abort-upgrade" ] ; then
4
    update-alternatives --install /usr/bin/x-www-browser \
5
        x-www-browser /usr/bin/mozilla-firefox 84 \
6
        --slave /usr/share/man/man1/x-www-browser.1.gz \
7
        x-www-browser.1.gz /usr/share/man/man1/mozilla-firefox.1.gz
8
    update-alternatives --install /usr/bin/mozilla mozilla \
9
        /usr/bin/mozilla-firefox 0 \
10
        --slave /usr/share/man/man1/mozilla.1.gz mozilla.1.gz \
11
        /usr/share/man/man1/mozilla-firefox.1.gz
12
fi
13
14
if [ "$1" = "configure" ] ; then
15
    update-mozilla-firefox-chrome
16
fi
17
18
if [ -x /usr/sbin/update-desktop-database ]; then
19
    /usr/sbin/update-desktop-database
20
fi
21
22
#DEBHELPER#
23
++ debian/mozilla-firefox-dev.dirs
Line 0 Link Here
0
-- debian/mozilla-firefox.xpm
1
usr/lib/pkgconfig
2
usr/share/idl
3
usr/include
4
usr/bin
5
++ debian/mozilla-firefox.xpm
Line 0 Link Here
0
-- debian/mozilla-firefox.1
1
/* XPM */
2
static char * mozicon50_xpm[] = {
3
"48 48 1093 2",
4
"  	c None",
5
". 	c #2099CF",
6
"+ 	c #2CA7D9",
7
"@ 	c #33AEDD",
8
"# 	c #34B2E1",
9
"$ 	c #35B8E5",
10
"% 	c #2FBAE8",
11
"& 	c #26B5E4",
12
"* 	c #199FD6",
13
"= 	c #177DB8",
14
"- 	c #2C8FC4",
15
"; 	c #43A0CE",
16
"> 	c #55ADD6",
17
", 	c #5CB5DD",
18
"' 	c #61C4E8",
19
") 	c #63CBED",
20
"! 	c #64CFF1",
21
"~ 	c #63D1F2",
22
"{ 	c #5ECCEF",
23
"] 	c #57C3E9",
24
"^ 	c #4EB8E1",
25
"/ 	c #3CABD9",
26
"( 	c #2A9ED1",
27
"_ 	c #1991C9",
28
": 	c #0F7CBA",
29
"< 	c #166EAC",
30
"[ 	c #3387BC",
31
"} 	c #4797C6",
32
"| 	c #51A0CC",
33
"1 	c #56A7D2",
34
"2 	c #5BAED7",
35
"3 	c #60B6DD",
36
"4 	c #67CDEE",
37
"5 	c #69D3F2",
38
"6 	c #6BD4F4",
39
"7 	c #69D3F4",
40
"8 	c #63CDEF",
41
"9 	c #5AC0E6",
42
"0 	c #51B6DF",
43
"a 	c #49ACD8",
44
"b 	c #42A2D1",
45
"c 	c #3898CA",
46
"d 	c #298CC2",
47
"e 	c #167EB9",
48
"f 	c #0B5A9C",
49
"g 	c #2674AE",
50
"h 	c #3D87BA",
51
"i 	c #4590C0",
52
"j 	c #4B97C6",
53
"k 	c #519FCB",
54
"l 	c #58A6D1",
55
"m 	c #5DADD5",
56
"n 	c #62B3DA",
57
"o 	c #69C3E6",
58
"p 	c #6ED4F2",
59
"q 	c #6FD6F4",
60
"r 	c #6ED5F4",
61
"s 	c #6AD3F2",
62
"t 	c #5FC3E7",
63
"u 	c #53B2DC",
64
"v 	c #4BA8D5",
65
"w 	c #439FCE",
66
"x 	c #3B95C7",
67
"y 	c #338BC0",
68
"z 	c #2B82B9",
69
"A 	c #1D76B1",
70
"B 	c #0C69A9",
71
"C 	c #10599A",
72
"D 	c #2D71AA",
73
"E 	c #377CB2",
74
"F 	c #3D84B8",
75
"G 	c #458DBE",
76
"H 	c #4B95C4",
77
"I 	c #529CC9",
78
"J 	c #59A4CF",
79
"K 	c #5FABD4",
80
"L 	c #65B1D8",
81
"M 	c #6BC2E4",
82
"N 	c #71D5F3",
83
"O 	c #73D6F3",
84
"P 	c #72D5F3",
85
"Q 	c #6DD1F0",
86
"R 	c #5FBBE2",
87
"S 	c #54ADD8",
88
"T 	c #4CA4D2",
89
"U 	c #439ACB",
90
"V 	c #3B91C4",
91
"W 	c #3487BD",
92
"X 	c #2D7EB7",
93
"Y 	c #2675AF",
94
"Z 	c #1E6CA9",
95
"` 	c #0F5FA0",
96
" .	c #055296",
97
"..	c #115394",
98
"+.	c #2767A2",
99
"@.	c #2F70A9",
100
"#.	c #3679AF",
101
"$.	c #3C81B5",
102
"%.	c #448ABC",
103
"&.	c #4A92C2",
104
"*.	c #519AC7",
105
"=.	c #58A2CD",
106
"-.	c #5FA9D2",
107
";.	c #65B0D7",
108
">.	c #6EC8E9",
109
",.	c #74D4F2",
110
"'.	c #76D6F3",
111
").	c #75D6F3",
112
"!.	c #71D3F1",
113
"~.	c #62BCE1",
114
"{.	c #54A9D5",
115
"].	c #4C9FCE",
116
"^.	c #4396C8",
117
"/.	c #3B8CC1",
118
"(.	c #3483BA",
119
"_.	c #2C7AB3",
120
":.	c #2670AC",
121
"<.	c #1F68A6",
122
"[.	c #195F9F",
123
"}.	c #0D5497",
124
"|.	c #04488D",
125
"1.	c #0F4A8D",
126
"2.	c #1F5A98",
127
"3.	c #2663A0",
128
"4.	c #2D6DA6",
129
"5.	c #3475AD",
130
"6.	c #3B7EB3",
131
"7.	c #4287B9",
132
"8.	c #4990C1",
133
"9.	c #51A4CF",
134
"0.	c #569FCA",
135
"a.	c #5DA6CF",
136
"b.	c #66B5DB",
137
"c.	c #6FD1F0",
138
"d.	c #75D4F1",
139
"e.	c #79D5F2",
140
"f.	c #75D3F1",
141
"g.	c #63BBE0",
142
"h.	c #54A4D1",
143
"i.	c #4B9BCB",
144
"j.	c #4391C4",
145
"k.	c #3B88BD",
146
"l.	c #337FB6",
147
"m.	c #2C76B0",
148
"n.	c #266CA9",
149
"o.	c #1F64A3",
150
"p.	c #1A5B9C",
151
"q.	c #145396",
152
"r.	c #0A498E",
153
"s.	c #034C8F",
154
"t.	c #085293",
155
"u.	c #164D8E",
156
"v.	c #1D5695",
157
"w.	c #24609C",
158
"x.	c #2A69A3",
159
"y.	c #3271AA",
160
"z.	c #387AAF",
161
"A.	c #429FCC",
162
"B.	c #4CBFE4",
163
"C.	c #52C4E8",
164
"D.	c #57AFD7",
165
"E.	c #5DB3DA",
166
"F.	c #65C5E7",
167
"G.	c #6DD0EE",
168
"H.	c #72D2EF",
169
"I.	c #78D4F0",
170
"J.	c #7BD5F1",
171
"K.	c #76D2EF",
172
"L.	c #6AC5E6",
173
"M.	c #55A5D1",
174
"N.	c #4A95C6",
175
"O.	c #428CC0",
176
"P.	c #3A83B9",
177
"Q.	c #337AB3",
178
"R.	c #2C71AD",
179
"S.	c #2568A6",
180
"T.	c #1F5F9F",
181
"U.	c #1D65A3",
182
"V.	c #269ACA",
183
"W.	c #1C84BA",
184
"X.	c #0D7DB5",
185
"Y.	c #0298CC",
186
"Z.	c #0296CA",
187
"`.	c #0C5998",
188
" +	c #14498A",
189
".+	c #1B609C",
190
"++	c #2498C8",
191
"@+	c #2977AF",
192
"#+	c #2F75AC",
193
"$+	c #3575AC",
194
"%+	c #40ABD5",
195
"&+	c #49BFE4",
196
"*+	c #50C3E7",
197
"=+	c #56C5E8",
198
"-+	c #5DC8EA",
199
";+	c #63CBEB",
200
">+	c #69CEED",
201
",+	c #6ED0EE",
202
"'+	c #73D2EF",
203
")+	c #77D3EF",
204
"!+	c #72CEEC",
205
"~+	c #5AA7D1",
206
"{+	c #4F99C9",
207
"]+	c #4891C3",
208
"^+	c #4087BC",
209
"/+	c #387EB5",
210
"(+	c #3277B1",
211
"_+	c #2B70AB",
212
":+	c #2463A2",
213
"<+	c #1E5B9C",
214
"[+	c #185395",
215
"}+	c #165496",
216
"|+	c #10498D",
217
"1+	c #105F9E",
218
"2+	c #0A9ECF",
219
"3+	c #0088C0",
220
"4+	c #038DC3",
221
"5+	c #0A4A8C",
222
"6+	c #114E8E",
223
"7+	c #1989BD",
224
"8+	c #22AAD7",
225
"9+	c #28A2D0",
226
"0+	c #2C71A9",
227
"a+	c #3380B5",
228
"b+	c #3EB9E1",
229
"c+	c #45BDE3",
230
"d+	c #4CC0E5",
231
"e+	c #53C3E7",
232
"f+	c #59C6E8",
233
"g+	c #5EC9EA",
234
"h+	c #64CBEB",
235
"i+	c #69CDEC",
236
"j+	c #6ECFED",
237
"k+	c #70D0ED",
238
"l+	c #64BDE1",
239
"m+	c #55A6D1",
240
"n+	c #3D82B8",
241
"o+	c #3D8BBE",
242
"p+	c #49AFD8",
243
"q+	c #378DBF",
244
"r+	c #225F9E",
245
"s+	c #1D5698",
246
"t+	c #174E92",
247
"u+	c #12468B",
248
"v+	c #0E3F85",
249
"w+	c #115F9D",
250
"x+	c #15A2D1",
251
"y+	c #0395C9",
252
"z+	c #0088C1",
253
"A+	c #0190C6",
254
"B+	c #079ACC",
255
"C+	c #0FA0D0",
256
"D+	c #169ECF",
257
"E+	c #1D99CC",
258
"F+	c #25AAD7",
259
"G+	c #2BA0CE",
260
"H+	c #32AED8",
261
"I+	c #3AB7DF",
262
"J+	c #41BBE1",
263
"K+	c #47BEE3",
264
"L+	c #4EC1E5",
265
"M+	c #53C4E7",
266
"N+	c #5FC8E9",
267
"O+	c #63CAEA",
268
"P+	c #67CBEB",
269
"Q+	c #69CBEA",
270
"R+	c #62BCE0",
271
"S+	c #5AAFD7",
272
"T+	c #478DBF",
273
"U+	c #4084B9",
274
"V+	c #3A7CB4",
275
"W+	c #3E8CBF",
276
"X+	c #4DBADF",
277
"Y+	c #3383B8",
278
"Z+	c #215B9B",
279
"`+	c #1B5295",
280
" @	c #164A8E",
281
".@	c #114288",
282
"+@	c #0D3A82",
283
"@@	c #0E4C8E",
284
"#@	c #1380B7",
285
"$@	c #0D96C9",
286
"%@	c #0089C1",
287
"&@	c #007BB8",
288
"*@	c #0085BE",
289
"=@	c #008CC4",
290
"-@	c #0496C9",
291
";@	c #0B9DCF",
292
">@	c #1168AB",
293
",@	c #174F99",
294
"'@	c #21AAD7",
295
")@	c #28AED9",
296
"!@	c #2FB1DB",
297
"~@	c #36B5DE",
298
"{@	c #3CB8E0",
299
"]@	c #42BBE2",
300
"^@	c #49BEE4",
301
"/@	c #54C3E6",
302
"(@	c #59C5E7",
303
"_@	c #5DC7E8",
304
":@	c #5FC5E7",
305
"<@	c #53A9D3",
306
"[@	c #4B96C6",
307
"}@	c #478FC2",
308
"|@	c #4186BB",
309
"1@	c #3C7FB5",
310
"2@	c #3676AF",
311
"3@	c #306EA9",
312
"4@	c #3889BD",
313
"5@	c #44AFD8",
314
"6@	c #2F84B9",
315
"7@	c #194D91",
316
"8@	c #15458A",
317
"9@	c #144D90",
318
"0@	c #0C367E",
319
"a@	c #0C4086",
320
"b@	c #1797C8",
321
"c@	c #1295C8",
322
"d@	c #0487C0",
323
"e@	c #0079B6",
324
"f@	c #0081BC",
325
"g@	c #0E9ACC",
326
"h@	c #1597CA",
327
"i@	c #1CA7D5",
328
"j@	c #23ABD8",
329
"k@	c #2AAFDA",
330
"l@	c #31B2DC",
331
"m@	c #37B5DE",
332
"n@	c #3DB8E0",
333
"o@	c #43BBE2",
334
"p@	c #49BEE3",
335
"q@	c #4EC0E4",
336
"r@	c #53C2E5",
337
"s@	c #57C4E6",
338
"t@	c #4EAAD4",
339
"u@	c #4696C5",
340
"v@	c #438FC0",
341
"w@	c #4088BC",
342
"x@	c #3C80B6",
343
"y@	c #3778B1",
344
"z@	c #3270AB",
345
"A@	c #2C68A5",
346
"B@	c #3D9AC8",
347
"C@	c #46BADF",
348
"D@	c #3DB0D8",
349
"E@	c #287CB2",
350
"F@	c #164D90",
351
"G@	c #299ECC",
352
"H@	c #1B79B0",
353
"I@	c #1A8CBF",
354
"J@	c #199BCC",
355
"K@	c #1392C6",
356
"L@	c #0A86BE",
357
"M@	c #0079B7",
358
"N@	c #006AAC",
359
"O@	c #0074B3",
360
"P@	c #007CB9",
361
"Q@	c #0083BE",
362
"R@	c #008BC2",
363
"S@	c #0393C8",
364
"T@	c #099CCD",
365
"U@	c #10A1D1",
366
"V@	c #17A4D3",
367
"W@	c #1EA8D6",
368
"X@	c #25ABD8",
369
"Y@	c #2BAFDA",
370
"Z@	c #37B5DD",
371
"`@	c #3DB8DF",
372
" #	c #42BAE1",
373
".#	c #48BCE2",
374
"+#	c #4CBEE3",
375
"@#	c #50C0E4",
376
"##	c #48A8D3",
377
"$#	c #3F8EC0",
378
"%#	c #3C87BC",
379
"&#	c #3A81B7",
380
"*#	c #3679B1",
381
"=#	c #3171AC",
382
"-#	c #2D6AA6",
383
";#	c #2862A0",
384
">#	c #40A5D1",
385
",#	c #43B8DE",
386
"'#	c #3DB5DC",
387
")#	c #38B1DA",
388
"!#	c #2D9ECC",
389
"~#	c #2B9FCE",
390
"{#	c #246AAA",
391
"]#	c #1F96C7",
392
"^#	c #1996C9",
393
"/#	c #138DC3",
394
"(#	c #0E84BC",
395
"_#	c #0175B4",
396
":#	c #0068AC",
397
"<#	c #0070B1",
398
"[#	c #0077B5",
399
"}#	c #007FBA",
400
"|#	c #0086BF",
401
"1#	c #018DC4",
402
"2#	c #0596C9",
403
"3#	c #0B9DCE",
404
"4#	c #12A1D1",
405
"5#	c #1897C8",
406
"6#	c #1E96C7",
407
"7#	c #25A0CE",
408
"8#	c #2B90C2",
409
"9#	c #31A4D0",
410
"0#	c #37B4DD",
411
"a#	c #3CB7DF",
412
"b#	c #41B9E0",
413
"c#	c #45BBE0",
414
"d#	c #49BCE1",
415
"e#	c #4BBBE0",
416
"f#	c #419FCC",
417
"g#	c #3C91C2",
418
"h#	c #337AB1",
419
"i#	c #3072AC",
420
"j#	c #2C6BA7",
421
"k#	c #2864A1",
422
"l#	c #255F9E",
423
"m#	c #3FAAD4",
424
"n#	c #40B6DC",
425
"o#	c #3AB3DB",
426
"p#	c #35B0D8",
427
"q#	c #2F86BD",
428
"r#	c #29599F",
429
"s#	c #237DB7",
430
"t#	c #1E99CA",
431
"u#	c #1892C5",
432
"v#	c #1389C0",
433
"w#	c #0E7FBA",
434
"x#	c #0473B2",
435
"y#	c #0065AA",
436
"z#	c #0064A9",
437
"A#	c #006BAD",
438
"B#	c #0072B2",
439
"C#	c #0080BC",
440
"D#	c #0082BC",
441
"E#	c #028DC4",
442
"F#	c #0796C9",
443
"G#	c #0D88BD",
444
"H#	c #1372AB",
445
"I#	c #1982B8",
446
"J#	c #1F79B0",
447
"K#	c #247BB1",
448
"L#	c #2A86B9",
449
"M#	c #31B1DA",
450
"N#	c #36B3DC",
451
"O#	c #3AB5DD",
452
"P#	c #3FB7DE",
453
"Q#	c #42B9DF",
454
"R#	c #45BAE0",
455
"S#	c #48BBE0",
456
"T#	c #47B6DD",
457
"U#	c #3689BC",
458
"V#	c #2D72AB",
459
"W#	c #2C73AC",
460
"X#	c #2F7DB3",
461
"Y#	c #399BC9",
462
"Z#	c #3FB4DB",
463
"`#	c #3CB3DA",
464
" $	c #37B0D9",
465
".$	c #32AED7",
466
"+$	c #2CA8D3",
467
"@$	c #277EB8",
468
"#$	c #229CCC",
469
"$$	c #1D95C8",
470
"%$	c #188DC2",
471
"&$	c #1384BD",
472
"*$	c #0D7AB6",
473
"=$	c #066FB0",
474
"-$	c #0057A0",
475
";$	c #005FA5",
476
">$	c #0066AA",
477
",$	c #006DAF",
478
"'$	c #006EAC",
479
")$	c #004C8E",
480
"!$	c #005595",
481
"~$	c #025999",
482
"{$	c #085D9B",
483
"]$	c #0D64A0",
484
"^$	c #1369A4",
485
"/$	c #196EA7",
486
"($	c #1E73AA",
487
"_$	c #2376AD",
488
":$	c #2AA0CE",
489
"<$	c #2FAFD9",
490
"[$	c #34B1DB",
491
"}$	c #38B3DC",
492
"|$	c #3BB5DC",
493
"1$	c #3EB6DD",
494
"2$	c #40B7DD",
495
"3$	c #42B7DD",
496
"4$	c #43B7DE",
497
"5$	c #43B7DD",
498
"6$	c #40B5DC",
499
"7$	c #3DB4DB",
500
"8$	c #3AB2DA",
501
"9$	c #33AED6",
502
"0$	c #2EABD5",
503
"a$	c #29A5D2",
504
"b$	c #259ECD",
505
"c$	c #2094C6",
506
"d$	c #1C8DC2",
507
"e$	c #1787BE",
508
"f$	c #127EB9",
509
"g$	c #0D75B3",
510
"h$	c #076AAC",
511
"i$	c #005FA6",
512
"j$	c #00539D",
513
"k$	c #005AA2",
514
"l$	c #0060A6",
515
"m$	c #0068AB",
516
"n$	c #0063A5",
517
"o$	c #004487",
518
"p$	c #004386",
519
"q$	c #004789",
520
"r$	c #004B8D",
521
"s$	c #045192",
522
"t$	c #095997",
523
"u$	c #0E5F9C",
524
"v$	c #1365A0",
525
"w$	c #1869A4",
526
"x$	c #1D6EA7",
527
"y$	c #2274AB",
528
"z$	c #28A6D2",
529
"A$	c #2DAED8",
530
"B$	c #31AFD9",
531
"C$	c #34B1DA",
532
"D$	c #37B2DB",
533
"E$	c #39B3DB",
534
"F$	c #3BB4DB",
535
"G$	c #3CB4DB",
536
"H$	c #3BB3DA",
537
"I$	c #38B1D9",
538
"J$	c #35AFD8",
539
"K$	c #32ADD6",
540
"L$	c #2EAAD4",
541
"M$	c #2BA5D1",
542
"N$	c #2795C5",
543
"O$	c #2374AA",
544
"P$	c #1E5691",
545
"Q$	c #1A4C89",
546
"R$	c #156AA5",
547
"S$	c #1078B5",
548
"T$	c #0B6FAF",
549
"U$	c #0665A9",
550
"V$	c #004A97",
551
"W$	c #004D9A",
552
"X$	c #00509A",
553
"Y$	c #00579F",
554
"Z$	c #0062A7",
555
"`$	c #00468A",
556
" %	c #00387C",
557
".%	c #003C7F",
558
"+%	c #004083",
559
"@%	c #044D8E",
560
"#%	c #095493",
561
"$%	c #0E5A98",
562
"%%	c #13609C",
563
"&%	c #18659F",
564
"*%	c #1C6BA4",
565
"=%	c #219FCD",
566
"-%	c #25AAD5",
567
";%	c #29ABD6",
568
">%	c #2DADD7",
569
",%	c #30AED8",
570
"'%	c #32AFD8",
571
")%	c #34B0D8",
572
"!%	c #34AED7",
573
"~%	c #30ABD4",
574
"{%	c #2DA8D2",
575
"]%	c #2BA3CF",
576
"^%	c #289DCC",
577
"/%	c #2494C5",
578
"(%	c #20659E",
579
"_%	c #1C4684",
580
":%	c #183D7C",
581
"<%	c #133B7A",
582
"[%	c #0F5695",
583
"}%	c #0A5FA1",
584
"|%	c #055FA5",
585
"1%	c #00559F",
586
"2%	c #004D99",
587
"3%	c #004896",
588
"4%	c #002E74",
589
"5%	c #003C82",
590
"6%	c #004E94",
591
"7%	c #003377",
592
"8%	c #003175",
593
"9%	c #003578",
594
"0%	c #003B7F",
595
"a%	c #003F82",
596
"b%	c #014285",
597
"c%	c #044889",
598
"d%	c #094E8E",
599
"e%	c #0D5493",
600
"f%	c #125997",
601
"g%	c #167FB4",
602
"h%	c #1A96C7",
603
"i%	c #1EA5D2",
604
"j%	c #22A7D3",
605
"k%	c #25A9D4",
606
"l%	c #28AAD5",
607
"m%	c #2AAAD5",
608
"n%	c #2CABD6",
609
"o%	c #2DACD6",
610
"p%	c #2EACD5",
611
"q%	c #2DA9D3",
612
"r%	c #2CA6D1",
613
"s%	c #299FCD",
614
"t%	c #279ACA",
615
"u%	c #2495C7",
616
"v%	c #218FC3",
617
"w%	c #1D86BC",
618
"x%	c #1A4683",
619
"y%	c #163574",
620
"z%	c #112C6C",
621
"A%	c #0D2464",
622
"B%	c #082D6F",
623
"C%	c #044E94",
624
"D%	c #004F9A",
625
"E%	c #004292",
626
"F%	c #00347D",
627
"G%	c #002266",
628
"H%	c #002669",
629
"I%	c #00286C",
630
"J%	c #002B6F",
631
"K%	c #002E72",
632
"L%	c #003478",
633
"M%	c #00377B",
634
"N%	c #003A7E",
635
"O%	c #013D80",
636
"P%	c #044285",
637
"Q%	c #084889",
638
"R%	c #0D4D8D",
639
"S%	c #115492",
640
"T%	c #15609B",
641
"U%	c #189ACB",
642
"V%	c #1CA0CF",
643
"W%	c #1FA2CF",
644
"X%	c #21A3D1",
645
"Y%	c #24A4D1",
646
"Z%	c #25A5D1",
647
"`%	c #27A4D1",
648
" &	c #28A4D1",
649
".&	c #28A0CE",
650
"+&	c #289ECC",
651
"@&	c #2596C8",
652
"#&	c #2392C5",
653
"$&	c #208DC2",
654
"%&	c #1D87BD",
655
"&&	c #1A75AE",
656
"*&	c #173978",
657
"=&	c #132E6D",
658
"-&	c #0F2565",
659
";&	c #0B1D5D",
660
">&	c #071555",
661
",&	c #021151",
662
"'&	c #001F61",
663
")&	c #00276D",
664
"!&	c #003D8E",
665
"~&	c #003B89",
666
"{&	c #001E62",
667
"]&	c #002063",
668
"^&	c #002569",
669
"/&	c #002D72",
670
"(&	c #003074",
671
"_&	c #003579",
672
":&	c #033C7F",
673
"<&	c #074183",
674
"[&	c #0B4787",
675
"}&	c #0F5392",
676
"|&	c #1391C5",
677
"1&	c #1695C8",
678
"2&	c #1998CA",
679
"3&	c #1C99CA",
680
"4&	c #1E9ACB",
681
"5&	c #209BCB",
682
"6&	c #219BCB",
683
"7&	c #229ACA",
684
"8&	c #2399C9",
685
"9&	c #2397C8",
686
"0&	c #2394C6",
687
"a&	c #2291C4",
688
"b&	c #1E89C0",
689
"c&	c #1C84BC",
690
"d&	c #1A5B97",
691
"e&	c #174C89",
692
"f&	c #142D6C",
693
"g&	c #102665",
694
"h&	c #0C1E5D",
695
"i&	c #081756",
696
"j&	c #040F4F",
697
"k&	c #000847",
698
"l&	c #000541",
699
"m&	c #00033D",
700
"n&	c #00368A",
701
"o&	c #00256E",
702
"p&	c #00185A",
703
"q&	c #001A5D",
704
"r&	c #001D60",
705
"s&	c #001F63",
706
"t&	c #002568",
707
"u&	c #00276B",
708
"v&	c #00296D",
709
"w&	c #002B70",
710
"x&	c #003276",
711
"y&	c #023579",
712
"z&	c #063A7D",
713
"A&	c #0A5997",
714
"B&	c #0D87BF",
715
"C&	c #108AC1",
716
"D&	c #138CC3",
717
"E&	c #168EC4",
718
"F&	c #188FC4",
719
"G&	c #1A90C4",
720
"H&	c #1C90C4",
721
"I&	c #1D8FC4",
722
"J&	c #1D8EC3",
723
"K&	c #1D8CC2",
724
"L&	c #1D8AC0",
725
"M&	c #1C87BE",
726
"N&	c #1B83BC",
727
"O&	c #1A7FB9",
728
"P&	c #1864A0",
729
"Q&	c #164987",
730
"R&	c #132C6A",
731
"S&	c #102564",
732
"T&	c #0D1E5D",
733
"U&	c #091756",
734
"V&	c #06104E",
735
"W&	c #020947",
736
"X&	c #000441",
737
"Y&	c #00023C",
738
"Z&	c #000038",
739
"`&	c #003086",
740
" *	c #001A5E",
741
".*	c #001354",
742
"+*	c #001658",
743
"@*	c #001D5F",
744
"#*	c #001F62",
745
"$*	c #002164",
746
"%*	c #002367",
747
"&*	c #002D71",
748
"**	c #014C8E",
749
"=*	c #0474B2",
750
"-*	c #077CB9",
751
";*	c #0B80BA",
752
">*	c #0E82BB",
753
",*	c #1083BC",
754
"'*	c #1285BD",
755
")*	c #1485BE",
756
"!*	c #1686BD",
757
"~*	c #1785BD",
758
"{*	c #1884BC",
759
"]*	c #1882BB",
760
"^*	c #1880B9",
761
"/*	c #187DB7",
762
"(*	c #177AB6",
763
"_*	c #1571AF",
764
":*	c #143676",
765
"<*	c #122968",
766
"[*	c #0F2362",
767
"}*	c #0D1D5C",
768
"|*	c #0A1755",
769
"1*	c #030A47",
770
"2*	c #000239",
771
"3*	c #002A82",
772
"4*	c #00175D",
773
"5*	c #00104F",
774
"6*	c #001252",
775
"7*	c #001454",
776
"8*	c #001657",
777
"9*	c #00195C",
778
"0*	c #001C5E",
779
"a*	c #001D61",
780
"b*	c #002165",
781
"c*	c #002366",
782
"d*	c #002468",
783
"e*	c #006CAE",
784
"f*	c #006FB0",
785
"g*	c #0271B1",
786
"h*	c #0574B3",
787
"i*	c #0877B4",
788
"j*	c #0B78B5",
789
"k*	c #0F7AB6",
790
"l*	c #107AB7",
791
"m*	c #127AB6",
792
"n*	c #1279B5",
793
"o*	c #1377B4",
794
"p*	c #1375B3",
795
"q*	c #1372B1",
796
"r*	c #126FAF",
797
"s*	c #115797",
798
"t*	c #0F2766",
799
"u*	c #0D2160",
800
"v*	c #0B1B5A",
801
"w*	c #091554",
802
"x*	c #06104D",
803
"y*	c #030A46",
804
"z*	c #000540",
805
"A*	c #000036",
806
"B*	c #00237E",
807
"C*	c #002980",
808
"D*	c #002372",
809
"E*	c #001A60",
810
"F*	c #001659",
811
"G*	c #001358",
812
"H*	c #001A5F",
813
"I*	c #002064",
814
"J*	c #001B5E",
815
"K*	c #005397",
816
"L*	c #0065A9",
817
"M*	c #0067AB",
818
"N*	c #0069AC",
819
"O*	c #026AAD",
820
"P*	c #046CAE",
821
"Q*	c #0768AB",
822
"R*	c #0965A9",
823
"S*	c #0A6EAF",
824
"T*	c #0C6EAE",
825
"U*	c #0D6DAE",
826
"V*	c #0D6CAD",
827
"W*	c #0D6AAB",
828
"X*	c #0D67AA",
829
"Y*	c #0D64A7",
830
"Z*	c #0C498C",
831
"`*	c #0A1E5E",
832
" =	c #091856",
833
".=	c #071350",
834
"+=	c #050D4B",
835
"@=	c #020844",
836
"#=	c #00043F",
837
"$=	c #00023B",
838
"%=	c #000037",
839
"&=	c #000035",
840
"*=	c #000034",
841
"==	c #001A77",
842
"-=	c #00237D",
843
";=	c #002881",
844
">=	c #002D84",
845
",=	c #00287F",
846
"'=	c #000B6C",
847
")=	c #00388A",
848
"!=	c #003785",
849
"~=	c #001556",
850
"{=	c #001759",
851
"]=	c #00195B",
852
"^=	c #001C5F",
853
"/=	c #001C60",
854
"(=	c #004B91",
855
"_=	c #004287",
856
":=	c #00569C",
857
"<=	c #0061A7",
858
"[=	c #023187",
859
"}=	c #033388",
860
"|=	c #0563A7",
861
"1=	c #0662A7",
862
"2=	c #0762A7",
863
"3=	c #0860A6",
864
"4=	c #085EA4",
865
"5=	c #085CA3",
866
"6=	c #084388",
867
"7=	c #071B5B",
868
"8=	c #061453",
869
"9=	c #04104D",
870
"0=	c #030B48",
871
"a=	c #010742",
872
"b=	c #00033E",
873
"c=	c #00013A",
874
"d=	c #000033",
875
"e=	c #000032",
876
"f=	c #001C79",
877
"g=	c #00217C",
878
"h=	c #002780",
879
"i=	c #002B83",
880
"j=	c #003589",
881
"k=	c #001D63",
882
"l=	c #000F4F",
883
"m=	c #000F4E",
884
"n=	c #001050",
885
"o=	c #001152",
886
"p=	c #001353",
887
"q=	c #001455",
888
"r=	c #002F74",
889
"s=	c #00529A",
890
"t=	c #0058A1",
891
"u=	c #00529D",
892
"v=	c #0156A0",
893
"w=	c #02569F",
894
"x=	c #02549E",
895
"y=	c #03529D",
896
"z=	c #034F9A",
897
"A=	c #032062",
898
"B=	c #020F4E",
899
"C=	c #010C49",
900
"D=	c #000845",
901
"E=	c #00033C",
902
"F=	c #000138",
903
"G=	c #000135",
904
"H=	c #001474",
905
"I=	c #001F7B",
906
"J=	c #00247E",
907
"K=	c #002D83",
908
"L=	c #001051",
909
"M=	c #000A46",
910
"N=	c #000B48",
911
"O=	c #000C4A",
912
"P=	c #000D4B",
913
"Q=	c #000E4D",
914
"R=	c #001151",
915
"S=	c #001253",
916
"T=	c #00377E",
917
"U=	c #004E9A",
918
"V=	c #004C98",
919
"W=	c #00408C",
920
"X=	c #000946",
921
"Y=	c #00053F",
922
"Z=	c #000137",
923
"`=	c #000031",
924
" -	c #000030",
925
".-	c #001373",
926
"+-	c #001876",
927
"@-	c #001D79",
928
"#-	c #00267F",
929
"$-	c #000D4D",
930
"%-	c #000741",
931
"&-	c #000843",
932
"*-	c #000945",
933
"=-	c #000A47",
934
"--	c #000B49",
935
";-	c #000D4C",
936
">-	c #002F77",
937
",-	c #00327A",
938
"'-	c #002267",
939
")-	c #002166",
940
"!-	c #00256A",
941
"~-	c #003D89",
942
"{-	c #004393",
943
"]-	c #003F90",
944
"^-	c #003C8D",
945
"/-	c #003382",
946
"(-	c #003587",
947
"_-	c #002069",
948
":-	c #00033A",
949
"<-	c #000136",
950
"[-	c #00002F",
951
"}-	c #000C6E",
952
"|-	c #001171",
953
"1-	c #001574",
954
"2-	c #001E7A",
955
"3-	c #00196A",
956
"4-	c #00053E",
957
"5-	c #000640",
958
"6-	c #000742",
959
"7-	c #00185B",
960
"8-	c #003787",
961
"9-	c #00398C",
962
"0-	c #00378B",
963
"a-	c #003388",
964
"b-	c #002779",
965
"c-	c #00063F",
966
"d-	c #00002D",
967
"e-	c #00096C",
968
"f-	c #000D6F",
969
"g-	c #001271",
970
"h-	c #001675",
971
"i-	c #001872",
972
"j-	c #000338",
973
"k-	c #00043A",
974
"l-	c #00043B",
975
"m-	c #00053D",
976
"n-	c #000844",
977
"o-	c #000944",
978
"p-	c #002573",
979
"q-	c #002E85",
980
"r-	c #002C83",
981
"s-	c #001E71",
982
"t-	c #00002E",
983
"u-	c #00002C",
984
"v-	c #000266",
985
"w-	c #00066A",
986
"x-	c #000A6D",
987
"y-	c #000E70",
988
"z-	c #000C58",
989
"A-	c #000643",
990
"B-	c #000337",
991
"C-	c #000236",
992
"D-	c #000339",
993
"E-	c #00053C",
994
"F-	c #00063E",
995
"G-	c #00073F",
996
"H-	c #00145A",
997
"I-	c #001C78",
998
"J-	c #000743",
999
"K-	c #00002A",
1000
"L-	c #00005F",
1001
"M-	c #000267",
1002
"N-	c #000A6C",
1003
"O-	c #000952",
1004
"P-	c #000131",
1005
"Q-	c #000132",
1006
"R-	c #000133",
1007
"S-	c #000134",
1008
"T-	c #000235",
1009
"U-	c #00196E",
1010
"V-	c #001D7A",
1011
"W-	c #001B78",
1012
"X-	c #001977",
1013
"Y-	c #001775",
1014
"Z-	c #001473",
1015
"`-	c #000E66",
1016
" ;	c #00002B",
1017
".;	c #000029",
1018
"+;	c #000053",
1019
"@;	c #00005E",
1020
"#;	c #000265",
1021
"$;	c #000464",
1022
"%;	c #000130",
1023
"&;	c #001160",
1024
"*;	c #001164",
1025
"=;	c #001674",
1026
"-;	c #001272",
1027
";;	c #001071",
1028
">;	c #000E6F",
1029
",;	c #000B6E",
1030
"';	c #00086C",
1031
");	c #00045F",
1032
"!;	c #000152",
1033
"~;	c #000046",
1034
"{;	c #000051",
1035
"];	c #00005A",
1036
"^;	c #00012F",
1037
"/;	c #000542",
1038
"(;	c #00106E",
1039
"_;	c #001070",
1040
":;	c #000F70",
1041
"<;	c #00086B",
1042
"[;	c #000367",
1043
"};	c #000163",
1044
"|;	c #00005B",
1045
"1;	c #000052",
1046
"2;	c #000047",
1047
"3;	c #000041",
1048
"4;	c #000028",
1049
"5;	c #000021",
1050
"6;	c #000025",
1051
"7;	c #00003E",
1052
"8;	c #00003A",
1053
"9;	c #00075A",
1054
"0;	c #00076B",
1055
"a;	c #000569",
1056
"b;	c #000368",
1057
"c;	c #000162",
1058
"d;	c #00005C",
1059
"e;	c #000054",
1060
"f;	c #00004C",
1061
"g;	c #000042",
1062
"h;	c #000039",
1063
"i;	c #000026",
1064
"j;	c #000023",
1065
"k;	c #000017",
1066
"l;	c #00001C",
1067
"m;	c #00004D",
1068
"n;	c #000055",
1069
"o;	c #000027",
1070
"p;	c #00003D",
1071
"q;	c #000058",
1072
"r;	c #00004E",
1073
"s;	c #000048",
1074
"t;	c #000019",
1075
"u;	c #000012",
1076
"v;	c #00001D",
1077
"w;	c #00001F",
1078
"x;	c #000044",
1079
"y;	c #000008",
1080
"z;	c #000018",
1081
"A;	c #000024",
1082
"B;	c #000015",
1083
"C;	c #000022",
1084
"D;	c #00000F",
1085
"E;	c #000004",
1086
"F;	c #000007",
1087
"G;	c #000009",
1088
"H;	c #00000C",
1089
"I;	c #00000D",
1090
"J;	c #00000E",
1091
"K;	c #00000A",
1092
"L;	c #000003",
1093
"M;	c #000000",
1094
"N;	c #000001",
1095
"O;	c #000005",
1096
"P;	c #00000B",
1097
"                                                                                                ",
1098
"                                                                                                ",
1099
"                                        . + @ # $ % & *                                         ",
1100
"                                = - ; > , ' ) ! ~ { ] ^ / ( _ :                                 ",
1101
"                            < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d e                               ",
1102
"                        f g h i j k l m n o p q r s t u v w x y z A B                           ",
1103
"                      C D E F G H I J K L M N O P Q R S T U V W X Y Z `  .                      ",
1104
"                    ..+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|.                    ",
1105
"                  1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.                  ",
1106
"                t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.                ",
1107
"              Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+                ",
1108
"            3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+k+l+m+]+n+o+p+q+r+s+t+u+v+w+x+y+              ",
1109
"            z+A+B+C+D+E+F+G+H+I+J+K+L+M+f+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@            ",
1110
"          &@*@=@-@;@>@,@'@)@!@~@{@]@^@L+/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@d@            ",
1111
"          e@f@z+A+B+g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@          ",
1112
"        N@O@P@Q@R@S@T@U@V@W@X@Y@l@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#          ",
1113
"        :#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#        ",
1114
"        z#A#B#M@C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$z#        ",
1115
"      -$;$>$,$O@'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$3$6$7$8$ $9$0$a$b$c$d$e$f$g$h$i$        ",
1116
"      j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$G$H$8$I$J$K$L$M$N$O$P$Q$R$S$T$U$k$V$      ",
1117
"      W$X$Y$Z$`$ %.%+%p$q$@%#%$%%%&%*%=%-%;%>%,%'%)%p#p#J$!%K$~%{%]%^%/%(%_%:%<%[%}%|%1%2%      ",
1118
"      3%4%5%6%7%8%9% %0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%0$q%r%]%s%t%u%v%w%x%y%z%A%B%C%D%3%      ",
1119
"      E%F%G%H%I%J%K%8%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &9+.&+&V.@&#&$&%&&&*&=&-&;&>&,&'&)&      ",
1120
"      !&~&{&]&G%^&I%J%/&(&7%_& %:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&$&b&c&d&e&f&g&h&i&j&k&l&m&      ",
1121
"      n&o&p&q&r&s&G%t&u&v&w&K%(&x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&      ",
1122
"      `& *.*+*p&q&@*#*$*%*^&u&v&J%&***=*-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*|*V&1*l&Y&Z&2*      ",
1123
"      3*4*5*6*7*8*p&9*0*a*s&b*c*d*v&e*f*g*h*i*j**$k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*Y&Z&A*z*      ",
1124
"      B*C*D*E*F*G*H*I*+*p&9*J*r&{&x&K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*=        ",
1125
"      ==-=;=>=,='=)=!=J*.*~=+*{=]=^=/=(=_=:=l$<=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=%=&=d=e=        ",
1126
"        f=g=h=i=3*j=k=l=m=n=o=p=q=~=8*r=^=b*s=t=j$u=-$v=w=x=y=z=A=B=C=D=z*E=F=A*&=d=e=G=        ",
1127
"        H===I=J=;=K=L=M=N=O=P=Q=l=n=R=6*S=.*T=D%D%D%U=2%V=V$3%W=J*L=X=Y=$=Z=&=*=e=`= -          ",
1128
"          .-+-@-g=#-$-%-&-*-M==---O=P=;-Q=m=>-,-'-)-!-~-{-E%]-^-/-(-_-:-<-*=d=e=`=[-[-          ",
1129
"          }-|-1-==2-3-4-4-5-%-6-&-*-X==-=-N=q&;-O=O=O=7-8-9-0-j=a-`&b-c-d=e=`= -[-d-$=          ",
1130
"            e-f-g-h-i-4-j-k-l-m-4-c-5-%-6-6-&-&-n-o-o-*-M=p-q-r-3*h=s-X=`= -[-t-u-u-            ",
1131
"            v-w-x-y-g-z-A-B-C-j-D-:-l-l-E-m-4-F-F-c-c-c-G-H-#-J=g=I=I-J-t-t-d-u-K-              ",
1132
"              L-M-w-N-f-O-P-Q-R-S-T-C-C-B-j-D-D-:-k-l-k-D=U-V-W-X-Y-Z-`-[- ; ;.;u-              ",
1133
"                +;@;#;$; ;u-d-t-[- -%;P-Q-R-R-S-B-z*&;*;Y-=;H=-;;;>;,;';);!;%=d-                ",
1134
"                  ~;{;];u-.;K- ; ;u-d-d-d-t-t-^;/;(;_;;;:;f-}-x-<;w-[;};|;1;2;                  ",
1135
"                  A*%=3;4;5;6;u-7;8;u-K- ; ; ; ;^;9;<;0;w-a;b;v-c;d;e;f;g;h;                    ",
1136
"                      i;j;k;l;d=m;1;n;d= ;i;o;o;o;o;p;@;d;q;+;r;s;3;h;`=K-                      ",
1137
"                        t;u;k;o;e=Z&%=5;*=l;v;v;v;w; ;x;3;p;Z&d=d-i;w;                          ",
1138
"                            y;u;z;v;5;A;A;B;u;u;u;j; ;.;i;C;v;z;u;D;                            ",
1139
"                                E;E;F;G;H;I;I;I;H;D;J;H;K;F;E;K;                                ",
1140
"                                      y;L;M;M;N;N;M;N;O;P;                                      ",
1141
"                                                                                                ",
1142
"                                                                                                ",
1143
"                                                                                                ",
1144
"                                                                                                "};
1145
++ debian/mozilla-firefox.1
Line 0 Link Here
0
-- debian/README.Debian
1
.TH MOZILLA\-FIREFOX 1 "November 4, 2004" mozilla\-firefox "Linux User's Manual"
2
.SH NAME
3
mozilla\-firefox - a Web browser for X11 derived from the Mozilla browser
4
5
.SH SYNOPSIS
6
.B mozilla\-firefox
7
[\fIOPTIONS\fR] [\fIURL\fR]
8
9
.B /usr/lib/mozilla\-firefox/firefox\-bin
10
[\fIOPTIONS\fR] [\fIURL\fR]
11
12
.SH DESCRIPTION
13
\fBMozilla Firefox\fR is an open-source web browser, designed for
14
standards compliance, performance and portability.
15
16
.SH USAGE
17
\fBmozilla\-firefox\fR is a simple shell script that will set up the
18
environment for the actual executable, \fBfirefox\-bin\fR.
19
20
.SH OPTIONS
21
A summary of the options supported by \fBmozilla\-firefox\fR is included below.
22
23
.SS "GTK options"
24
\fB\-\-gdk\-debug=\fR\fIFLAGS\fR
25
Gdk debugging flags to set
26
.TP
27
\fB\-\-gdk\-no\-debug=\fR\fIFLAGS\fR
28
Gdk debugging flags to unset
29
.TP
30
\fB\-\-gtk\-debug=\fR\fIFLAGS\fR
31
Gtk+ debugging flags to set
32
.TP
33
\fB\-\-gtk\-no\-debug=\fR\fIFLAGS\fR
34
Gtk+ debugging flags to unset
35
.TP
36
\fB\-\-gtk\-module=\fR\fIMODULE\fR
37
Load an additional Gtk module
38
39
.SS "X11 options"
40
.TP
41
.BI \-\-display= DISPLAY
42
X display to use
43
.TP
44
.B \-\-sync
45
Make X calls synchronous
46
.TP
47
.B \-\-no\-xshm
48
Don't use X shared memory extension
49
.TP
50
.BI \-\-xim\-preedit= STYLE
51
.TP
52
.BI \-\-xim\-status= STYLE
53
.TP
54
.B \-\-g\-fatal\-warnings
55
Make all warnings fatal
56
57
.SS "Mozilla options"
58
.TP
59
\fB\-height\fR \fIvalue\fR
60
Set height of startup window to \fIvalue\fR pixels.
61
.TP
62
.B \-h, \-help
63
Show summary of options.
64
.TP
65
.B \-installer
66
Start with Mozilla 4.x migration window.
67
.TP
68
\fB\-width\fR \fIvalue\fR
69
Set width of startup window to \fIvalue\fR pixels.
70
.TP
71
.B \-v, \-version
72
Print Mozilla Firefox version.
73
.TP
74
\fB\-CreateProfile\fR \fIprofile\fR
75
Create \fIprofile\fR.
76
.TP
77
\fB\-P\fR \fIprofile\fR
78
Start with \fIprofile\fR.
79
.TP
80
.B \-ProfileManager
81
Start with profile manager.
82
.TP
83
\fB\-UILocale\fR \fIlocale\fR
84
Start with \fIlocale\fR resources as User Interface locale. By default, it is
85
guessed from environment and available locales for Mozilla Firefox.
86
.TP
87
\fB\-ContentLocale\fR \fIlocale\fR
88
Start with \fIlocale\fR resources as content locale. By default, it is
89
guessed from environment and available locales for Mozilla Firefox.
90
.TP
91
\fB\-remote\fR \fIcommand\fR
92
Execute \fIcommand\fR in an already running Mozilla Firefox process.
93
For more info, see: \fIhttp://www.mozilla.org/unix/remote.html\fR
94
.TP
95
.B \-jsconsole
96
Start with Javascript Console
97
.TP
98
\fB\-chrome\fR \fIurl\fR
99
Load the specified chrome.
100
.TP
101
.B \-safe\-mode
102
Starts Mozilla Firefox in safe mode, that is disabling all extensions and
103
showing a bit more debugging messages.
104
105
.SS "Debugger options"
106
.TP
107
.B \-g, \-debug
108
Starts Mozilla Firefox through a debugger (gdb by default).
109
.TP
110
\fB\-\-debugger\fR \fIprogram\fR
111
Use \fIprogram\fR as a debugger for Mozilla Firefox. Implies \fB\-debug\fR.
112
113
.SH ENVIRONMENT
114
\fIFIREFOX_DSP\fR - configures the /dev/dsp wrapper to use. Accepted values
115
are "auto" (default), "arts", "esd" or "none".
116
117
.SH FILES
118
\fI/usr/bin/mozilla\-firefox\fR - shell script wrapping
119
\fBfirefox\-bin\fR
120
.br
121
122
\fI/usr/lib/mozilla/firefox\-bin\fR - \fBmozilla\-firefox\fR
123
executable
124
.br
125
126
\fI/etc/mozilla\-firefox/mozilla\-firefoxrc\fR - file containing environment
127
variables to be passed to Mozilla Firefox.
128
.br
129
130
\fI${HOME}/.mozilla/firefox/rc\fR - file containing environment variables to
131
be passed to Mozilla Firefox. Overrides \fI/etc/mozilla\-firefox/mozilla\-firefoxrc\fR
132
133
.SH BUGS
134
To report a bug, please visit \fIhttp://bugzilla.mozilla.org/\fR
135
136
.SH "SEE ALSO"
137
.BR mozilla(1)
138
139
.SH AUTHORS
140
.TP
141
.B The Mozilla Organization
142
.I http://www.mozilla.org/about.html
143
++ debian/README.Debian
Line 0 Link Here
0
-- debian/mozilla-firefox-small.xpm
1
README for Debian
2
=================
3
4
*** Please submit non packaging issue (e.g. feature requests) bugs to
5
the Debian BTS and the upstream bugzilla
6
(http://bugzilla.mozilla.org/buglist.cgi?product=Firefox) and put a
7
reference to the bugzilla bug in the Debian bug report, to ease bug
8
triage for the maintainer. Thank you. ***
9
10
Firefox is still in heavy development, and it does not fully support
11
upgrading from one release to another. Moving your .mozilla/firefox
12
directory out of the way should be your first course of action before
13
filing a bug report. Please see #202130 for an excellent analysis. You
14
may also want to try removing ~/.mozilla/firefox/default/*/XUL.mfasl.
15
16
Firefox requires the loopback interface (lo) to be up and unfiltered
17
to accept keyboard input and function correctly. Please make sure this
18
is the case before filing any bugs.
19
20
Application Update
21
------------------
22
23
From version 1.0-2 onwards, the automatic application update has been
24
completely disabled at the source code level, since it makes no sense
25
in the context of Debian.
26
27
Automatic extensions update has also been disabled, but you can still
28
enable it by either modifying the /etc/mozilla-firefox/pref/firefox.js
29
file, in the user profile prefs.js, in about:config, or in the
30
advanced preferences panel. You can also, while not re-enabling
31
automatic updates, request extensions updates in the extensions
32
manager dialog or in the advanced preferences panel
33
34
Extensions
35
----------
36
37
From Firefox 0.9, "old" extensions are disabled at first run (i.e.
38
when no profile was found). By old extensions, Firefox means extensions
39
not following the new extensions guidelines described at:
40
http://www.bengoodger.com/software/mb/extensions/packaging/extensions.html
41
But even the ones following these guidelines can be considered old if the
42
contents.rdf file in their chrome gives the attribute chrome:extension = 
43
"true" in the package information.
44
45
For packaged extensions, that will lead to a lock case where you can't
46
enable the extension back, due to an Extensions Manager bug. In such case,
47
edit the chrome/chrome.rdf file in your user profile (usually
48
~/.mozilla/firefox/default.*/chrome/chrome.rdf) and remove the
49
c:disabled="true" attributes from the extensions you want to enable back.
50
51
Note that the mentioned Extensions Manager bug will prevent you to disable
52
packaged extensions for you profile from Firefox GUI. You need to edit the
53
chrome/chrome.rdf file in the opposite way, i.e. adding a c:disabled="true"
54
attribute to the corresponding rdf:Description element.
55
56
Sound
57
-----
58
59
By default, firefox detects and runs the correct dsp wrapper for esd
60
or arts. If this is not the desired behaviour, edit
61
/etc/mozilla-firefox/mozilla-firefoxrc or ~/.mozilla-firefoxrc and set
62
the FIREFOX_DSP variable to:
63
64
"auto": The default, auto-detection.
65
66
"esddsp": Use esd.
67
68
"artsdsp": Use arts.
69
70
"none": Don't use any sound wrapper.
71
72
73
using Java. (You should use plugin which compiled with gcc-3.2)
74
----------
75
 
76
Grab a binary Java distribution from http://java.sun.com/. Install the
77
java-package package and do a make-jpkg on the file.
78
79
Buttons
80
-------
81
82
Some people have complained that the button order in dialogs is
83
non-intuitive (ie, they don't like it). To reverse the order, add the
84
following to your chrome/userChrome.css file, under the
85
~/.mozilla/firefox directory:
86
87
.dialog-button-box { -moz-box-direction: reverse; -moz-box-pack: right; }
88
.dialog-button-box spacer { display: none ! important; }
89
90
Emacs keybindings
91
-----------------
92
93
Versions of Firfox before 1.0 supported Emacs style keybindings in
94
text entry boxes. Version 1.0 now merely follows the GTK keybindings
95
settings. To enable Emacs keybindings in GTK, follow the instructions
96
at http://kb.mozillazine.org/Emacs_Keybindings_(Firefox).
97
98
IDN Resolving
99
-------------
100
101
To enable IDN domain names, go to the about:config page and change
102
network.enableIDN to true. There is a however some very bad spoofing
103
that this option opens up. See
104
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=293975. Enable at
105
your own risk.
106
107
 -- Eric Dorland <eric@debian.org>, Tue Mar  1 02:00:11 2005
108
++ debian/mozilla-firefox-small.xpm
Line 0 Link Here
0
-- debian/mozilla-firefox-dev.install
1
/* XPM */
2
static char * mozicon16_xpm[] = {
3
"16 16 137 2",
4
"  	c None",
5
". 	c #388BBF",
6
"+ 	c #59ADD6",
7
"@ 	c #68CEEF",
8
"# 	c #62CCEE",
9
"$ 	c #45AAD7",
10
"% 	c #3578AF",
11
"& 	c #4A93C3",
12
"* 	c #5EA9D2",
13
"= 	c #72D1EF",
14
"- 	c #6DCCEC",
15
"; 	c #4B9FCE",
16
"> 	c #3483BA",
17
", 	c #1E67A5",
18
"' 	c #1B6BA5",
19
") 	c #2F7AB0",
20
"! 	c #48B9E0",
21
"~ 	c #5CC2E5",
22
"{ 	c #6ED0EE",
23
"] 	c #6FC9E9",
24
"^ 	c #4994C5",
25
"/ 	c #3783B9",
26
"( 	c #1E5D9D",
27
"_ 	c #1463A1",
28
": 	c #028DC4",
29
"< 	c #128DC3",
30
"[ 	c #27ABD7",
31
"} 	c #3CB8E0",
32
"| 	c #4EC0E5",
33
"1 	c #5BC3E6",
34
"2 	c #50A2CE",
35
"3 	c #3B7EB5",
36
"4 	c #3C93C4",
37
"5 	c #2164A1",
38
"6 	c #145A9A",
39
"7 	c #0E8FC4",
40
"8 	c #007EBA",
41
"9 	c #0694C8",
42
"0 	c #1896C7",
43
"a 	c #2B99C9",
44
"b 	c #3CB7DE",
45
"c 	c #48B9DF",
46
"d 	c #3E95C5",
47
"e 	c #2E71AB",
48
"f 	c #399DCA",
49
"g 	c #34A9D4",
50
"h 	c #2387BE",
51
"i 	c #1388C0",
52
"j 	c #0059A1",
53
"k 	c #005C9E",
54
"l 	c #00498B",
55
"m 	c #095897",
56
"n 	c #1869A3",
57
"o 	c #289CCA",
58
"p 	c #34B1DA",
59
"q 	c #3BB3DB",
60
"r 	c #3BB3DA",
61
"s 	c #35AFD7",
62
"t 	c #2BA2CF",
63
"u 	c #1E6AA2",
64
"v 	c #106AA7",
65
"w 	c #0258A0",
66
"x 	c #00357F",
67
"y 	c #002D71",
68
"z 	c #003175",
69
"A 	c #013A7E",
70
"B 	c #084889",
71
"C 	c #1577AF",
72
"D 	c #1FA1CF",
73
"E 	c #26A3D1",
74
"F 	c #28A2CF",
75
"G 	c #269ACA",
76
"H 	c #2088BE",
77
"I 	c #174784",
78
"J 	c #0B1F5F",
79
"K 	c #012568",
80
"L 	c #00206A",
81
"M 	c #00185A",
82
"N 	c #001F62",
83
"O 	c #002569",
84
"P 	c #002C70",
85
"Q 	c #0567A7",
86
"R 	c #0D81BB",
87
"S 	c #1485BD",
88
"T 	c #1883BC",
89
"U 	c #177DB7",
90
"V 	c #144A88",
91
"W 	c #0C1D5C",
92
"X 	c #030B47",
93
"Y 	c #00023B",
94
"Z 	c #00207A",
95
"` 	c #002072",
96
" .	c #00236B",
97
"..	c #001556",
98
"+.	c #001B5E",
99
"@.	c #003D81",
100
"#.	c #01599E",
101
"$.	c #04559E",
102
"%.	c #0761A6",
103
"&.	c #085499",
104
"*.	c #061958",
105
"=.	c #020843",
106
"-.	c #000137",
107
";.	c #001C79",
108
">.	c #00155D",
109
",.	c #000945",
110
"'.	c #000B49",
111
").	c #000E4C",
112
"!.	c #002367",
113
"~.	c #002A6F",
114
"{.	c #003E8B",
115
"].	c #003787",
116
"^.	c #00175C",
117
"/.	c #000035",
118
"(.	c #000030",
119
"_.	c #000E67",
120
":.	c #00043B",
121
"<.	c #000339",
122
"[.	c #00043C",
123
"}.	c #00053E",
124
"|.	c #00063F",
125
"1.	c #000E4F",
126
"2.	c #00247E",
127
"3.	c #00166A",
128
"4.	c #00002E",
129
"5.	c #00014F",
130
"6.	c #000029",
131
"7.	c #00012F",
132
"8.	c #000953",
133
"9.	c #000E6E",
134
"0.	c #000A6C",
135
"a.	c #000563",
136
"b.	c #00002F",
137
"c.	c #00001D",
138
"d.	c #000025",
139
"e.	c #000040",
140
"f.	c #000033",
141
"                                ",
142
"          . + @ # $             ",
143
"        % & * = - ; > ,         ",
144
"      ' ) ! ~ { ] ^ / ( _       ",
145
"    : < [ } | 1 2 3 4 5 6 7     ",
146
"    8 9 0 a b c d e f g h i     ",
147
"  j k l m n o p q r s t u v w   ",
148
"  x y z A B C D E F G H I J K   ",
149
"  L M N O P Q R S T U V W X Y   ",
150
"  Z `  ...+.@.#.$.%.&.*.=.-.    ",
151
"    ;.>.,.'.).!.~.{.].^./.(.    ",
152
"      _.:.<.[.}.|.1.2.3.4.      ",
153
"      5.6.(.4.7.8.9.0.a.        ",
154
"          b.b.c.d.e.f.          ",
155
"                                ",
156
"                                "};
157
++ debian/mozilla-firefox-dev.install
Line 0 Link Here
0
-- debian/compat
1
debian/tmp/usr/lib/pkgconfig/*.pc usr/lib/pkgconfig
2
debian/tmp/usr/share/idl/mozilla-firefox usr/share/idl
3
debian/tmp/usr/include/mozilla-firefox usr/include
4
debian/tmp/usr/bin/firefox-config usr/bin
5
++ debian/compat
Line 0 Link Here
0
-- debian/mozilla-firefox.manpages
1
4
2
++ debian/mozilla-firefox.manpages
Line 0 Link Here
0
-- debian/firefox.js
1
debian/mozilla-firefox.1
2
debian/update-mozilla-firefox-chrome.8
3
++ debian/firefox.js
Line 0 Link Here
0
-- debian/debsearch.src
1
// This is the Debian specific preferences file for Mozilla Firefox
2
// You can make any change in here, it is the purpose of this file.
3
// You can, with this file and all files present in the
4
// /etc/mozilla-firefox/pref directory, override any preference that is
5
// present in /usr/lib/mozilla-firefox/defaults/pref directory.
6
// While your changes will be kept on upgrade if you modify files in
7
// /etc/mozilla-firefox/pref, please note that they won't be kept if you
8
// do them in /usr/lib/mozilla-firefox/defaults/pref.
9
10
pref("extensions.update.enabled", true);
11
pref("extensions.update.autoUpdateEnabled", false);
12
pref("extensions.update.autoUpdate", false);
13
14
// Use LANG environment variable to choose locale
15
pref("intl.locale.matchOS", true);
16
17
// Disable default browser checking.
18
pref("browser.shell.checkDefaultBrowser", false);
19
++ debian/debsearch.src
Line 0 Link Here
0
-- debian/mozilla-firefox.prerm
1
# Mozilla Firebird plugin file
2
#
3
# Debian package lookup
4
# by Fergus McKenzie-Kay copying code 
5
# by Spencer Wysinger <http://wysinger.com/>
6
#
7
# Last updated: August 12, 2003
8
9
<search 
10
	name="Deb Search"
11
	description="Perform a search for Debian packages"
12
	action="http://packages.debian.org/cgi-bin/search_packages.pl"
13
	searchForm="http://packages.debian.org/"
14
	queryEncoding="utf-8"
15
	queryCharset="utf-8"
16
	method="GET"
17
>
18
19
<input name="searchon" value="names">
20
<input name="subword" value="1">
21
<input name="version" value="all">
22
<input name="release" value="all">
23
<input name="keywords" user="">
24
<input name="sourceid" value="mozilla-search">
25
26
</search>
27
++ debian/mozilla-firefox.prerm
Line 0 Link Here
0
-- debian/mozilla-firefox-gnome-support.install
1
#!/bin/sh -e
2
3
if [ "$1" = "remove" -o "$1" = "deconfigure" ] ; then
4
    update-alternatives --remove x-www-browser /usr/bin/mozilla-firefox
5
    update-alternatives --remove mozilla /usr/bin/mozilla-firefox
6
fi
7
8
if [ "$1" = "remove" ]; then
9
    rm -rf /var/lib/mozilla-firefox/chrome/overlayinfo
10
    rm -f /var/lib/mozilla-firefox/chrome/chrome.rdf
11
    rm -f /var/lib/mozilla-firefox/defaults.ini
12
    rm -f /var/lib/mozilla-firefox/components.ini
13
    rm -f /var/lib/mozilla-firefox/components/xpti.dat
14
    rm -f /var/lib/mozilla-firefox/components/compreg.dat
15
    rm -f /var/lib/mozilla-firefox/extensions/installed-extensions.txt
16
    rm -f /var/lib/mozilla-firefox/extensions/Extensions.rdf
17
    if [ -d /var/lib/mozilla-firefox/ ]; then
18
        find /var/lib/mozilla-firefox/ -type d -depth -empty -exec rmdir {} \;
19
    fi
20
fi
21
22
#DEBHELPER#
23
++ debian/mozilla-firefox-gnome-support.install
Line 0 Link Here
0
-- debian/mozilla-firefox.menu
1
debian/tmp/usr/lib/mozilla-firefox/components/*gnome* usr/lib/mozilla-firefox/components
2
++ debian/mozilla-firefox.menu
Line 0 Link Here
0
-- debian/mozilla-firefox.NEWS
1
?package(mozilla-firefox):needs="x11" section="Apps/Net" \
2
        title="Mozilla Firefox" \
3
	icon="/usr/share/pixmaps/mozilla-firefox.xpm" \
4
	command="firefox" hints="Web Browsers"
5
++ debian/mozilla-firefox.NEWS
Line 0 Link Here
0
-- debian/mozilla-firefox-gnome-support.postrm
1
mozilla-firefox (1.0-1) unstable; urgency=medium
2
3
    A heavily patched extension manager has been introduced this
4
    release by Mike Hommey. It is designed to work around the
5
    deficiencies in the upstream's current offering. Unfortunately, the
6
    registration process for extension and locale packages has now
7
    changed in an incompatible way. The packages will install
8
    correctly but won't actually be registered with
9
    Firefox. Maintainers are aware of the issue and are working on new
10
    packages that will work with this new mechanism. Please do not
11
    file bugs on this issue.
12
    
13
 -- Eric Dorland <eric@debian.org>, Wed, 10 Nov 2004 00:16:15 -0500
14
15
mozilla-firefox (0.8-1) unstable; urgency=low
16
17
    The mozilla-firefox package no longer uses the ~/.phoenix
18
    directory for it's configuration, but the ~/.firefox directory. To
19
    migrate your config, just execute "mv ~/.phoenix ~/.firefox" which
20
    should work in most cases.
21
22
 -- Eric Dorland <eric@debian.org>, Fri Feb 20 00:01:54 2004
23
++ debian/mozilla-firefox-gnome-support.postrm
Line 0 Link Here
0
-- debian/mozilla-firefox-dom-inspector.postinst
1
#!/bin/sh -e
2
 
3
case "$1" in
4
    abort-install|purge|remove)
5
        update-mozilla-firefox-chrome || true
6
        ;;
7
    *)
8
        ;;
9
esac
10
 
11
#DEBHELPER#
12
++ debian/mozilla-firefox-dom-inspector.postinst
Line 0 Link Here
0
-- debian/mozilla-firefox-dom-inspector.postrm
1
#!/bin/sh -e
2
 
3
if [ "$1" = "configure" ] ; then
4
    update-mozilla-firefox-chrome
5
fi
6
 
7
#DEBHELPER#
8
++ debian/mozilla-firefox-dom-inspector.postrm
Line 0 Link Here
0
-- debian/copyright
1
#!/bin/sh -e
2
 
3
case "$1" in
4
    abort-install|purge|remove)
5
        update-mozilla-firefox-chrome || true
6
        ;;
7
    *)
8
        ;;
9
esac
10
 
11
#DEBHELPER#
12
++ debian/copyright
Line 0 Link Here
0
-- debian/mozilla-firefox.mime
1
This package was debianized by Eric Dorland <eric@debian.org> on
2
Thu, 05 Jun 2003 01:01:22 -0400
3
4
It was downloaded from http://www.mozilla.org/projects/firebird
5
6
Upstream Authors: Mozilla Project
7
8
Copyright:
9
10
                          MOZILLA PUBLIC LICENSE
11
                                Version 1.1
12
13
                              ---------------
14
15
1. Definitions.
16
17
     1.0.1. "Commercial Use" means distribution or otherwise making the
18
     Covered Code available to a third party.
19
20
     1.1. "Contributor" means each entity that creates or contributes to
21
     the creation of Modifications.
22
23
     1.2. "Contributor Version" means the combination of the Original
24
     Code, prior Modifications used by a Contributor, and the Modifications
25
     made by that particular Contributor.
26
27
     1.3. "Covered Code" means the Original Code or Modifications or the
28
     combination of the Original Code and Modifications, in each case
29
     including portions thereof.
30
31
     1.4. "Electronic Distribution Mechanism" means a mechanism generally
32
     accepted in the software development community for the electronic
33
     transfer of data.
34
35
     1.5. "Executable" means Covered Code in any form other than Source
36
     Code.
37
38
     1.6. "Initial Developer" means the individual or entity identified
39
     as the Initial Developer in the Source Code notice required by Exhibit
40
     A.
41
42
     1.7. "Larger Work" means a work which combines Covered Code or
43
     portions thereof with code not governed by the terms of this License.
44
45
     1.8. "License" means this document.
46
47
     1.8.1. "Licensable" means having the right to grant, to the maximum
48
     extent possible, whether at the time of the initial grant or
49
     subsequently acquired, any and all of the rights conveyed herein.
50
51
     1.9. "Modifications" means any addition to or deletion from the
52
     substance or structure of either the Original Code or any previous
53
     Modifications. When Covered Code is released as a series of files, a
54
     Modification is:
55
          A. Any addition to or deletion from the contents of a file
56
          containing Original Code or previous Modifications.
57
58
          B. Any new file that contains any part of the Original Code or
59
          previous Modifications.
60
61
     1.10. "Original Code" means Source Code of computer software code
62
     which is described in the Source Code notice required by Exhibit A as
63
     Original Code, and which, at the time of its release under this
64
     License is not already Covered Code governed by this License.
65
66
     1.10.1. "Patent Claims" means any patent claim(s), now owned or
67
     hereafter acquired, including without limitation,  method, process,
68
     and apparatus claims, in any patent Licensable by grantor.
69
70
     1.11. "Source Code" means the preferred form of the Covered Code for
71
     making modifications to it, including all modules it contains, plus
72
     any associated interface definition files, scripts used to control
73
     compilation and installation of an Executable, or source code
74
     differential comparisons against either the Original Code or another
75
     well known, available Covered Code of the Contributor's choice. The
76
     Source Code can be in a compressed or archival form, provided the
77
     appropriate decompression or de-archiving software is widely available
78
     for no charge.
79
80
     1.12. "You" (or "Your")  means an individual or a legal entity
81
     exercising rights under, and complying with all of the terms of, this
82
     License or a future version of this License issued under Section 6.1.
83
     For legal entities, "You" includes any entity which controls, is
84
     controlled by, or is under common control with You. For purposes of
85
     this definition, "control" means (a) the power, direct or indirect,
86
     to cause the direction or management of such entity, whether by
87
     contract or otherwise, or (b) ownership of more than fifty percent
88
     (50%) of the outstanding shares or beneficial ownership of such
89
     entity.
90
91
2. Source Code License.
92
93
     2.1. The Initial Developer Grant.
94
     The Initial Developer hereby grants You a world-wide, royalty-free,
95
     non-exclusive license, subject to third party intellectual property
96
     claims:
97
          (a)  under intellectual property rights (other than patent or
98
          trademark) Licensable by Initial Developer to use, reproduce,
99
          modify, display, perform, sublicense and distribute the Original
100
          Code (or portions thereof) with or without Modifications, and/or
101
          as part of a Larger Work; and
102
103
          (b) under Patents Claims infringed by the making, using or
104
          selling of Original Code, to make, have made, use, practice,
105
          sell, and offer for sale, and/or otherwise dispose of the
106
          Original Code (or portions thereof).
107
108
          (c) the licenses granted in this Section 2.1(a) and (b) are
109
          effective on the date Initial Developer first distributes
110
          Original Code under the terms of this License.
111
112
          (d) Notwithstanding Section 2.1(b) above, no patent license is
113
          granted: 1) for code that You delete from the Original Code; 2)
114
          separate from the Original Code;  or 3) for infringements caused
115
          by: i) the modification of the Original Code or ii) the
116
          combination of the Original Code with other software or devices.
117
118
     2.2. Contributor Grant.
119
     Subject to third party intellectual property claims, each Contributor
120
     hereby grants You a world-wide, royalty-free, non-exclusive license
121
122
          (a)  under intellectual property rights (other than patent or
123
          trademark) Licensable by Contributor, to use, reproduce, modify,
124
          display, perform, sublicense and distribute the Modifications
125
          created by such Contributor (or portions thereof) either on an
126
          unmodified basis, with other Modifications, as Covered Code
127
          and/or as part of a Larger Work; and
128
129
          (b) under Patent Claims infringed by the making, using, or
130
          selling of  Modifications made by that Contributor either alone
131
          and/or in combination with its Contributor Version (or portions
132
          of such combination), to make, use, sell, offer for sale, have
133
          made, and/or otherwise dispose of: 1) Modifications made by that
134
          Contributor (or portions thereof); and 2) the combination of
135
          Modifications made by that Contributor with its Contributor
136
          Version (or portions of such combination).
137
138
          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
139
          effective on the date Contributor first makes Commercial Use of
140
          the Covered Code.
141
142
          (d)    Notwithstanding Section 2.2(b) above, no patent license is
143
          granted: 1) for any code that Contributor has deleted from the
144
          Contributor Version; 2)  separate from the Contributor Version;
145
          3)  for infringements caused by: i) third party modifications of
146
          Contributor Version or ii)  the combination of Modifications made
147
          by that Contributor with other software  (except as part of the
148
          Contributor Version) or other devices; or 4) under Patent Claims
149
          infringed by Covered Code in the absence of Modifications made by
150
          that Contributor.
151
152
3. Distribution Obligations.
153
154
     3.1. Application of License.
155
     The Modifications which You create or to which You contribute are
156
     governed by the terms of this License, including without limitation
157
     Section 2.2. The Source Code version of Covered Code may be
158
     distributed only under the terms of this License or a future version
159
     of this License released under Section 6.1, and You must include a
160
     copy of this License with every copy of the Source Code You
161
     distribute. You may not offer or impose any terms on any Source Code
162
     version that alters or restricts the applicable version of this
163
     License or the recipients' rights hereunder. However, You may include
164
     an additional document offering the additional rights described in
165
     Section 3.5.
166
167
     3.2. Availability of Source Code.
168
     Any Modification which You create or to which You contribute must be
169
     made available in Source Code form under the terms of this License
170
     either on the same media as an Executable version or via an accepted
171
     Electronic Distribution Mechanism to anyone to whom you made an
172
     Executable version available; and if made available via Electronic
173
     Distribution Mechanism, must remain available for at least twelve (12)
174
     months after the date it initially became available, or at least six
175
     (6) months after a subsequent version of that particular Modification
176
     has been made available to such recipients. You are responsible for
177
     ensuring that the Source Code version remains available even if the
178
     Electronic Distribution Mechanism is maintained by a third party.
179
180
     3.3. Description of Modifications.
181
     You must cause all Covered Code to which You contribute to contain a
182
     file documenting the changes You made to create that Covered Code and
183
     the date of any change. You must include a prominent statement that
184
     the Modification is derived, directly or indirectly, from Original
185
     Code provided by the Initial Developer and including the name of the
186
     Initial Developer in (a) the Source Code, and (b) in any notice in an
187
     Executable version or related documentation in which You describe the
188
     origin or ownership of the Covered Code.
189
190
     3.4. Intellectual Property Matters
191
          (a) Third Party Claims.
192
          If Contributor has knowledge that a license under a third party's
193
          intellectual property rights is required to exercise the rights
194
          granted by such Contributor under Sections 2.1 or 2.2,
195
          Contributor must include a text file with the Source Code
196
          distribution titled "LEGAL" which describes the claim and the
197
          party making the claim in sufficient detail that a recipient will
198
          know whom to contact. If Contributor obtains such knowledge after
199
          the Modification is made available as described in Section 3.2,
200
          Contributor shall promptly modify the LEGAL file in all copies
201
          Contributor makes available thereafter and shall take other steps
202
          (such as notifying appropriate mailing lists or newsgroups)
203
          reasonably calculated to inform those who received the Covered
204
          Code that new knowledge has been obtained.
205
206
          (b) Contributor APIs.
207
          If Contributor's Modifications include an application programming
208
          interface and Contributor has knowledge of patent licenses which
209
          are reasonably necessary to implement that API, Contributor must
210
          also include this information in the LEGAL file.
211
212
               (c)    Representations.
213
          Contributor represents that, except as disclosed pursuant to
214
          Section 3.4(a) above, Contributor believes that Contributor's
215
          Modifications are Contributor's original creation(s) and/or
216
          Contributor has sufficient rights to grant the rights conveyed by
217
          this License.
218
219
     3.5. Required Notices.
220
     You must duplicate the notice in Exhibit A in each file of the Source
221
     Code.  If it is not possible to put such notice in a particular Source
222
     Code file due to its structure, then You must include such notice in a
223
     location (such as a relevant directory) where a user would be likely
224
     to look for such a notice.  If You created one or more Modification(s)
225
     You may add your name as a Contributor to the notice described in
226
     Exhibit A.  You must also duplicate this License in any documentation
227
     for the Source Code where You describe recipients' rights or ownership
228
     rights relating to Covered Code.  You may choose to offer, and to
229
     charge a fee for, warranty, support, indemnity or liability
230
     obligations to one or more recipients of Covered Code. However, You
231
     may do so only on Your own behalf, and not on behalf of the Initial
232
     Developer or any Contributor. You must make it absolutely clear than
233
     any such warranty, support, indemnity or liability obligation is
234
     offered by You alone, and You hereby agree to indemnify the Initial
235
     Developer and every Contributor for any liability incurred by the
236
     Initial Developer or such Contributor as a result of warranty,
237
     support, indemnity or liability terms You offer.
238
239
     3.6. Distribution of Executable Versions.
240
     You may distribute Covered Code in Executable form only if the
241
     requirements of Section 3.1-3.5 have been met for that Covered Code,
242
     and if You include a notice stating that the Source Code version of
243
     the Covered Code is available under the terms of this License,
244
     including a description of how and where You have fulfilled the
245
     obligations of Section 3.2. The notice must be conspicuously included
246
     in any notice in an Executable version, related documentation or
247
     collateral in which You describe recipients' rights relating to the
248
     Covered Code. You may distribute the Executable version of Covered
249
     Code or ownership rights under a license of Your choice, which may
250
     contain terms different from this License, provided that You are in
251
     compliance with the terms of this License and that the license for the
252
     Executable version does not attempt to limit or alter the recipient's
253
     rights in the Source Code version from the rights set forth in this
254
     License. If You distribute the Executable version under a different
255
     license You must make it absolutely clear that any terms which differ
256
     from this License are offered by You alone, not by the Initial
257
     Developer or any Contributor. You hereby agree to indemnify the
258
     Initial Developer and every Contributor for any liability incurred by
259
     the Initial Developer or such Contributor as a result of any such
260
     terms You offer.
261
262
     3.7. Larger Works.
263
     You may create a Larger Work by combining Covered Code with other code
264
     not governed by the terms of this License and distribute the Larger
265
     Work as a single product. In such a case, You must make sure the
266
     requirements of this License are fulfilled for the Covered Code.
267
268
4. Inability to Comply Due to Statute or Regulation.
269
270
     If it is impossible for You to comply with any of the terms of this
271
     License with respect to some or all of the Covered Code due to
272
     statute, judicial order, or regulation then You must: (a) comply with
273
     the terms of this License to the maximum extent possible; and (b)
274
     describe the limitations and the code they affect. Such description
275
     must be included in the LEGAL file described in Section 3.4 and must
276
     be included with all distributions of the Source Code. Except to the
277
     extent prohibited by statute or regulation, such description must be
278
     sufficiently detailed for a recipient of ordinary skill to be able to
279
     understand it.
280
281
5. Application of this License.
282
283
     This License applies to code to which the Initial Developer has
284
     attached the notice in Exhibit A and to related Covered Code.
285
286
6. Versions of the License.
287
288
     6.1. New Versions.
289
     Netscape Communications Corporation ("Netscape") may publish revised
290
     and/or new versions of the License from time to time. Each version
291
     will be given a distinguishing version number.
292
293
     6.2. Effect of New Versions.
294
     Once Covered Code has been published under a particular version of the
295
     License, You may always continue to use it under the terms of that
296
     version. You may also choose to use such Covered Code under the terms
297
     of any subsequent version of the License published by Netscape. No one
298
     other than Netscape has the right to modify the terms applicable to
299
     Covered Code created under this License.
300
301
     6.3. Derivative Works.
302
     If You create or use a modified version of this License (which you may
303
     only do in order to apply it to code which is not already Covered Code
304
     governed by this License), You must (a) rename Your license so that
305
     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
306
     "MPL", "NPL" or any confusingly similar phrase do not appear in your
307
     license (except to note that your license differs from this License)
308
     and (b) otherwise make it clear that Your version of the license
309
     contains terms which differ from the Mozilla Public License and
310
     Netscape Public License. (Filling in the name of the Initial
311
     Developer, Original Code or Contributor in the notice described in
312
     Exhibit A shall not of themselves be deemed to be modifications of
313
     this License.)
314
315
7. DISCLAIMER OF WARRANTY.
316
317
     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
318
     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
319
     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
320
     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
321
     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
322
     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
323
     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
324
     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
325
     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
326
     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
327
328
8. TERMINATION.
329
330
     8.1.  This License and the rights granted hereunder will terminate
331
     automatically if You fail to comply with terms herein and fail to cure
332
     such breach within 30 days of becoming aware of the breach. All
333
     sublicenses to the Covered Code which are properly granted shall
334
     survive any termination of this License. Provisions which, by their
335
     nature, must remain in effect beyond the termination of this License
336
     shall survive.
337
338
     8.2.  If You initiate litigation by asserting a patent infringement
339
     claim (excluding declatory judgment actions) against Initial Developer
340
     or a Contributor (the Initial Developer or Contributor against whom
341
     You file such action is referred to as "Participant")  alleging that:
342
343
     (a)  such Participant's Contributor Version directly or indirectly
344
     infringes any patent, then any and all rights granted by such
345
     Participant to You under Sections 2.1 and/or 2.2 of this License
346
     shall, upon 60 days notice from Participant terminate prospectively,
347
     unless if within 60 days after receipt of notice You either: (i)
348
     agree in writing to pay Participant a mutually agreeable reasonable
349
     royalty for Your past and future use of Modifications made by such
350
     Participant, or (ii) withdraw Your litigation claim with respect to
351
     the Contributor Version against such Participant.  If within 60 days
352
     of notice, a reasonable royalty and payment arrangement are not
353
     mutually agreed upon in writing by the parties or the litigation claim
354
     is not withdrawn, the rights granted by Participant to You under
355
     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
356
     the 60 day notice period specified above.
357
358
     (b)  any software, hardware, or device, other than such Participant's
359
     Contributor Version, directly or indirectly infringes any patent, then
360
     any rights granted to You by such Participant under Sections 2.1(b)
361
     and 2.2(b) are revoked effective as of the date You first made, used,
362
     sold, distributed, or had made, Modifications made by that
363
     Participant.
364
365
     8.3.  If You assert a patent infringement claim against Participant
366
     alleging that such Participant's Contributor Version directly or
367
     indirectly infringes any patent where such claim is resolved (such as
368
     by license or settlement) prior to the initiation of patent
369
     infringement litigation, then the reasonable value of the licenses
370
     granted by such Participant under Sections 2.1 or 2.2 shall be taken
371
     into account in determining the amount or value of any payment or
372
     license.
373
374
     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
375
     all end user license agreements (excluding distributors and resellers)
376
     which have been validly granted by You or any distributor hereunder
377
     prior to termination shall survive termination.
378
379
9. LIMITATION OF LIABILITY.
380
381
     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
382
     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
383
     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
384
     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
385
     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
386
     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
387
     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
388
     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
389
     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
390
     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
391
     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
392
     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
393
     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
394
     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
395
396
10. U.S. GOVERNMENT END USERS.
397
398
     The Covered Code is a "commercial item," as that term is defined in
399
     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
400
     software" and "commercial computer software documentation," as such
401
     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
402
     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
403
     all U.S. Government End Users acquire Covered Code with only those
404
     rights set forth herein.
405
406
11. MISCELLANEOUS.
407
408
     This License represents the complete agreement concerning subject
409
     matter hereof. If any provision of this License is held to be
410
     unenforceable, such provision shall be reformed only to the extent
411
     necessary to make it enforceable. This License shall be governed by
412
     California law provisions (except to the extent applicable law, if
413
     any, provides otherwise), excluding its conflict-of-law provisions.
414
     With respect to disputes in which at least one party is a citizen of,
415
     or an entity chartered or registered to do business in the United
416
     States of America, any litigation relating to this License shall be
417
     subject to the jurisdiction of the Federal Courts of the Northern
418
     District of California, with venue lying in Santa Clara County,
419
     California, with the losing party responsible for costs, including
420
     without limitation, court costs and reasonable attorneys' fees and
421
     expenses. The application of the United Nations Convention on
422
     Contracts for the International Sale of Goods is expressly excluded.
423
     Any law or regulation which provides that the language of a contract
424
     shall be construed against the drafter shall not apply to this
425
     License.
426
427
12. RESPONSIBILITY FOR CLAIMS.
428
429
     As between Initial Developer and the Contributors, each party is
430
     responsible for claims and damages arising, directly or indirectly,
431
     out of its utilization of rights under this License and You agree to
432
     work with Initial Developer and Contributors to distribute such
433
     responsibility on an equitable basis. Nothing herein is intended or
434
     shall be deemed to constitute any admission of liability.
435
436
13. MULTIPLE-LICENSED CODE.
437
438
     Initial Developer may designate portions of the Covered Code as
439
     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
440
     Developer permits you to utilize portions of the Covered Code under
441
     Your choice of the NPL or the alternative licenses, if any, specified
442
     by the Initial Developer in the file described in Exhibit A.
443
444
EXHIBIT A -Mozilla Public License.
445
446
     ``The contents of this file are subject to the Mozilla Public License
447
     Version 1.1 (the "License"); you may not use this file except in
448
     compliance with the License. You may obtain a copy of the License at
449
     http://www.mozilla.org/MPL/
450
451
     Software distributed under the License is distributed on an "AS IS"
452
     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
453
     License for the specific language governing rights and limitations
454
     under the License.
455
456
     The Original Code is ______________________________________.
457
458
     The Initial Developer of the Original Code is ________________________.
459
     Portions created by ______________________ are Copyright (C) ______
460
     _______________________. All Rights Reserved.
461
462
     Contributor(s): ______________________________________.
463
464
     Alternatively, the contents of this file may be used under the terms
465
     of the _____ license (the  "[___] License"), in which case the
466
     provisions of [______] License are applicable instead of those
467
     above.  If you wish to allow use of your version of this file only
468
     under the terms of the [____] License and not to allow others to use
469
     your version of this file under the MPL, indicate your decision by
470
     deleting  the provisions above and replace  them with the notice and
471
     other provisions required by the [___] License.  If you do not delete
472
     the provisions above, a recipient may use your version of this file
473
     under either the MPL or the [___] License."
474
475
     [NOTE: The text of this Exhibit A may differ slightly from the text of
476
     the notices in the Source Code files of the Original Code. You should
477
     use the text of this Exhibit A rather than the text found in the
478
     Original Code Source Code for Your Modifications.]
479
480
     ----------------------------------------------------------------------
481
482
     AMENDMENTS
483
484
     The Netscape Public License Version 1.1 ("NPL") consists of the
485
     Mozilla Public License Version 1.1 with the following Amendments,
486
     including Exhibit A-Netscape Public License.  Files identified with
487
     "Exhibit A-Netscape Public License" are governed by the Netscape
488
     Public License Version 1.1.
489
490
     Additional Terms applicable to the Netscape Public License.
491
          I. Effect.
492
          These additional terms described in this Netscape Public
493
          License -- Amendments shall apply to the Mozilla Communicator
494
          client code and to all Covered Code under this License.
495
496
          II. "Netscape's Branded Code" means Covered Code that Netscape
497
          distributes and/or permits others to distribute under one or more
498
          trademark(s) which are controlled by Netscape but which are not
499
          licensed for use under this License.
500
501
          III. Netscape and logo.
502
          This License does not grant any rights to use the trademarks
503
          "Netscape", the "Netscape N and horizon" logo or the "Netscape
504
          lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript",
505
          "Smart Browsing" even if such marks are included in the Original
506
          Code or Modifications.
507
508
          IV. Inability to Comply Due to Contractual Obligation.
509
          Prior to licensing the Original Code under this License, Netscape
510
          has licensed third party code for use in Netscape's Branded Code.
511
          To the extent that Netscape is limited contractually from making
512
          such third party code available under this License, Netscape may
513
          choose to reintegrate such code into Covered Code without being
514
          required to distribute such code in Source Code form, even if
515
          such code would otherwise be considered "Modifications" under
516
          this License.
517
518
          V. Use of Modifications and Covered Code by Initial Developer.
519
               V.1. In General.
520
               The obligations of Section 3 apply to Netscape, except to
521
               the extent specified in this Amendment, Section V.2 and V.3.
522
523
               V.2. Other Products.
524
               Netscape may include Covered Code in products other than the
525
               Netscape's Branded Code which are released by Netscape
526
               during the two (2) years following the release date of the
527
               Original Code, without such additional products becoming
528
               subject to the terms of this License, and may license such
529
               additional products on different terms from those contained
530
               in this License.
531
532
               V.3. Alternative Licensing.
533
               Netscape may license the Source Code of Netscape's Branded
534
               Code, including Modifications incorporated therein, without
535
               such Netscape Branded Code becoming subject to the terms of
536
               this License, and may license such Netscape Branded Code on
537
               different terms from those contained in this License.
538
539
          VI. Litigation.
540
          Notwithstanding the limitations of Section 11 above, the
541
          provisions regarding litigation in Section 11(a), (b) and (c) of
542
          the License shall apply to all disputes relating to this License.
543
544
     EXHIBIT A-Netscape Public License.
545
546
          "The contents of this file are subject to the Netscape Public
547
          License Version 1.1 (the "License"); you may not use this file
548
          except in compliance with the License. You may obtain a copy of
549
          the License at http://www.mozilla.org/NPL/
550
551
          Software distributed under the License is distributed on an "AS
552
          IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
553
          implied. See the License for the specific language governing
554
          rights and limitations under the License.
555
556
          The Original Code is Mozilla Communicator client code, released
557
          March 31, 1998.
558
559
          The Initial Developer of the Original Code is Netscape
560
          Communications Corporation. Portions created by Netscape are
561
          Copyright (C) 1998-1999 Netscape Communications Corporation. All
562
          Rights Reserved.
563
564
          Contributor(s): ______________________________________.
565
566
          Alternatively, the contents of this file may be used under the
567
          terms of the _____ license (the "[___] License"), in which case
568
          the provisions of [______] License are applicable  instead of
569
          those above.  If you wish to allow use of your version of this
570
          file only under the terms of the [____] License and not to allow
571
          others to use your version of this file under the NPL, indicate
572
          your decision by deleting  the provisions above and replace  them
573
          with the notice and other provisions required by the [___]
574
          License.  If you do not delete the provisions above, a recipient
575
          may use your version of this file under either the NPL or the
576
          [___] License."
577
++ debian/mozilla-firefox.mime
Line 0 Link Here
0
-- debian/control
1
text/html; /usr/bin/mozilla-firefox %s; description=HTML Text; test=test -n "$DISPLAY";  nametemplate=%s.html; priority=5
2
text/xml; /usr/bin/mozilla-firefox %s; description=XML Text; test=test -n "$DISPLAY";  nametemplate=%s.xml; priority=5
3
image/png;  /usr/bin/mozilla-firefox %s; description=PNG Image; test=test -n "$DISPLAY";  nametemplate=%s.png; priority=2
4
image/jpeg;  /usr/bin/mozilla-firefox %s; description=JPEG Image; test=test -n "$DISPLAY";  nametemplate=%s.jpeg; priority=2
5
image/gif;  /usr/bin/mozilla-firefox %s; description=GIF Image; test=test -n "$DISPLAY";  nametemplate=%s.gif; priority=2
6
++ debian/control
Line 0 Link Here
0
-- debian/mozilla-firefox-xremote-client
1
Source: mozilla-firefox
2
Section: web
3
Priority: optional
4
Maintainer: Eric Dorland <eric@debian.org>
5
Uploaders: Mike Hommey <mh@glandium.org>
6
Build-Depends: debhelper (>= 4.0), libx11-dev, libxp-dev, libxt-dev, libgtk2.0-dev, zlib1g-dev, liborbit2-dev, libidl-dev (>= 0.8.0), zip, libxft2-dev, libpng12-dev, libmng-dev, libjpeg62-dev, libxrender-dev, libkrb5-dev, libgnome2-dev, libgconf2-dev, libgnomevfs2-dev, patch, sharutils, m4, gcc-3.4 [amd64], g++-3.4 [amd64], libgnomeui-dev, libxinerama-dev
7
Standards-Version: 3.6.1
8
9
Package: mozilla-firefox
10
Architecture: any
11
Depends: fontconfig, psmisc, debianutils (>= 1.16), ${shlibs:Depends}
12
Suggests: mozilla-firefox-gnome-support (= ${Source-Version}), latex-xft-fonts, xprt-xprintorg
13
Provides: www-browser
14
Description: lightweight web browser based on Mozilla
15
 Firefox is a redesign of the Mozilla browser component, similar to
16
 Galeon, K-Meleon and Camino, but written using the XUL user interface
17
 language and designed to be lightweight and cross-platform.
18
 .
19
 This browser was previously known as Firebird and Phoenix.
20
21
Package: mozilla-firefox-dom-inspector
22
Architecture: any
23
Depends: ${shlibs:Depends}, mozilla-firefox (= ${Source-Version})
24
Description: tool for inspecting the DOM of pages in Mozilla Firefox
25
 This is a tool that allows you to inspect the DOM for web pages in
26
 Mozilla Firefox.  This is of great use to people who are doing
27
 Mozilla chrome development or web page development.
28
29
Package: mozilla-firefox-gnome-support
30
Architecture: any
31
Depends: ${shlibs:Depends}, mozilla-firefox (= ${Source-Version})
32
Description: Support for Gnome in Mozilla Firefox
33
 This is an extension to Mozilla Firefox that allows it to use
34
 protocol handlers from Gnome-VFS, such as smb or sftp, and other
35
 Gnome integration features.
36
37
Package: mozilla-firefox-dev
38
Architecture: any
39
Section: devel
40
Depends: mozilla-firefox (= ${Source-Version}), libxt-dev, ${shlibs:Depends}
41
Description: Development files for Mozilla Firefox
42
 This package contains the development headers, idl files and static libraries 
43
 needed to develop applications using Mozilla Firefox.
44
++ debian/mozilla-firefox-xremote-client
Line 0 Link Here
0
-- debian/theme/Uninstall
1
#!/bin/sh
2
3
##
4
## Set MOZILLA_FIVE_HOME
5
##
6
MOZILLA_FIVE_HOME="/usr/lib/mozilla-firefox"
7
8
export MOZILLA_FIVE_HOME
9
10
##
11
## Set LD_LIBRARY_PATH
12
##
13
if [ "$LD_LIBRARY_PATH" ]
14
then
15
  LD_LIBRARY_PATH=/usr/lib/mozilla-firefox:/usr/lib/mozilla-firefox/plugins:/usr/lib/mozilla/plugins:/usr/lib:$LD_LIBRARY_PATH
16
else
17
  LD_LIBRARY_PATH=/usr/lib/mozilla-firefox:/usr/lib/mozilla-firefox/plugins:/usr/lib/mozilla/plugins:/usr/lib
18
fi
19
 export LD_LIBRARY_PATH
20
21
/usr/lib/mozilla-firefox/firefox-bin -a firefox -remote "$1"
22
++ debian/theme/Uninstall
Line 0 Link Here
0
-- debian/theme/00classic
1
register	global	skin	classic/1.0
2
register	global	skin	classic/1.0
3
register	global	skin	classic/1.0
4
register	global	skin	classic/1.0
5
++ debian/theme/00classic
Line 0 Link Here
0
-- debian/inspector/install.rdf
1
theme,{972ce4c6-7e08-4474-a285-3208198ce6fd}
2
++ debian/inspector/install.rdf
Line 0 Link Here
0
-- debian/inspector/00dom-inspector
1
<?xml version="1.0"?>
2
3
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
4
     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
5
6
  <Description about="urn:mozilla:install-manifest">
7
    <em:id>{641d8d09-7dda-4850-8228-ac0ab65e2ac9}</em:id>
8
    <em:version>1.0</em:version>
9
    
10
    <!-- Target Application this extension can install into, 
11
        with minimum and maximum supported versions. --> 
12
    <em:targetApplication>
13
      <Description>
14
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
15
        <em:minVersion>1.0</em:minVersion>
16
        <em:maxVersion>1.0</em:maxVersion>
17
      </Description>
18
    </em:targetApplication>
19
    
20
    <!-- Front End MetaData -->
21
    <em:name>DOM Inspector</em:name>
22
    <em:description>A powerful tool for viewing and manipulating documents.</em:description>
23
    <em:creator>Joe Hewitt</em:creator>
24
    
25
    <!-- Packages, Skins and Locales that this extension registers -->
26
    <em:file>
27
      <Description about="urn:mozilla:extension:file:inspector.jar">
28
        <em:package>content/inspector/</em:package>
29
	<em:locale>locale/en-US/inspector/</em:locale>
30
	<em:skin>skin/classic/inspector/</em:skin>
31
	<em:skin>skin/modern/inspector/</em:skin>
32
      </Description>
33
    </em:file>
34
  </Description>      
35
  
36
</RDF>
37
++ debian/inspector/00dom-inspector
Line 0 Link Here
0
-- debian/inspector/Uninstall
1
extension,{641d8d09-7dda-4850-8228-ac0ab65e2ac9}
2
++ debian/inspector/Uninstall
Line 0 Link Here
0
-- debian/ubuntu-patches/2668-crash
1
register	global	package	inspector
2
register	global	skin	classic/1.0
3
register	global	skin	modern/1.0
4
register	global	locale	en-US
5
++ debian/ubuntu-patches/2668-crash
Line 0 Link Here
1
Index: content/base/src/nsDOMAttribute.cpp
2
===================================================================
3
RCS file: /cvsroot/mozilla/content/base/src/nsDOMAttribute.cpp,v
4
retrieving revision 1.48
5
diff -u -p -r1.48 nsDOMAttribute.cpp
6
--- content/base/src/nsDOMAttribute.cpp	25 Jun 2004 12:25:57 -0000	1.48
Line 0 Link Here
1
? obj-debug
2
Index: gfx/public/nsIRenderingContext.h
3
===================================================================
4
RCS file: /cvsroot/mozilla/gfx/public/nsIRenderingContext.h,v
5
retrieving revision 1.62
6
diff -u -r1.62 nsIRenderingContext.h
7
--- gfx/public/nsIRenderingContext.h	27 Nov 2004 08:22:21 -0000	1.62
Line 0 Link Here
1
--- mozilla/widget/src/gtk/nsGtkEventHandler.cpp.separator	2004-03-08 17:04:32.169832464 +0100
Line 0 Link Here
1
Index: configure.in
2
===================================================================
3
RCS file: /cvsroot/mozilla/configure.in,v
4
retrieving revision 1.1335.2.11
5
diff -u -7 -p -r1.1335.2.11 configure.in
6
--- configure.in	12 Oct 2004 04:13:29 -0000	1.1335.2.11
Line 0 Link Here
1
--- mozilla/gfx/src/gtk/nsFontMetricsPango.cpp.foo	2005-03-21 17:09:14.000000000 -0500
Line 0 Link Here
1
Index: jsstr.c
2
===================================================================
3
RCS file: /cvsroot/mozilla/js/src/jsstr.c,v
4
retrieving revision 3.98
5
diff -p -u -8 -r3.98 jsstr.c
6
--- jsstr.c	24 Feb 2005 18:59:41 -0000	3.98
Line 0 Link Here
0
-- debian/rules
1
#!/bin/sh
2
#
3
# The contents of this file are subject to the Netscape Public
4
# License Version 1.1 (the "License"); you may not use this file
5
# except in compliance with the License. You may obtain a copy of
6
# the License at http://www.mozilla.org/NPL/
7
#
8
# Software distributed under the License is distributed on an "AS
9
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
10
# implied. See the License for the specific language governing
11
# rights and limitations under the License.
12
#
13
# The Original Code is mozilla.org code.
14
#
15
# The Initial Developer of the Original Code is Netscape
16
# Communications Corporation.  Portions created by Netscape are
17
# Copyright (C) 1998 Netscape Communications Corporation. All
18
# Rights Reserved.
19
#
20
# Contributor(s): 
21
#
22
23
##
24
## For silly people running firefox through sudo
25
##
26
if [ "${SUDO_USER}" ] && [ "${SUDO_USER}" != "${USER}" ]; then
27
    SUDO_HOME=`getent passwd ${SUDO_USER} | cut -f6 -d:`
28
    if [ "${SUDO_HOME}" = "${HOME}" ]; then
29
        echo "You should really not run firefox through sudo WITHOUT the -H option." >&2
30
        echo "Anyway, I'll do as if you did use the -H option." >&2
31
        HOME=`getent passwd ${USER} | cut -f6 -d:`
32
        if [ -z "${HOME}" ]; then
33
            echo "Could not find the correct home directory. Please use the -H option of sudo." >&2.
34
        fi
35
    fi
36
fi
37
38
##
39
## Variables
40
##
41
MOZ_DIST_BIN="/usr/lib/mozilla-firefox"
42
MOZ_PROGRAM="/usr/lib/mozilla-firefox/firefox-bin"
43
44
##
45
## Load system and user properties
46
##
47
48
RUNTIME_FIREFOX_DSP="${FIREFOX_DSP}"
49
50
if [ -f /etc/mozilla-firefox/mozilla-firefoxrc ]; then
51
    . /etc/mozilla-firefox/mozilla-firefoxrc
52
fi
53
54
if [ -f "${HOME}/.mozilla/firefox/rc" ]; then
55
    . "${HOME}/.mozilla/firefox/rc"
56
elif [ -f "${HOME}/.mozilla-firefoxrc" ]; then
57
    . "${HOME}/.mozilla-firefoxrc"
58
    echo "Warning: a .mozilla-firefoxrc file has been found in your home directory" >&2
59
    echo "While it is still supported, it is recommended to move it to" >&2
60
    echo "\${HOME}/.mozilla/firefox/rc" >&2
61
fi
62
63
if [ "${RUNTIME_FIREFOX_DSP}" ]; then
64
    FIREFOX_DSP="${RUNTIME_FIREFOX_DSP}"
65
fi
66
67
if [ -z "${FIREFOX_DSP}" ]; then
68
    FIREFOX_DSP="auto"
69
fi
70
71
##
72
## find /dev/dsp handler
73
##
74
75
if [ "${FIREFOX_DSP}" = "auto" ]; then
76
    FIREFOX_DSP=
77
    P=`fuser /dev/dsp /dev/sound/dsp /dev/snd/pcm* /dev/audio 2>/dev/null | sed -e 's#^[^:]*:##' -e 's#[^0-9 ]##g' `
78
    if [ -n "$P" ]; then
79
        if echo $P | xargs ps --no-headers -o user,command -p | grep "^${USER} *.*esd" >/dev/null 2>&1; then 
80
            FIREFOX_DSP=esddsp 
81
        elif echo $P | xargs ps --no-headers -o user,command -p | grep "^${USER} *.*arts" >/dev/null 2>&1; then 
82
            FIREFOX_DSP=artsdsp 
83
        fi
84
    fi
85
elif [ "${FIREFOX_DSP}" = "none" ]; then
86
    FIREFOX_DSP=
87
fi
88
89
##
90
## Set MOZILLA_FIVE_HOME
91
##
92
MOZILLA_FIVE_HOME="/usr/lib/mozilla-firefox"
93
94
export MOZILLA_FIVE_HOME
95
96
##
97
## Set LD_LIBRARY_PATH
98
##
99
EXTENT_LD_LIB_PATH=/usr/lib/mozilla-firefox:/usr/lib/mozilla-firefox/plugins:/usr/lib/mozilla/plugins:/usr/lib
100
if [ "${LD_LIBRARY_PATH}" ]; then
101
    LD_LIBRARY_PATH=${EXTENT_LD_LIB_PATH}:${LD_LIBRARY_PATH}
102
else
103
    LD_LIBRARY_PATH=${EXTENT_LD_LIB_PATH}
104
fi
105
106
export LD_LIBRARY_PATH
107
108
# Set XPSERVERLIST if not set yet for XPrint support, or complain.
109
110
#if [ -z "${XPSERVERLIST}" ]; then
111
#    if [ -x /etc/init.d/xprint ]; then
112
#        XPSERVERLIST=`/etc/init.d/xprint get_xpserverlist`
113
#        export XPSERVERLIST
114
#    else
115
#        echo -e "Warning: \${XPSERVERLIST} not set and /etc/init.d/xprint not found;\nprinting will not work.\nPlease install the xprt-xprintorg package" >&2
116
#    fi  
117
#fi
118
119
#Set our package version, for use during start.
120
if [ -f "${MOZILLA_FIVE_HOME}/pkg-ver" ]; then
121
        PKG_VER=`cat ${MOZILLA_FIVE_HOME}/pkg-ver`;
122
fi
123
124
verbose () {
125
    if [ "${VERBOSE}" ]; then
126
        echo $@
127
    fi
128
}
129
130
echo_vars () {
131
    if [ "${VERBOSE}" ]; then
132
      for var in "$@"; do
133
          echo "$var=`eval echo \\${$var}`"
134
      done
135
    fi
136
}
137
    
138
# exec wrapper for verbosity
139
exec_verbose () {
140
    verbose Running: $@
141
    exec $@
142
}
143
144
# exec wrapper for verbosity
145
run_verbose () {
146
    verbose Running: $@
147
    $@
148
}
149
150
##
151
## Set MOZ_ENABLE_PANGO
152
##
153
154
MOZ_ENABLE_PANGO=1
155
export MOZ_ENABLE_PANGO
156
157
# Figure out if we need to ser LD_ASSUME_KERNEL for older versions of the JVM.
158
set_jvm_vars () {
159
160
    if [ ! -L /usr/lib/mozilla/plugins/libjavaplugin_oji.so ]; then
161
        return;
162
    fi
163
164
    JVM_LINK=`readlink /usr/lib/mozilla/plugins/libjavaplugin_oji.so`
165
166
    # is it relative?  if so append the full path
167
168
    echo "${JVM_LINK}" | grep -e "^/" 2>&1 > /dev/null
169
170
    if [ "$?" -ne 0 ]; then
171
        JVM_LINK="/usr/lib/mozilla/plugins/${JVM_LINK}"
172
    fi
173
174
    JVM_BASE=`basename "${JVM_LINK}"`
175
    JVM_DIR=`dirname "${JVM_LINK}"`
176
    JVM_COMMAND="${JVM_DIR}/java"
177
    if [ ! -r "${JVM_COMMAND}" ]; then
178
        JVM_DIR="${JVM_DIR}/../../../bin/"
179
        JVM_COMMAND="${JVM_DIR}/java"
180
        # does the command exist?
181
        if [ ! -r "${JVM_COMMAND}" ]; then
182
            return
183
        fi
184
    fi
185
186
    # export this temporarily - it seems to work with old and new
187
    # versions of the JVM.
188
    export LD_ASSUME_KERNEL=2.2.5
189
190
    # get the version
191
    JVM_VERSION=`${JVM_COMMAND} -version 2>&1 | grep version | cut -f 3 -d " " | sed -e 's/\"//g'`
192
193
    unset LD_ASSUME_KERNEL
194
195
    case "${JVM_VERSION}" in
196
        (1.3.0*)
197
        # bad JVM
198
        export LD_ASSUME_KERNEL=2.2.5
199
        ;;
200
    esac
201
202
    echo_vars JVM_DIR JVM_VERSION
203
}
204
205
clean_profile()
206
{
207
# Clean up the XUL.mfasl unconditionally on launch, since we have the
208
# corner case of when firefox is running when upgraded. Need a
209
# better solution or upstream fix.
210
# Clean up the compatibility.ini as well, since we have a corner case of when
211
# some components register protocols. Need a better solution or upstream fix.
212
    if [ -f "${HOME}/.mozilla/firefox/profiles.ini" ]; then
213
        sed -e '/Path=/! d' -e 's,Path=/,/,' -e "s,Path=,${HOME}/.mozilla/firefox/," "${HOME}/.mozilla/firefox/profiles.ini" \
214
        | while read dir
215
            do
216
             if [ -f "${dir}/ver" ]; then
217
                     LOCAL_VER=`cat "${dir}/ver"`
218
             else
219
                     LOCAL_VER=0
220
             fi
221
             if `dpkg --compare-versions "$PKG_VER" gt "$LOCAL_VER"`; then
222
                rm -f "${dir}/XUL.mfasl"
223
             fi
224
             echo $PKG_VER > "${dir}/ver"
225
	    if [ "${dir}/compreg.dat" -ot "/usr/lib/mozilla-firefox/components.ini" ]; then
226
	        rm -f "${dir}/compatibility.ini"
227
	    fi
228
        done
229
    fi
230
}
231
232
# OK, here's where all the real work gets done
233
234
# parse command line
235
APPLICATION_ID=firefox
236
REMOTE=0
237
TRY_USE_EXIST=0
238
VERBOSE=
239
DEBUG=0
240
DEBUGGER=
241
first=1
242
opt=
243
for arg in "$@"; do
244
    if [ ${first} -eq 1 ]; then
245
        set dummy
246
        first=0
247
    fi
248
249
    case "${arg}" in
250
        -a | --display | -contentLocale | -UILocale | -remote | --debugger | -height | -width | -chrome | -P)
251
            prev=${arg}
252
            continue
253
        ;;
254
    esac
255
    
256
    if [ "${prev}" ]; then
257
        case "${prev}" in
258
            -a)
259
                APPLICATION_ID="${arg}"
260
                ;;
261
            --display)
262
                CMDLINE_DISPLAY="${arg}"
263
                set "$@" --display "${arg}"
264
                ;;
265
            -remote)
266
                REMOTE=1
267
                set "$@" -remote "${arg}"
268
                ;;
269
            --debugger)
270
                DEBUGGER="${arg}"
271
                DEBUG=1
272
                ;;
273
            *)
274
                set "$@" "${prev}" "${arg}"
275
                ;;
276
        esac
277
        prev=
278
    elif [ "${arg}" ]; then
279
        case "$arg" in
280
            --verbose | -V)
281
                VERBOSE=1
282
                ;;
283
            --display=*)
284
                CMDLINE_DISPLAY=`echo ${arg} | sed 's/^--display=//'`
285
                set "$@" "${arg}"
286
                ;;
287
            -g | -debug)
288
                DEBUG=1
289
                ;;
290
            -*)
291
                set "$@" "${arg}"
292
                ;;
293
            *)
294
                if [ -z "${opt}" ]; then
295
                    opt="${arg}"
296
                    # check to make sure that the url contains at least a :/ in it.
297
                    echo ${opt} | grep -e ':/' 2>/dev/null > /dev/null
298
                    RETURN_VAL=$?
299
                    if [ "${RETURN_VAL}" -eq 1 ]; then
300
                    # if it doesn't begin with a '/' and it exists when the pwd is
301
                    # prepended to it then append the full path
302
                        echo ${opt} | grep -e '^/' 2>/dev/null > /dev/null
303
                        if [ "$?" -ne "0" ] && [ -e "`pwd`/${opt}" ]; then
304
                            opt="`pwd`/${opt}"
305
                        fi
306
		        # Replace all spaces by %20 and prepend file:// if it is a valid file
307
			if [ -e "${opt}" ]; then
308
		          opt="file://`echo ${opt} | sed 's/ /%20/g'`"
309
			fi
310
                    fi
311
                    set "$@" "${opt}"
312
                else
313
                    set "$@" "${arg}"
314
                fi
315
                ;;
316
        esac
317
    fi
318
done
319
320
if [ $# -ne 0 ]; then
321
    shift
322
fi
323
OPTIONS="$@"
324
325
if [ ${DEBUG} -eq 1 ]; then
326
    if [ "${DEBUGGER}" = "" ]; then
327
        DEBUGGER=gdb
328
    fi
329
    TMPFILE=`mktemp -t firefox_argsXXXXXX`
330
    echo set args -a ${APPLICATION_ID} "$@" > ${TMPFILE}
331
    case "${DEBUGGER}" in
332
        gdb)
333
            run_verbose gdb "${MOZ_PROGRAM}" -x ${TMPFILE}
334
            ;;
335
        ddd)
336
            run_verbose ddd --debugger "gdb -x ${TMPFILE}" "${MOZ_PROGRAM}"
337
            ;;
338
        *)
339
            run_verbose ${DEBUGGER} "${MOZ_PROGRAM}" "$@"
340
            ;;
341
    esac
342
    rm ${TMPFILE}
343
    exit
344
fi
345
346
if [ $# -eq 1 ] && [ "$1" = "${opt}" ]; then
347
    TRY_USE_EXIST=1
348
fi
349
350
MOZ_PROGRAM="${MOZ_PROGRAM} -a ${APPLICATION_ID}"
351
352
echo_vars FIREFOX_DSP APPLICATION_ID CMDLINE_DISPLAY DISPLAY REMOTE \
353
          TRY_USE_EXIST OPTIONS DEBUG DEBUGGER
354
355
# set our JVM vars
356
# we don't want to do this (Ubuntu: #5636)
357
#set_jvm_vars
358
359
PING_STATUS=1
360
361
# No need to check if DISPLAY is not set, it will fail. But let's continue,
362
# so that firefox gives the display error message itself.
363
if [ "${DISPLAY}" ] || [ "${CMDLINE_DISPLAY}" ]; then
364
    if [ -z "${CMDLINE_DISPLAY}" ]; then
365
        CMDLINE_DISPLAY="${DISPLAY}"
366
    fi
367
    
368
    # check to see if there's an already running instance or not
369
    verbose "Running: ${MOZ_PROGRAM} -remote 'ping()'"
370
    DISPLAY="${CMDLINE_DISPLAY}" ${MOZ_PROGRAM} -remote 'ping()' \
371
        > /dev/null 2>&1
372
    PING_STATUS=$?
373
fi
374
375
echo_vars PING_STATUS
376
377
# Clean user profile if we are not trying to use the running instance and only
378
# if the check was successful (status 2)
379
if [ "${REMOTE}" -eq 0 ] && [ "${TRY_USE_EXIST}" -eq 0 ] && [ "${PING_STATUS}" -eq 2 ]; then
380
    verbose "Cleaning user profile"
381
    clean_profile
382
fi
383
384
# If there is no command line argument at all then try to open a new
385
# window in an already running instance.
386
if [ "${PING_STATUS}" -eq 0 ] && [ $# -eq 0 ]; then
387
    exec_verbose ${MOZ_PROGRAM} -remote "xfeDoCommand(openBrowser)"
388
fi
389
390
# If we are trying to use existing instance, and it exists, and we're not having
391
# a -remote command line argument, then open in window or tab accordingly.
392
if [ "${REMOTE}" -eq 0 ] && [ "${TRY_USE_EXIST}" -eq 1 ] && [ "${PING_STATUS}" -eq 0 ]; then
393
    # just pass it off if it looks like a url
394
    exec_verbose ${MOZ_PROGRAM} -remote "openURL(${opt})"
395
fi
396
397
if type "${FIREFOX_DSP}" > /dev/null 2>&1; then
398
    # echo "Using $FIREFOX_DSP."
399
    MOZ_PROGRAM="${FIREFOX_DSP} ${MOZ_PROGRAM}"
400
fi
401
402
exec_verbose ${MOZ_PROGRAM} "$@"
403
++ debian/rules
Line 0 Link Here
0
-- debian/mozilla-firefox.preinst
1
#!/usr/bin/make -f
2
# Sample debian/rules that uses debhelper.
3
# GNU copyright 1997 to 1999 by Joey Hess.
4
5
# Uncomment this to turn on verbose mode.
6
#export DH_VERBOSE=1
7
8
SHELL=/bin/bash # I use bashisms
9
10
# build phoenix
11
export MOZ_PHOENIX=1
12
export MOZ_FIREBIRD=1
13
export MOZ_FIREFOX=1
14
export BUILD_OFFICIAL=1 
15
export MOZILLA_OFFICIAL=1
16
#export MOZ_INTERNAL_LIBART_LGPL=1
17
18
PHOENIX := mozilla-firefox
19
PHOENIX_CVS := mozilla
20
# things to remove from upstream tarball cause we don't need them
21
UPSTREAM_REMOVE := debian mailnews themes/modern editor/ui \
22
	editor/composer/src lib/mac
23
DEBIAN_VERSION := $(shell dpkg-parsechangelog | sed -n 's/Version: *\(.*\)/\1/ p')
24
UPSTREAM_VERSION := $(shell echo $(DEBIAN_VERSION) | sed 's/-.*$$//')
25
LIB_DIR := /usr/lib/mozilla-firefox
26
27
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
28
	OPTFLAGS = -O0
29
else
30
	OPTFLAGS = -O2
31
32
ifeq ($(DEB_BUILD_ARCH),ia64)
33
	OPTFLAGS=-O
34
endif
35
36
ifeq ($(DEB_BUILD_ARCH),powerpc)
37
	OPTFLAGS=-O
38
endif
39
40
ifeq ($(DEB_BUILD_ARCH),arm)
41
	OPTFLAGS=-O
42
endif
43
44
endif
45
46
OPTFLAGS += -DDEBIAN
47
48
DEBUG_FLAG=
49
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
50
	DEBUG_FLAG = --enable-debug 
51
else
52
	DEBUG_FLAG = --disable-debug 
53
endif
54
55
ifeq ($(DEB_BUILD_ARCH),amd64)
56
CC=gcc-3.4
57
CXX=g++-3.4
58
export CC CXX
59
endif
60
61
62
CONFIGURE_OPTIONS = \
63
	--enable-default-toolkit=gtk2 \
64
	--with-default-mozilla-five-home=$(LIB_DIR) \
65
	--with-user-appdir=.mozilla \
66
	--with-system-mng=/usr \
67
	--with-system-png=/usr \
68
	--with-system-jpeg=/usr \
69
	--disable-mailnews \
70
	--disable-composer \
71
	--disable-ldap \
72
	--enable-postscript \
73
	--disable-installer \
74
	--disable-xprint \
75
	--enable-crypto \
76
	--disable-svg \
77
	--enable-mathml \
78
	--disable-tests \
79
	--disable-gtktest \
80
	--enable-xft \
81
	--enable-optimize="-pipe -w $(OPTFLAGS)" \
82
	--with-system-zlib=/usr \
83
	--with-gssapi=/usr \
84
	--without-system-nspr \
85
	--enable-xinerama \
86
	--enable-extensions=cookie,xml-rpc,xmlextras,pref,transformiix,universalchardet,webservices,inspector,gnomevfs,negotiateauth,typeaheadfind \
87
	--disable-pedantic \
88
	--disable-long-long-warning \
89
	--enable-single-profile \
90
	--disable-profilesharing \
91
	--enable-gnomevfs \
92
	--enable-pango \
93
	--disable-strip-libs \
94
	$(DEBUG_FLAG)
95
96
ifneq ($(DEB_BUILD_ARCH),mips)
97
ifneq ($(DEB_BUILD_ARCH),mipsel)
98
#	CONFIGURE_OPTIONS += --enable-static --disable-shared
99
endif
100
endif
101
102
configure: configure-stamp
103
configure-stamp:
104
	dh_testdir
105
106
	#(uudecode debian/firefox-gnomestripe-0.1.tar.gz.uu && tar xzf firefox-gnomestripe-0.1.tar.gz)
107
	
108
	./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info $(CONFIGURE_OPTIONS)
109
110
	touch configure-stamp
111
112
build: configure-stamp build-stamp
113
build-stamp:
114
	dh_testdir
115
116
	$(MAKE)
117
118
	(cd debian && uudecode mozilla-firefox.png.uu \
119
		&& uudecode debsearch.gif.uu)
120
	touch build-stamp
121
122
clean: 
123
	dh_testdir
124
	dh_testroot
125
	rm -f build-stamp configure-stamp debian/stamp-* \
126
		debian/mozilla-firefox.png debian/debsearch.gif \
127
		firefox-gnomestripe-0.1.tar.gz
128
129
	-$(MAKE) distclean
130
131
	rm -fr  browser/themes/gnomestripe
132
	rm -f toolkit/xre/nsWindowCreator.cpp toolkit/xre/showOSAlert.cpp toolkit/xre/nsSigHandlers.cpp extensions/pref/system-pref/src/gconf/nsSystemPrefFactory.cpp
133
	dh_clean
134
135
install: build
136
	dh_testdir
137
	dh_testroot
138
	dh_clean -k
139
	dh_installdirs
140
141
	$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
142
	chmod 755 debian/mozilla-firefox-xremote-client
143
# Remove execute on javascript files
144
	find debian/tmp -name '*.so' | xargs chmod -x 
145
	chmod -x debian/tmp/$(LIB_DIR)/components/*.js
146
147
# Exclude inspector for mozilla-firefox
148
	dh_install -pmozilla-firefox '-X*inspector*' '-X*gnome*'
149
	dh_install -pmozilla-firefox-dom-inspector
150
	dh_install -pmozilla-firefox-gnome-support
151
	dh_install -pmozilla-firefox-dev
152
153
#Install helpers
154
	install -m 755 debian/mozilla-firefox-runner \
155
		debian/mozilla-firefox/usr/lib/mozilla-firefox/firefox
156
	install -m 755 debian/update-mozilla-firefox-chrome \
157
		debian/mozilla-firefox/usr/sbin/update-mozilla-firefox-chrome
158
159
# Filter installed chrome
160
	egrep -v 'inspector\.jar|embed-sample\.jar|classic\.jar' \
161
		debian/tmp/$(LIB_DIR)/chrome/installed-chrome.txt \
162
		> debian/mozilla-firefox/$(LIB_DIR)/chrome/installed-chrome.txt
163
164
# Remove installed-extensions.txt
165
	rm -rf 'debian/mozilla-firefox/$(LIB_DIR)/defaults/profile/extensions/installed-extensions.txt'
166
167
# Move classic theme's install.rdf to final destination
168
	mv debian/mozilla-firefox/$(LIB_DIR)/defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf debian/mozilla-firefox/$(LIB_DIR)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/
169
# Remove unneeded extensions directory
170
	rm -rf debian/mozilla-firefox/$(LIB_DIR)/defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
171
172
# Remove unneeded configs
173
	rm -f debian/mozilla-firefox/$(LIB_DIR)/defaults/pref/editor.js \
174
		debian/mozilla-firefox/${LIB_DIR}/defaults/pref/mailnews.js \
175
		debian/mozilla-firefox/${LIB_DIR}/defaults/pref/inspector.js \
176
		debian/mozilla-firefox/${LIB_DIR}/defaults/pref/firefox-l10n.js
177
178
# Add Ubuntu package version to preferences
179
	echo // Debian package version \
180
		> debian/mozilla-firefox/${LIB_DIR}/defaults/pref/vendor.js
181
	echo "pref(\"general.useragent.vendorComment\",\"Ubuntu package $(UPSTREAM_VERSION)\");" \
182
		>> debian/mozilla-firefox/${LIB_DIR}/defaults/pref/vendor.js
183
184
# Move profiles into /etc
185
	mv \
186
	 debian/mozilla-firefox/$(LIB_DIR)/defaults/profile \
187
	 debian/mozilla-firefox/etc/mozilla-firefox/
188
189
# Ensure that we open links in new windows by default
190
	echo // Open links in new windows by default \
191
		>> debian/mozilla-firefox/${LIB_DIR}/defaults/pref/vendor.js
192
	echo "pref(\"browser.link.open_external\", 2);" \
193
		>> debian/mozilla-firefox/${LIB_DIR}/defaults/pref/vendor.js
194
195
# Enable smooth scrolling, and use system colours
196
	echo "pref(\"browser.display.use_system_colors\",   true);"\
197
		>> debian/mozilla-firefox/${LIB_DIR}/defaults/pref/vendor.js
198
	echo "pref(\"general.smoothScroll\",                true);" \
199
	 	>> debian/mozilla-firefox/${LIB_DIR}/defaults/pref/vendor.js
200
	
201
	echo "$(UPSTREAM_VERSION)" > debian/mozilla-firefox/${LIB_DIR}/pkg-ver
202
203
#Move pretty icons into place
204
	cp -f debian/mozilla-firefox.xpm \
205
		debian/mozilla-firefox/$(LIB_DIR)/icons/default.xpm
206
	cp -f debian/mozilla-firefox.xpm \
207
		debian/mozilla-firefox/$(LIB_DIR)/icons/mozicon50.xpm
208
	cp -f debian/mozilla-firefox-small.xpm \
209
		debian/mozilla-firefox/$(LIB_DIR)/icons/mozicon16.xpm
210
	cp -f debian/mozilla-firefox.xpm \
211
		debian/mozilla-firefox/$(LIB_DIR)/chrome/icons/default/default.xpm
212
213
# Build architecture-independent files here.
214
binary-indep: build install
215
216
217
# Build architecture-dependent files here.
218
binary-arch: build install
219
#	dh_testversion
220
	dh_testdir
221
	dh_testroot
222
	dh_installdebconf	
223
	dh_installdocs
224
	dh_installexamples
225
	dh_installmenu
226
#	dh_installemacsen
227
#	dh_installpam
228
#	dh_installinit
229
#	dh_installcron
230
	dh_installman
231
	dh_installinfo
232
	dh_installmime
233
#	dh_undocumented
234
	dh_installchangelogs
235
	dh_link
236
	dh_strip
237
	dh_compress
238
	dh_fixperms
239
#	dh_makeshlibs
240
	dh_installdeb
241
#	dh_perl
242
	dh_shlibdeps
243
	dh_gencontrol
244
	dh_md5sums
245
	dh_builddeb
246
247
source-tarball-from-cvs: clean
248
	cp -af ../$(PHOENIX_CVS) ../$(PHOENIX)-$(UPSTREAM_VERSION).orig
249
	cd ../$(PHOENIX)-$(UPSTREAM_VERSION).orig ; rm -rf mailnews debian
250
	cd ../$(PHOENIX)-$(UPSTREAM_VERSION).orig ; find . -depth \( -name CVS \
251
		 -or -name .cvsignore \) -exec rm -rf '{}' \;
252
	cd .. ; tar --remove-files -cf $(PHOENIX)_$(UPSTREAM_VERSION).orig.tar \
253
		$(PHOENIX)-$(UPSTREAM_VERSION).orig 
254
	rm -rf ../$(PHOENIX)-$(UPSTREAM_VERSION).orig
255
	gzip -9 ../$(PHOENIX)_$(UPSTREAM_VERSION).orig.tar
256
257
binary: binary-indep binary-arch
258
.PHONY: build clean binary-indep binary-arch binary install configure source-tarball-from-cvs
259
++ debian/mozilla-firefox.preinst
Line 0 Link Here
0
-- debian/changelog
1
#!/bin/sh -e
2
3
LIBDIR=/usr/lib/mozilla-firefox
4
VARDIR=/var/lib/mozilla-firefox
5
6
# Remove old link
7
rm -fr ${LIBDIR}/defaults/pref
8
9
if [ "$1" = "upgrade" ]; then
10
    if [ -d "/usr/lib/mozilla-firebird/defaults/pref" ]; then
11
      rm -rf /usr/lib/mozilla-firebird/defaults/pref
12
    fi
13
14
    # Remove old alternative to www-browser that version < 0.6.1-1 installed
15
    if dpkg --compare-versions "$2" lt 0.6.1-1; then
16
      update-alternatives --remove www-browser /usr/bin/MozillaFirebird || true
17
    fi
18
19
    # Remove old conf files 
20
    if dpkg --compare-versions "$2" lt 0.9.1-3; then
21
      rm -f /etc/mozilla-firefox/pref/all.js
22
      rm -f /etc/mozilla-firefox/pref/security-prefs.js
23
      rm -f /etc/mozilla-firefox/pref/unix.js
24
      rm -f /etc/mozilla-firefox/pref/xpinstall.js
25
      rm -f /etc/mozilla-firefox/pref/non-shared.txt
26
    fi
27
28
    if dpkg --compare-versions "$2" lt 0.10.1+1.0PR-5 || 
29
            dpkg --compare-versions "$2" lt 0.99+1.0PR.1+revertedto0.9.3-0ubuntu3; then
30
      if [ -f /etc/mozilla-firefox/profile/US/bookmarks.html ]; then
31
        mv /etc/mozilla-firefox/profile/US/bookmarks.html /etc/mozilla-firefox/profile/bookmarks.html
32
      fi
33
      [ -d /etc/mozilla-firefox/profile/US ] && rmdir --ignore-fail-on-non-empty /etc/mozilla-firefox/profile/US
34
    fi
35
36
    if dpkg --compare-versions "$2" lt 1.0-1; then
37
      rm -f /etc/mozilla-firefox/pref/firefox-l10n.js
38
      rm -f /etc/mozilla-firefox/pref/vendor.js
39
40
41
      # Remove old installed-chrome.txt
42
      rm -f ${VARDIR}/chrome/installed-chrome.txt
43
    fi
44
45
    if dpkg --compare-versions "$2" lt 1.0-3; then
46
      for f in `find ${LIBDIR}/extensions/ -maxdepth 1 -name '{*}' -type l`; do
47
        if [ "`readlink -f $f`" = "${LIBDIR}/defaults/profile/extensions/`basename $f`" ]; then
48
            rm -f $f
49
        fi
50
      done
51
      if [ -e ${LIBDIR}/defaults/profile/extensions/installed-extensions.txt ] || [ -L ${LIBDIR}/defaults/profile/extensions/installed-extensions.txt ]; then
52
        rm -f ${LIBDIR}/defaults/profile/extensions/installed-extensions.txt
53
      fi
54
    fi
55
56
    # Move of default profile into /etc
57
    if dpkg --compare-versions "$2" lt 1.0+dfsg.1-1; then
58
        rm -rf /usr/lib/mozilla-firefox/defaults/profile
59
    fi
60
fi
61
62
#DEBHELPER#
63
++ debian/changelog
Line 0 Link Here
0
-- configure.in
1
mozilla-firefox (1.0.2-0ubuntu5) hoary; urgency=low
2
3
  * Ensure default homepage is correct (US only) (Ubuntu: #8685)
4
  * Low risk fix for crasher caused by dragging images (Moz: #288006)
5
  * Trivial fix to make sidebar bookamrks work properly again (Moz: #287459)
6
    (The combination of the two above bugs is to give us the important bits of 
7
    Firefox 1.0.3)
8
  * Fix defaults/pref harder
9
10
 -- Thom May <thom@ubuntu.com>  Tue,  5 Apr 2005 18:20:21 +0100
11
12
mozilla-firefox (1.0.2-0ubuntu4) hoary; urgency=low
13
14
  * Always delete /usr/lib/mozilla-firebird/defaults/pref in preinst
15
  * Apply patch from moz: 288688; Ubuntu: 8611
16
    JS "lambda" replace exposes malloc heap space after end of JS string
17
18
 -- Thom May <thom@ubuntu.com>  Mon,  4 Apr 2005 13:49:06 +0100
19
20
mozilla-firefox (1.0.2-0ubuntu3) hoary; urgency=low
21
22
  * Only strip our libs once, for debugging porpoises.
23
24
 -- Thom May <thom@ubuntu.com>  Fri,  1 Apr 2005 13:07:46 +0100
25
26
mozilla-firefox (1.0.2-0ubuntu2) hoary; urgency=low
27
28
  * Fix gtk2 themer to correctly set foreground and background
29
  * Ensure that we correctly delete XUL.mfasl when we change major versions
30
31
 -- Thom May <thom@ubuntu.com>  Mon, 28 Mar 2005 19:22:02 +0100
32
33
mozilla-firefox (1.0.2-0ubuntu1) hoary; urgency=low
34
35
  * New upstream release 
36
  * Ensure that AddLangGroup is renamed to NS_AddLangGroup everywhere 
37
    (Ubuntu: #8103)
38
39
 -- Thom May <thom@ubuntu.com>  Wed, 23 Mar 2005 22:07:04 +0000
40
41
mozilla-firefox (1.0.1-2ubuntu2) hoary; urgency=low
42
43
  * Enable xinerama (Ubuntu: #6414)
44
  * Fix warning to talk about Firefox rather than mozilla (Ubuntu: #6182)
45
  * Open in new window by default (Ubuntu: #7653)
46
  * Fixes for non Latin1 printing (Ubuntu: #6233)
47
  * Fix for Extension-Manager crashing with broken xml
48
  * Combination of fixes to hopefully get #7711; certainly I can't reproduce
49
    the problem now. 
50
51
 -- Thom May <thom@ubuntu.com>  Tue, 15 Mar 2005 14:27:15 +0000
52
53
mozilla-firefox (1.0.1-2ubuntu1) hoary; urgency=low
54
55
  * Resynchronise with Debian.
56
    Security fixes: CAN-2004-1156 - Window Injection Vulnerability
57
                    CAN-2005-0232 - Fireflashing
58
                    CAN-2005-0231 - Firetabbing
59
  * Add patch to render hebrew RtL rather than LtR
60
  * Add patch to make ',' on the numpad work correctly (Ubuntu: #6301)
61
62
 -- Thom May <thom@ubuntu.com>  Mon, 07 Mar 2005 12:54:09 +0000
63
64
mozilla-firefox (1.0.1-2) unstable; urgency=high
65
66
  * Changes by Mike Hommey:
67
  * Urgency: high due to RC bug fix.
68
  * debian/update-mozilla-firefox-chrome: Re-initialize Extensions.rdf
69
    inside the script instead of relying on mozilla-firefox's default
70
    behaviour, which just fails when defaults/profile/extensions/ \
71
    Extensions.rdf doesn't exist (and it seems some people like to remove
72
    files in /etc). (Closes: #294175)
73
  
74
  * Changes by Eric Dorland:
75
  * debian/mozilla-firefox.menu: Capitalize "browsers". Thanks Gerfried
76
    Fuchs.
77
  * debian/mozilla-firefox-runner: Fix from Marc Horowitz to fix sound
78
    device detection. (Closes: #297088)
79
  * toolkit/content/widgets/tabbrowser.xml: Apply patch from bz#283063, to
80
    fix a memory leak when closing tabs. (Closes: #296749)
81
  * xpfe/global/resources/content/bindings/browser.xml,
82
    xpfe/global/resources/content/bindings/tabbrowser.xml,
83
    toolkit/content/widgets/browser.xml,
84
    toolkit/content/widgets/tabbrowser.xml: Apply patches from bz#131456
85
    to fix various tab related memory leaks. (Closes: #280586)
86
  * netwerk/protocol/http/src/nsHttpHandler.cpp: Patch from bz#265536 to
87
    differentiate between AMD64 and i386. (Closes: #282592)
88
89
 -- Eric Dorland <eric@debian.org>  Sat,  5 Mar 2005 18:46:09 -0500
90
91
mozilla-firefox (1.0.1-1) unstable; urgency=high
92
93
  * New upstream release. (Closes: #296851)
94
    - This release fixes the Secunia window injection bug, 
95
      CAN-2004-1156. (Closes: #293664)
96
  
97
  * Changes by Mike Hommey: 
98
  * debian/rules: Some clean-up.
99
  * debian/control: Changed my maintainer address.
100
  * debian/README.Debian: Add a note about automatic updates for
101
    extensions. (Closes: #296761)
102
103
  * Changes by Eric Dorland:
104
  * browser/app/profile/firefox.js: Remove disable IDN pref, it's the
105
    default now anyway.
106
107
 -- Eric Dorland <eric@debian.org>  Tue,  1 Mar 2005 02:03:48 -0500
108
109
mozilla-firefox (1.0+dfsg.1-6ubuntu1) hoary; urgency=low
110
111
  * Resynchronise with Debian.
112
  * Stop disabling IDN.
113
  * Update Pango patches to fix text area problems (Closes: Ubuntu #6007)
114
  * Drop alternatives priority to 84, so that people who install ephy get it.
115
  * Revert b.m.o 155293 (Closes: Ubuntu #5992)
116
  * Change from "Firefox" to "Firefox Web Browser" (Closes: Ubuntu #6380)
117
118
 -- Thom May <thom@ubuntu.com>  Fri, 11 Feb 2005 12:49:57 +0000
119
120
mozilla-firefox (1.0+dfsg.1-6) unstable; urgency=high
121
122
  * The "And I thought IE had security bugs!" release.
123
  * toolkit/content/widgets/tabbrowser.xml,
124
    xpfe/global/resources/content/bindings/tabbrowser.xml: Fix
125
    "Firetabbing" vulnerability from bugzilla#280056, fixes
126
    CAN-2005-0231. (Closes: #294415)
127
  * modules/plugin/base/src/nsPluginHostImpl.cpp: Fix "Fireflashing"
128
    vulnerability from bugzilla#280664, fixes CAN-2005-0232. (Also Closes:
129
    #294415)
130
  * build/unix/run-mozilla.sh: Patch from Javier Fernández-Sanguino Peña
131
    to fix insecure temp file usage in run-mozilla.sh. (Closes: #294127)
132
  * netwerk/base/src/nsStandardURL.cpp, netwerk/base/src/nsStandardURL.h:
133
    Patch from bugzilla#261934 to make the network.enableIDN preference
134
    work and again.
135
  * browser/app/profile/firefox.js: Disable IDN by default. This doesn't
136
    close #293975, but drops its severity. 
137
  * debian/README.Debian: Add warning and describe how to enable IDN.
138
139
 -- Eric Dorland <eric@debian.org>  Wed,  9 Feb 2005 22:56:17 -0500
140
141
mozilla-firefox (1.0+dfsg.1-5) unstable; urgency=low
142
143
  * debian/mozilla-firefox.desktop: Don't translate "Mozilla Firefox" into
144
    French.
145
  * browser/app/profile/firefox.js: Set mozilla.widget.raise-on-setfocus
146
    to false to prevent unecessary window raising. (Closes: #292049)
147
  * debian/rules: Don't compile statically on mips and mipsel, since it's
148
    broken for now.
149
150
 -- Eric Dorland <eric@debian.org>  Sun,  6 Feb 2005 15:02:36 -0500
151
152
mozilla-firefox (1.0+dfsg.1-4) unstable; urgency=low
153
154
  * debian/mozilla-firefox.desktop: Add French translations from Jerome
155
    Warnier. I will accept more, but closing this bug. (Closes: #292506)
156
  * debian/README.Debian: Update the Emacs keybindings instructions.
157
    (Closes: #291691)
158
  * debian/mozilla-firefox.1: 
159
    - Remove -splash from the manpage, it has never worked. (Closes: 
160
      #287088)
161
    - Add units to -height and -width description. (Closes: #285142)
162
163
 -- Eric Dorland <eric@debian.org>  Wed,  2 Feb 2005 01:42:53 -0500
164
165
mozilla-firefox (1.0+dfsg.1-3) experimental; urgency=low
166
167
  * debian/mozilla-firefox.desktop: Add %u to the exec line so that apps
168
    know it can handle URLs. (Closes: #290132)
169
  * debian/README.Debian: 
170
    - Improve button reversal instructions. Thanks Christian Mayrhuber
171
    - Fix reference to ~/.firefox. 
172
  * debian/rules: Enable static building. This will build firefox as one
173
    large binary (mostly) and should speed a few things up, especially
174
    program load time. I'd like to hear about any speedup (or slow down)
175
    you exprience. Porters, please build this for your arch to make sure
176
    this doesn't break anything.
177
178
 -- Eric Dorland <eric@debian.org>  Thu, 20 Jan 2005 01:40:34 -0500
179
180
mozilla-firefox (1.0+dfsg.1-2ubuntu5) hoary; urgency=low
181
182
  * Fix build deps.
183
184
 -- Thom May <thom@ubuntu.com>  Fri, 28 Jan 2005 11:14:40 +0000
185
186
mozilla-firefox (1.0+dfsg.1-2ubuntu4) hoary; urgency=low
187
188
  * Fix alternatives priority to 85 (Ubuntu #4801)
189
  * Use startup notification (Ubuntu: #4984)
190
  * Don't set LD_ASSUME_KERNEL for old java VMs, they won't run on Ubuntu
191
    anyway (Ubuntu: #5636)
192
  * Don't blow away users profile every run (Ubuntu: #3615)
193
  * Download to Desktop (Ubuntu: #1358)
194
  * Enable gnomestripe theme 
195
196
 -- Thom May <thom@ubuntu.com>  Mon, 24 Jan 2005 15:29:18 +0000
197
198
mozilla-firefox (1.0+dfsg.1-2ubuntu3) hoary; urgency=low
199
200
  * should fix the typeahead in epiphany-browser.
201
  * fixed the typeahead conflict with the find extension.
202
  * debian/rules:
203
    - added typeaheadfind to the extensions.
204
205
 -- Sebastien Bacher <seb128@canonical.com>  Sun, 23 Jan 2005 15:37:40 +0100
206
207
mozilla-firefox (1.0+dfsg.1-2ubuntu2) hoary; urgency=low
208
209
  * The "nail that gets hammered down" release
210
  * Fixes for epiphany and other embedded users:
211
    mozilla: #256988, #277587, #97580, #270243, #276482, #238052
212
    gnome: #157435
213
  * Allow search engines to be added to a users profile (Ubuntu: #1855)
214
  * Handle warty's entertaining version number in preinst (Ubuntu: #3949)
215
  * "Bang, bang, bang"
216
217
 -- Thom May <thom@planetarytramp.net>  Thu, 20 Jan 2005 11:30:24 +0000
218
219
mozilla-firefox (1.0+dfsg.1-2ubuntu1) hoary; urgency=low
220
221
  * Resynchronise with Debian.
222
223
 -- Scott James Remnant <scott@canonical.com>  Tue, 11 Jan 2005 12:53:01 +0000
224
225
mozilla-firefox (1.0+dfsg.1-2) unstable; urgency=medium
226
227
  * debian/mozilla-firefox-gnome-support.postrm,
228
    debian/mozilla-firefox-dom-inspector.postrm: Don't die if
229
    update-mozilla-firefox-chrome dies. (Closes: #287355)
230
231
 -- Eric Dorland <eric@debian.org>  Sun,  9 Jan 2005 23:51:10 -0500
232
233
mozilla-firefox (1.0+dfsg.1-1) unstable; urgency=low
234
235
  * Not a new upstream release.
236
  * other-licenses/branding/firefox, other-licenses/7zstub/firefox: Remove
237
    these from the .orig.tar.gz, since they are not DFSG-free. We're not
238
    using the files anyway, so out they go. (Not sure the 7zstub stuff is
239
    non-free, but it's Windows only so no harm)
240
  * debian/rules: 
241
    - Remove explicit low-optimization on alpha, since Falk
242
      Hueffner claims it works.
243
    - Move entire defaults/profile directory into /etc/mozilla-firefox, 
244
      rather than just the bookmarks.html. (Closes: #285538)
245
  * debian/mozilla-firefox.links: Link entire defaults/profile now.
246
  * debian/mozilla-firefox.preinst: Add upgrade code to remove old
247
    defaults/profile to make way for new symlink.
248
  * debian/mozilla-firefox.dirs: Just create etc/mozilla-firefox.
249
250
 -- Eric Dorland <eric@debian.org>  Sun, 19 Dec 2004 01:31:44 -0500
251
252
mozilla-firefox (1.0-5) unstable; urgency=medium
253
254
  * Changes by Mike Hommey:
255
  * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Make the
256
    extensions upgrade work again. (Closes: #282143)
257
  * debian/rules: Better DEB_BUILD_OPTIONS handling, better debugging
258
    build (DEB_BUILD_OPTIONS="nostrip debug")
259
  * toolkit/mozapps/extensions/src/nsExtensionManager.js.in,
260
    toolkit/mozapps/extensions/content/extensions.js: Allow users to
261
    disable globally installed extensions.
262
263
  * Changes by Eric Dorland:
264
  * debian/rules: Remove explicit low-optimization on sparc. Apparently
265
    there was an issue for a number of arches that required lower
266
    optimization settings, but it is now resolved. So porters, please
267
    check -O2 on arm, alpha, powerpc and ia64 and let me know if it's
268
    safe. Thanks David S. Miller. (Closes: #284533)
269
270
 -- Eric Dorland <eric@debian.org>  Tue,  7 Dec 2004 01:06:48 -0500
271
272
mozilla-firefox (1.0-4) unstable; urgency=medium
273
274
  * debian/control: Make mozilla-firefox-gnome-support and xprt-xprintorg
275
    Suggests, no Recommends after a look at policy. (Closes: #282432)
276
  * debian/README.Debian: 
277
    - Refer to .mozilla/firefox, not .firefox.
278
    - Explain how to reenable emacs style keybindings. (Closes: #282321)
279
280
 -- Eric Dorland <eric@debian.org>  Sat, 27 Nov 2004 20:40:10 -0500
281
282
mozilla-firefox (1.0-3) unstable; urgency=low
283
284
  * Changes by Mike Hommey
285
  * The "becoming more and more an iceweasel" release.
286
  * debian/firefox.js:
287
    + Enable firefox's internal locale autodetection.
288
    + Disable default browser question at startup. (Closes: #280752)
289
  * debian/mozilla-firefox-runner: Removed our locale autodetection.
290
    That means now locales installed in user profiles are automatically
291
    used, and that there is no need for /var/lib/mozilla-firefox/locales.d
292
    anymore.
293
  * debian/mozilla-firefox.dirs: Removed creation of
294
    /var/lib/mozilla-firefox/locales.d.
295
  * debian/rules: Removed creation of the locale file in
296
    /var/lib/mozilla-firefox/locales.d.
297
  * debian/presubj: Put some more recent information.
298
  * htmlparser/src/nsParser.cpp: Applied patch from bz#57717 so that empty
299
    html files don't get <html><body></body></html> when viewing source.
300
  * browser/base/content/aboutDialog.css: increase the User Agent element
301
    height as in bz#238137 (but up to MacOSX's height) to show the full User
302
    Agent string.
303
  * xpcom/io/nsAppDirectoryServiceDefs.h,
304
    xpcom/io/nsAppFileLocationProvider.cpp,
305
    xpfe/components/search/src/nsInternetSearchService.cpp: Applied patch from
306
    bz#123315 so that Internet search services in user profiles are supported.
307
    (Closes: #219053)
308
  * debian/mozilla-firefox-runner:
309
    + Remove compatibility.ini only if it is older than
310
      /usr/lib/mozilla-firefox/components.ini. That way, we only rebuild it
311
      after an update-mozilla-firefox-chrome.
312
    + Detect if we're being run through sudo without the -H option, in which
313
      case we force setting of $HOME. (Closes: #218156)
314
  * browser/app/profile/firefox.js: Sync'ed with debian/firefox.js.
315
  * toolkit/mozapps/extensions/src/nsExtensionManager.js.in:
316
    + Removed some error messages that get there because firefox is trying to
317
      write in the /usr/lib/mozilla-firefox directory as a user. They are
318
      useless and lead users to think something is going wrong while it's the
319
      (stupid but) normal way firefox works.
320
    + Avoid creation of directories when attempting to read files, that
321
      throwed uncaught exceptions breaking some stuff in several different
322
      ways when extensions don't follow the new scheme for extensions.
323
    + Avoid copying stuff from
324
      /usr/lib/mozilla-firefox/defaults/profile/extensions/ to
325
      /usr/lib/mozilla-firefox/extensions/, that's the *very* old way of
326
      installing extensions, which, since the old scheme has been thrown away,
327
      won't work anyway, if any extension provides files out there.
328
    + CheckForMismatches: Avoid to disable already disabled global extensions,
329
      and don't propose to upgrade the locked extensions. That fixes a
330
      never-ending loop occuring when running firefox for the first time in a
331
      user account, while some global extensions are expired.
332
      (Closes: #278722, #281537)
333
  * debian/mozilla-firefox.prerm, debian/mozilla-firefox.preinst: Moved
334
    removal of links to /usr/lib/mozilla-firefox/defaults/profile/extensions/
335
    sitting in /usr/lib/mozilla-firefox/extensions/, if any remaining, from
336
    prerm to preinst. We remove them once and for all, they won't be created
337
    by us anymore.
338
  * debian/update-mozilla-firefox-chrome:
339
    + Removed support for extensions in
340
      /usr/lib/mozilla-firefox/defaults/profile/extensions/.
341
    + Removed some clean-up that had been introduced to help the Extensions
342
      Manager not to die, and which, actually, did not work out quite so well.
343
      Anyways, with the changes this time, the EM is supposed to support much
344
      more problems than ever before (as usual ;) ) so we don't need that
345
      anymore.
346
    + Avoid stupid mv error messages when firefox-bin -register fails (which
347
      is not supposed to happen, but you're never too careful)
348
  * debian/update-mozilla-firefox-chrome, debian/mozilla-firefox.preinst:
349
    Move removal of some very old stuff to preinst, to do it once and for all
350
    instead of doing it every time we run update-mozilla-firefox-chrome.
351
  * netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp: Applied patch from
352
    bz#124561 to get a prompt for username/password in case anonymous login
353
    fails.
354
  * debian/mozilla-firefox-runner:
355
    + Added check for more arguments so that the url in the command line get
356
      detected more accurately.
357
    + When a file name is given on the command line, prepend "file://" and
358
      change spaces into %20. (Closes: #281800)
359
360
  * Changes by Eric Dorland
361
  * debian/mozilla-firefox.prerm: Patch from Philipp Weis to fix order of
362
    find arguments. (Closes: #280852)
363
  * debian/mozilla-firefox.desktop: Support new mime type handler in Gnome
364
    2.8. (Closes: #281274) (MH: I added some more myme-types)
365
  * debian/mozilla-firefox.postinst: Run update-desktop-database if it
366
    exists.
367
  * widget/src/gtk/nsWidget.cpp: We don't use gtk anymore, might as well
368
    revert these patches. Thanks Stephane Despret. 
369
370
 -- Eric Dorland <eric@debian.org>  Thu, 18 Nov 2004 22:16:28 -0500
371
372
mozilla-firefox (1.0-2ubuntu3) hoary; urgency=low
373
374
  * browser/components/prefwindow/content/pref-advanced.xul: Revert Ubuntu
375
    changes. Debian now disables application updates and locks packaged
376
    extensions, so commenting out the whole software update expander is
377
    unnecessary; also, our changes made the file invalid XML (closes: Ubuntu
378
    #3761).
379
380
 -- Colin Watson <cjwatson@canonical.com>  Tue, 16 Nov 2004 19:27:55 +0000
381
382
mozilla-firefox (1.0-2ubuntu2) hoary; urgency=low
383
384
  * Resolve merge conflicts
385
    - debian/mozilla-firefox-runner: Debian commented out Xprint code, where
386
      we deleted it.  Revert to their version
387
    - browser/app/profile/firefox.js: Debian set autoUpdateEnabled to
388
      "false" rather than commenting out a bunch of settings.  Revert to their
389
      version
390
    - browser/app/profile/firefox.js: Update branded version number to 1.0
391
    - Skip inapplicable changes
392
      - browser/app/profile/firefox.js: throbber changed
393
    - Manually apply some changes which weren't automatically merged due to
394
      EOL-at-EOF conditions
395
      - debian/mozilla-firefox.NEWS
396
      - debian/mozilla-firefox.dirs
397
    - Revert debian/rules changes, merge Debian changes and reapply (creating
398
      a trivial conflict rather than a big nasty one)
399
400
 -- Matt Zimmerman <mdz@canonical.com>  Sun, 14 Nov 2004 10:52:01 -0800
401
402
mozilla-firefox (1.0-2ubuntu1) hoary; urgency=low
403
404
  * Resynchronise with Debian.
405
406
 -- Scott James Remnant <scott@canonical.com>  Sat, 13 Nov 2004 21:38:27 +0000
407
408
mozilla-firefox (1.0-2) unstable; urgency=low
409
410
  * Changes by Mike Hommey
411
  * The "don't do too much on the same day, it's bad for health" release.
412
  * debian/firefox.js: Re-activated the extensions update service, and
413
    removed the update url.
414
  * browser/app/profile/firefox.js: Sync'ed with debian/firefox.js.
415
  * debian/mozilla-firefox-dom-inspector.preinst: Removed old inspector.js
416
    file.
417
  * toolkit/mozapps/extensions/src/nsExtensionManager.js.in,
418
    toolkit/mozapps/extensions/content/extensions.js: Disabled possibility
419
    to update locked extensions and themes. Locked extensions being the
420
    ones installed by the packaging system, they should be updated through
421
    that.
422
  * toolkit/mozapps/update/src/nsUpdateService.js.in: Disabled application
423
    update functionnality. Firefox should be updated through the packaging
424
    system.
425
  * browser/components/prefwindow/content/pref-advanced.xul: Removed the
426
    preferences panel item to activate application update, since it is
427
    totally disabled.
428
  * debian/mozilla-firefox-runner: Remove compatibility.ini instead of
429
    compreg.dat. (Eric: This will cause a rebuild of the compreg.dat)
430
  
431
  * Changes by Eric Dorland:
432
  * debian/mozilla-firefox.NEWS: Fix typos.
433
  * README.Debian: 
434
    - Add note about application update being completely disabled.
435
    - Fix path to XUL.mfsal
436
437
 -- Eric Dorland <eric@debian.org>  Wed, 10 Nov 2004 22:56:22 -0500
438
439
mozilla-firefox (1.0-1) unstable; urgency=medium
440
441
  * New upstream release (Closes: #280449)
442
  
443
  * Changes by Mike Hommey:
444
  * netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp: Apply new patch
445
    #164795 from bz#266835 + some tweaks as previously. This might lead to
446
    encoding problems with the password, but it is supposed to be ASCII
447
    anyway.
448
  * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Reworked the
449
    previous patches so that the Extensions Manager shows extensions that
450
    have been disabled due to version mismatch, and added a workaround so
451
    that components registration works correctly.
452
  * debian/update-mozilla-firefox-chrome: Removed part that is useless due
453
    to last changes in the Extensions Manager.
454
  * Make the inspector a real extension again:
455
    - debian/inspector/00dom-inspector: File for
456
      /var/lib/mozilla-firefox/extensions.d.
457
    - debian/inspector/Uninstall: Uninstall file needed in extension 
458
      directory.
459
    - debian/inspector/install.rdf: install.rdf taken from older versions, 
460
      and adapted to newer versions, adding registered chrome.
461
    - debian/mozilla-firefox-dom-inspector.dirs: Removed. Everything will 
462
      be created by dh_install.
463
    - debian/mozilla-firefox-dom-inspector.install: install
464
      debian/inspector.rdf and most inspector files in the right place in
465
      /usr/lib/mozilla-firefox/extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}
466
      and /var/lib/mozilla-firefox
467
  * Make the classic theme a real extension, even though it's still in 
468
    the main package:
469
    - debian/theme/00classic: File for 
470
      /var/lib/mozilla-firefox/extensions.d.
471
    - debian/theme/Uninstall: Uninstall file needed in extension 
472
      directory.
473
    - debian/mozilla-firefox.install: Install all files in the right 
474
      place in
475
      /usr/lib/mozilla-firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
476
    - debian/mozilla-firefox.dirs: Removed creation of
477
      /usr/lib/mozilla-firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome, 
478
      it will be done by dh_install.
479
    - browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in:
480
      Added chrome to be registered.
481
  * Removed support for /var/lib/mozilla-firefox/chrome.d:
482
    - debian/mozilla-firefox.dirs: Removed creation of the directory.
483
    - debian/rules: Removed creation of files there, and put the
484
      installed-chrome.txt, excluding inspector and classic theme stuff,
485
      directly in /usr/lib/mozilla-firefox/chrome.
486
    - debian/update-mozilla-firefox-chrome: Removed all
487
      /var/lib/mozilla-firefox/chrome.d related stuff.
488
    - debian/mozilla-firefox.links: Removed installed-chrome.txt link.
489
    - toolkit/mozapps/extensions/src/nsExtensionManager.js.in: disable
490
      extensions that fail to install chrome.
491
  * debian/mozilla-firefox-runner: Remove user profile compreg.dat at
492
    launch time.
493
  * Moved some files in /var/lib/mozilla-firefox:
494
    - debian/mozilla-firefox.links: Add a symlink for Extensions.rdf 
495
      and components.ini, from /usr to /var.
496
    - debian/mozilla-firefox.prerm: Don't remove files we don't 
497
      provide and remove files at their new locations.
498
    - debian/mozilla-firefox.preinst: Remove
499
      /var/lib/mozilla-firefox/installed-chrome.txt.
500
    - debian/update-mozilla-firefox-chrome: Create links for 
501
      Extensions.rdf and components.ini after register call, and remove 
502
      components.ini before.
503
  * Clean-up in files generated by update-mozilla-firefox-chrome:
504
    - debian/mozilla-firefox.links: Put all the links generated by
505
      update-mozilla-firefox-chrome into the package.
506
    - debian/mozilla-firefox.prerm: Remove all /var files generated 
507
      in the remove target, and changed the way we clean-up 
508
      /var/lib/mozilla-firefox.
509
  * debian/mozilla-firefox.install: Removed chromelist.txt.
510
  * Add support for extensions preferences:
511
    - debian/update-mozilla-firefox-chrome: Handle
512
      /usr/lib/mozilla-firefox/defaults.ini file.
513
    - debian/mozilla-firefox.links: Add a symlink to /var for 
514
      defaults.ini.
515
    - toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Added 
516
      defaults registration in -register command.
517
    - mozilla-firefox-dom-inspector.install: Move inspector.js into 
518
      the appropriate extension specific directory.
519
  * Move preferences back into /usr:
520
    - debian/rules: Don't move the prefs into 
521
      /etc/mozilla-firefox/pref, and put the vendor thing into /usr 
522
      as well, and remove firefox-l10.js file.
523
    - debian/mozilla-firefox.preinst: remove old prefs in /etc and 
524
      old symlink /usr/lib/mozilla-firefox/defaults/pref.
525
    - debian/firefox.js: new Debian default preferences file.
526
    - debian/mozilla-firefox.install: install firefox.js in
527
      /etc/mozilla-firefox/pref.
528
    - debian/mozilla-firefox.links: rename
529
      /usr/lib/mozilla-firefox/defaults/pref symlink to
530
      /usr/lib/mozilla-firefox/defaults/syspref.
531
    - toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Added 
532
      a hook so that defaults/syspref gets registered in defaults.ini 
533
      after all other extensions preferences.
534
  * debian/mozilla-firefox.preinst: only clean-up stuff if we are
535
    upgrading from a version known to still have the files. Added some
536
    more clean-up.
537
  * debian/mozilla-firefox.install: Removed useless init.d.
538
  * modules/libpref/src/init/all.js: Fixed all chrome URLs which refered to
539
    mozilla stuff.
540
  * debian/update-mozilla-firefox-chrome: Remove some more files before running
541
    firefox-bin -register.
542
543
  * Changes by Eric Dorland:
544
  * debian/mozilla-firefox.NEWS: Add warning about broken extension and
545
    locale packages with this release. 
546
  * debian/mozilla-firefox-runner: Comment out warning about xprint,
547
    xprint isn't necessarily needed for printing since postscript was
548
    reenabled. (Closes: #279858)
549
550
 -- Eric Dorland <eric@debian.org>  Wed, 10 Nov 2004 00:33:44 -0500
551
552
mozilla-firefox (0.99+1.0RC1-4ubuntu1) hoary; urgency=low
553
554
  * Resynchronise with Debian.
555
556
 -- Scott James Remnant <scott@canonical.com>  Tue, 09 Nov 2004 19:09:41 +0000
557
558
mozilla-firefox (0.99+1.0RC1-4) unstable; urgency=low
559
560
  * debian/mozilla-firefox-runner:
561
    - Fixed to run properly with dash. (Closes: #279549).
562
    - Fixed indentation.
563
    - Added a basic debugger support.
564
  * debian/mozilla-firefox.1: Added information about debugger options.
565
  * debian/rules: Added a debug option to DEB_BUILD_OPTIONS. If you want to
566
    build a fully gdb'able package, use DEB_BUILD_OPTIONS="noopt nostrip
567
    debug"
568
  * netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp: Apply new patch from
569
    bz#266835.
570
    - Further change this patch to use Append rather than AppendLiteral,
571
      which doesn't seem to exist. (ED)
572
573
 -- Mike Hommey <mh@glandium.org>  Thu,  4 Nov 2004 22:01:51 +0900
574
575
mozilla-firefox (0.99+1.0RC1-3ubuntu1) hoary; urgency=low
576
577
  * Fix AMD64 build.
578
  * Add -dev package (Ubuntu: #3199)
579
  * Use pango for rendering
580
  * Restore branding changes
581
582
 -- Thom May <thom@canonical.com>  Thu,  4 Nov 2004 14:53:04 +0000
583
584
mozilla-firefox (0.99+1.0RC1-3) unstable; urgency=low
585
586
  * netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp: Apply patch from
587
    bz#266835 to fix anonymous user password issue. (Closes: #226784)
588
  * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: (MH)
589
    - Fully apply previous patches, which for some reason left a spurious code
590
      line which made the extensions manager not like expired extensions
591
      anymore. (Closes: #279140)
592
    - Enhanced extensions manager so that the behaviour described in
593
      https://bugzilla.mozilla.org/show_bug.cgi?id=247846#c14 *actually*
594
      works. Extensions packagers are invited to move their chrome files
595
      accordingly, and remove /var/lib/mozilla-firefox/chrome.d files so that
596
      extensions chrome don't get registered when they are forced-disable due
597
      to version mismatch or some other reason.
598
  * debian/mozilla-firefox-runner: 
599
    - Fix some thinkos. (MH)
600
    - Fix for loading files from the command line. (Closes: #279018) (MH)
601
    - Removed setting --display from $DISPLAY, let it get it from the 
602
      environment, but pass --display if it is set. (Mike, 
603
      I'm worried this will screw up some session 
604
      managers, let me know what you think, we can revert it)
605
    - Removed FIREFOX_OPEN_IN stuff, so that firefox now obeys to "open 
606
      links from other applications in" setting. (Closes: #279073) (MH)
607
    - Enhanced command line parsing, and drop empty arguments. 
608
      (Closes: #279138) (MH)
609
    - No need for a find to look for XUL.mfasl, we already have its 
610
      location from the path list taken from profiles.ini. (MH)
611
    - Better detection of dsp wrapper, when FIREFOX_DSP=auto. 
612
      (Closes: #254611) (MH)
613
    - Correctly open local files even when firefox was not previously 
614
      running. (Closes: #279018) (MH)
615
  * debian/mozilla-firefox.1: (MH)
616
    - Removed references to FIREFOX_OPEN_IN.
617
    - Added the -safe-mode option.
618
  * debian/mozilla-firefoxrc: Removed FIREFOX_OPEN_IN. (MH)
619
  
620
 -- Eric Dorland <eric@debian.org>  Tue,  2 Nov 2004 00:46:28 -0500
621
622
mozilla-firefox (0.99+1.0RC1-2) unstable; urgency=medium
623
624
  * browser/app/profile/firefox.js: Disable browser update checking by
625
    default.
626
  * debian/mozilla-firefox-runner: Apply patch from Aurelien Jarno to fix
627
    variable name typo. (Closes: #278844)
628
629
 -- Eric Dorland <eric@debian.org>  Fri, 29 Oct 2004 23:50:59 -0400
630
631
mozilla-firefox (0.99+1.0RC1-1) unstable; urgency=medium
632
633
  * New upstream release.
634
  * layout/xul/base/src/nsImageBoxFrame.{cpp,h}: Remove some conflicts
635
    from a previous patch.
636
637
 -- Eric Dorland <eric@debian.org>  Thu, 28 Oct 2004 23:33:46 -0400
638
639
mozilla-firefox (0.10.1+1.0PR-5) unstable; urgency=low
640
641
  * debian/rules: (MH)
642
    - Use upstream extensions set. This will eventually get a
643
      correct help menu and fix some yet undiscovered UI issues. 
644
      (Closes: #257946)
645
    - Added support for DEB_BUILD_OPTIONS=noopt.
646
    - Changed OPTFLAGS assignment.
647
    - Remove whitespace characters in version number for UserAgent
648
      branding.
649
    - Install mozilla-firefox-runner into /usr/lib/mozilla-firefox/firefox
650
      (Closes: #278477)
651
  * debian/mozilla-firefox.links: (MH)
652
    - Link /usr/bin/firefox and /usr/bin/mozilla-firefox to 
653
      /usr/lib/mozilla-firefox/firefox.
654
    - Removed obsolete profile/US links.
655
  * debian/mozilla-firefox.dirs: Create /etc/mozilla/profile instead of
656
    /etc/mozilla/profile/US. (MH)
657
  * toolkit/xre/nsAppRunner.cpp: Fix crash in nsCmdLineService::Initialize
658
    when argc is changed by gtk (when treating gtk specific arguments)
659
    (MH)
660
  * debian/mozilla-firefox-runner (Changes by MH):
661
    - Removed workaround for bug #122990. First, xmlterm is not an activated
662
      extension, and secondly, if it still requires the TERM environment
663
      variable, it is the user's duty to set it to whatever he wants, not
664
      firefox's start script's.
665
    - Removed the ulimit -c setting. First, it is set by default to 0 on a
666
      newly installed debian, and secondly, it is user's choice to set it or
667
      not if he needs to get core files.
668
    - Removed unused shell variables.
669
    - Removed unsetting AUDIODEV variable. If it still crashes, it does belong
670
      to some other code than firefox. The AUDIODEV environment variable is
671
      used nowhere in firefox code:
672
      http://lxr.mozilla.org/aviarybranch/search?string=AUDIODEV
673
      Note that there is a "A crash which occurred when AUDIODEV doesn't
674
      contain "/" was fixed." log message in esound version 0.2.33 changes and
675
      that the bug may have belonged there.
676
    - Replaced ${HOME}/.mozilla-firefoxrc file by a ${HOME}/.mozilla/firefox/rc
677
      file. The former is still supported, though, but will bring a warning
678
      message. If both are present, only the latter is taken into account.
679
    - Changed the way system and user FIREFOX_DSP and FIREFOX_OPEN_IN
680
      variables are handled. First, use system values defined in
681
      /etc/mozilla-firefox/mozilla-firefoxrc, then override with
682
      ${HOME}/.mozilla/firefox/rc and then with runtime environment variables.
683
    - Don't die when DISPLAY is not set. Display can be passed by --display
684
      option, and if not set and needed (some options don't require it),
685
      firefox will complain.
686
    - Some shell code simplifications by using some coreutils.
687
    - Added better command line parsing.
688
    - Added verbosity mode.
689
    - Removed setting of FONTCONFIG_PATH, /usr/lib/mozilla-firefox/res/Xft
690
      doesn't exist
691
    - Factorized localization detection.
692
  * debian/mozilla-firefox.1 (MH):
693
    - Made some clean-up between dashes and hyphens.
694
    - Removed obsolete options and added new ones.
695
    - Added informations about some debian specific stuff.
696
  * debian/update-mozilla-firefox-chrome: Changed the way we move files to
697
    /var/lib/mozilla-firefox. It will avoid creating files with a * in their
698
    name whenever registration failed. (MH)
699
  * debian/README.Debian: Update java instructions, tell them to just use
700
    java-package.
701
702
 -- Eric Dorland <eric@debian.org>  Thu, 28 Oct 2004 21:30:40 -0400
703
704
mozilla-firefox (0.10.1+1.0PR-4) unstable; urgency=medium
705
706
  * This release mostly courtesy Mike Hommey. 
707
  * layout/src/xul/base/src/nsImageBoxFrame.*: Backported patch from
708
    bz#255372. (Closes: #278046)
709
  * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Force locking
710
    globally installed extensions, that will prevent extensions packages
711
    files to be unexpectedly removed by firefox.
712
  * debian/control: Add Mike Hommey as an Uploader.
713
  * debian/mozilla-firefox.install: Removed content-packs.jar which is
714
    mozilla-browser specific.
715
  * debian/mozilla-firefox.dirs: 
716
    - Remove leading /'s.  
717
    - Create
718
    /usr/lib/mozilla-firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
719
    /chrome directory so that preview is shown in the Themes Manager. Yes,
720
    this is stupid, but it is the way firefox wants it (and it's not even
721
    created by make install, nor in the official binary tarball. It is
722
    only created at run time, but you know what ? under *nix, a normal
723
    user can't create that directory) (Closes: #276404)
724
  * debian/rules: Add a /etc/mozilla-firefox/pref/vendor.js file adding
725
    the debian package version to the UserAgent. (Closes: #268654)
726
  * debian/README.Debian: Update java instructions. I'd love some more
727
    definitive pointers. (Closes: #277983)
728
729
 -- Eric Dorland <eric@debian.org>  Tue, 26 Oct 2004 00:11:48 -0400
730
731
mozilla-firefox (0.10.1+1.0PR-3) experimental; urgency=low
732
733
  * debian/control: 
734
    - Rename the mozilla-firefox-gnome-vfs package
735
      mozilla-firefox-gnome-support since it does more than vfs. No 
736
      need for Replaces or anything, since it never actually made it to 
737
      the archive.
738
    - Remove strict build dependencies on g++ and binutils, since the 
739
      fixed versions have hit sarge.
740
    - Remove hppa build depends, since gcc has also been fixed there.
741
    - Build-depend on libgnome2-dev and libgconf2-dev to build in more 
742
      gnome support.
743
    - Have mozilla-firefox recommend it's gnome support. 
744
  * debian/rules: 
745
    - Remove hppa CC redefinitions.
746
    - Exclude *gnome* not just *gnomevfs*.
747
    - dh_install for gnome-support.
748
  * debian/mozilla-firefox-gnome-vfs.*: Rename to
749
    mozilla-firefox-gnome-support.*.
750
  * debian/mozilla-firefox-gnome-support.install: Grab *gnome*, not just
751
    *gnomevfs*.
752
753
 -- Eric Dorland <eric@debian.org>  Thu, 21 Oct 2004 23:04:53 -0400
754
755
mozilla-firefox (0.10.1+1.0PR-2) experimental; urgency=low
756
757
  * debian/mozilla-firefox-runner: 
758
    - Patch from Sam Morris to handle cleanup of directories with 
759
      unusual names.
760
    - Fix return value check, patch from rgselk. (Closes: #269690)
761
  * debian/mozilla-firefox.1: List full path to firefox-bin. (Closes:
762
    #275563)
763
  * debian/rules: 
764
    - --with-gssapi=/usr, enable Negotiate extension. (Closes:
765
      #274258)
766
    - Enable gnomevfs support, 
767
  * debian/control: 
768
    - Build-depend on libkrb5-dev.
769
    - Build-depend on libgnomevfs2-dev.
770
    - New gnomevfs package, based on work by Mike Hommey. (Closes: 
771
      #262062)
772
  * debian/mozilla-firefox-gnome-vfs.post{inst,rm}: Added, same as
773
    corresponding files from mozilla-firefox-dom-inspector.
774
  * debian/mozilla-firefox-gnome-vfs.install: Install gnomevfs components.
775
  * browser/app/profile/firefox.js: Set
776
    network.negotiate-auth.trusted-uris to https:// to enable the
777
    negotiate extension over secure links.
778
  * config/rules.mk: Tweak patch from Thiemo Seufer to include svg_doc in
779
    non-optimization. (Closes: #273353)
780
781
 -- Eric Dorland <eric@debian.org>  Sun, 17 Oct 2004 21:25:08 -0400
782
783
mozilla-firefox (0.10.1+1.0PR-1) experimental; urgency=critical
784
785
  * New upstream release, fixes security issue bz#259708. (Closes:
786
    #274493)
787
788
 -- Eric Dorland <eric@debian.org>  Sun,  3 Oct 2004 03:32:43 -0400
789
790
mozilla-firefox (0.10+1.0PR-1) experimental; urgency=low
791
792
  * New upstream release. (Closes: #273700, #267003)
793
  * toolkit/mozapps/extensions/src/nsExtensionManager.js.in,
794
    netwerk/dns/src/nsIDNService.cpp,
795
    modules/libpr0n/decoders/bmp/nsBMPDecoder.cpp,
796
    gfx/src/windows/nsImageWin.cpp, gfx/src/shared/gfxImageFrame.cpp,
797
    browser/app/profile/firefox.js: Resolve conflicts between my tree and
798
    upstream.
799
  * browser/app/Makefile.in: Fix $(DESTDIR) variable.
800
  * accessible/src/atk/nsAccessibleWrap.cpp,
801
    accessible/src/atk/nsAccessibleWrap.h: Apply patch from bugzilla for
802
    alpha fix that's more likely to make it into CVS.
803
  * debian/update-mozilla-firefox-chrome: Patch from Mike Hommey to make
804
    update-mozilla-firefox-chrome more verbose on -v.
805
  * debian/rules:
806
    - Remove typeaheadfind for new find toolbar to work. (Mike Hommey) 
807
      (Closes: #267170)
808
    - Changes to reflect new upstream files. 
809
  * debian/control: 
810
    - Remove build-depend on libcairo-dev.
811
    - Build depend on libxt-dev, seems to be necessary now. (Closes: 
812
      #274311)
813
  * debian/docs: Removed, as browser/README.html disappeared. (Mike Hommey)
814
  * debian/mozilla-firefox.dirs: 
815
    - Changes to reflect new upstream files.
816
    - Removed obsolete libnullplugin.so.
817
  * debian/mozilla-firefox.install: 
818
     - Remove .jar's that aren't there anymore.
819
     - Removed obsolete libnullplugin.so.
820
  * debian/mozilla-firefox-dom-inspector.dirs,
821
    debian/mozilla-firefox-dom-inspector.install, debian/rules: Upstream
822
    doesn't consider DOM Inspector as a real extension, and do not provide
823
    the appropriate files to make it appear in the extensions
824
    manager. Removed all the extension related stuff in the package. (Mike
825
    Hommey)
826
  * other-licenses/libart_lgpl: Removed, was for SVG, no longer needed.
827
  * modules/plugin/samples/default/unix/*: Reverted debian specific
828
    changes, we don't want them in the diff since libnullplugin won't get
829
    installed.
830
831
 -- Eric Dorland <eric@debian.org>  Fri,  1 Oct 2004 18:50:46 -0400
832
833
mozilla-firefox (0.9.3-6) unstable; urgency=high
834
835
  * gfx/src/gtk/fontEncoding.properties: Uncomment symbol fonts. (Closes:
836
    #272927)
837
  * debian/control: Build-depend on binutils (>= 2.15-4) but only on mips
838
    and mipsel. (Closes: #273353)
839
  * configure.in, configure, rules.mk: Patch from Thiemo Seufer to
840
    increase stability and performance on mips. (Closes: #272159)
841
  * debian/mozilla-firefox-runner: Detect failure of ping()
842
    better. (Closes: #267393)
843
  * layout/html/document/src/html.css: Testing fix for xprint problems.
844
845
 -- Eric Dorland <eric@debian.org>  Mon, 27 Sep 2004 17:07:37 -0400
846
847
mozilla-firefox (0.9.3-5) unstable; urgency=high
848
849
  * debian/update-mozilla-firefox-chrome: Apply another patch form Mike
850
    Hommey to fix a few more issues in the script. (Closes: #271480)
851
  * Fixes to Secunia security bugs, ported from bugzilla: 
852
    (Closes: #271888)
853
    - browser/base/content/browser.js, 
854
      xpfe/communicator/resources/content/contentAreaDD.js: Fix for
855
      drag and drop exploit, bz#250862.
856
    - caps/include/nsScriptSecurityManager.h, caps/src/caps.properties,
857
      caps/src/nsScriptSecurityManager.cpp: Fix for enablePrivilege
858
      exploit, bz#253942.
859
    - gfx/src/shared/gfxImageFrame.cpp, gfx/src/windows/nsImageWin.cpp,
860
      modules/libpr0n/decoders/bmp/nsBMPDecoder.cpp: Fix for various
861
      overflows in the BMP code, bz#255067.
862
    - netwerk/dns/src/nsIDNService.cpp: Fix for bug in non-ASCII 
863
      characters in domain names, bz#256316
864
    - content/xbl/src/nsXBLPrototypeHandler.cpp: Clipboard injection 
865
      fix, bz#257523.
866
867
 -- Eric Dorland <eric@debian.org>  Thu, 16 Sep 2004 20:06:47 -0400
868
869
mozilla-firefox (0.9.3-4) unstable; urgency=high
870
871
  * Urgency high, go into testing dammit!
872
  * Apply patch from Mike Hommey as -3.1, which wasn't actually
873
    released. See below. (Closes: #271480)
874
  * debian/rules: Patch from Matthew Mueller to fix underquoted
875
    argument. (Closes: #271432)
876
  * debian/control: Build depend on binutils (>= 2.15-3) with fixed mips
877
    support. We still need a fixed gcc.
878
879
 -- Eric Dorland <eric@debian.org>  Mon, 13 Sep 2004 20:41:27 -0400
880
881
mozilla-firefox (0.9.3-3.1) unstable; urgency=low
882
883
  * debian/rules: removed
884
    /usr/lib/mozilla-firefox/defaults/profile/extensions/installed-extensions.txt
885
  * debian/update-mozilla-firefox-chrome:
886
    + Added a "verbose" mode.
887
    + Added warning messages (only shown in verbose mode) about some
888
      extensions specific issues. This is intended to be useful for extensions
889
      maintainers.
890
    + Check if the installed-extensions.txt file disappears, which tells if the
891
      mozilla-firefox -register went ok.
892
  * debian/update-mozilla-firefox-chrome.8:
893
    + Fixed typos.
894
    + Added reference to the -v option for the verbose mode.
895
  * debian/mozilla-firefox-runner: enhanced the profile directory check. It
896
    didn't work if the path indicated in the profiles.ini was not absolute.
897
898
 -- Mike Hommey <mh@glandium.org>  Mon, 13 Sep 2004 20:31:21 +0900
899
900
mozilla-firefox (0.9.3-3) unstable; urgency=high
901
902
  * Acknowlege NMU from Mike Hommey. He did a fantastic job in porting a
903
    large amount of fixes from upstream CVS. I owe him several large
904
    beverages of his choice. (Closes: #259046, #259836)
905
  * Port all of Mike's changes to my local CVS.
906
  * debian/mozilla-firefox-runner: 
907
    - Pass command-line arguments to get_locale so they can actually 
908
      be used. (Closes: #240058)
909
    - Apply patch from Mike Hommey to use the profiles.ini to find the 
910
      path to the profile to clean XUL.mfasl. (Closes: #267326)
911
  * debian/update-mozilla-firefox-chrome: Patch from Mike Hommey to fix
912
    some bashisms introduced by his NMU.
913
  * xpcom/reflect/xptcall/src/md/unix/Makefile.in,
914
    xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s,
915
    xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp,
916
    xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s.m4,
917
    xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s: Patch from
918
    Thiemo Seufer to fix mips. This requires patches to gcc and binutils
919
    to work and fully close #270621.
920
921
 -- Eric Dorland <eric@debian.org>  Wed,  8 Sep 2004 21:13:35 -0400
922
923
mozilla-firefox (0.9.3-2.2) unstable; urgency=high
924
925
  * The "never edit the diff file unless you're sure nothing will be
926
    missing" release.
927
  * debian/mozilla-firefox.prerm: restore the uncut version.
928
  * debian/control, debian/rules: Use gcc-3.2 to build on hppa, because of
929
    toolchain bug #254549.
930
931
 -- Mike Hommey <mh@glandium.org>  Mon, 23 Aug 2004 19:45:54 +0900
932
933
mozilla-firefox (0.9.3-2.1) unstable; urgency=high
934
935
  * Non Maintainer Upload for RC Fixes.
936
  * Applied changes to toolkit/mozapps/extensions/src/nsExtensionManager.js.in
937
    and toolkit/mozapps/extensions/locale/extensions.properties to solve some
938
    issues with extensions management. (taken from CVS)
939
  * Applied other changes to
940
    toolkit/mozapps/extensions/src/nsExtensionManager.js.in,
941
    toolkit/mozapps/extensions/public/nsIExtensionManager.idl and
942
    mozilla/toolkit/xre/nsAppRunner.cpp to be able to use -register
943
    instead of -list-global-items for extensions/components/chrome
944
    registration through update-mozilla-firefox-chrome, thus not needing
945
    Xvfb anymore (-register option doesn't require a X server).
946
    (taken from CVS)
947
  * Applied some more changes to
948
    toolkit/mozapps/extensions/src/nsExtensionManager.js.in in order to
949
    avoir overlayinfo deletion during extensions registration process.
950
    (taken from CVS)
951
  * Final changes to toolkit/mozapps/extensions/src/nsExtensionManager.js.in
952
    to avoid registering out of date extensions so that firefox doesn't enter
953
    a loop at startup when no profile was found, and to only write in the
954
    installed-extensions-processed.txt file the list of actually installed
955
    extensions. Note that for packaged extensions installing their files
956
    directly into the chrome or components directories, that only means they
957
    won't appear in the Extensions Manager. They will still be available in
958
    the GUI.
959
  * All these fixes improve the Extensions Manager. Closes: #259046.
960
  * accessible/src/atk/nsAccessibleWrap.cpp,
961
    accessible/src/atk/nsAccessibleWrap.h: fixed 32-bit abuse of gobject
962
    (Steve Langasek). Closes: #259836.
963
  * debian/control: Removed dependency upon xvfb.
964
  * debian/update-mozilla-firefox-chrome:
965
    + Removed use of Xvfb.
966
    + Removed creation of a root default profile, but kept the fake home
967
      hack to avoid creation of a .mozilla directory in root's home.
968
    + Changed extensions handling so that the overall process is cleaner.
969
      Extensions packages will have to move extensions {uid} directories
970
      to /usr/lib/mozilla-firefox/extensions/, while the current location
971
      is still supported for compatibility purpose (but is strongly not
972
      recommended).
973
    + Removed use of regxpcom and regchrome, since what they both do is
974
      done by firefox-bin -register.
975
  * debian/rules: force GnomeVFS support to be disabled. (Josselin Mouette)
976
  * debian/README.Debian:
977
    + Added a note about potential problems with packaged "old" extensions.
978
    + Added a note about how to manually disable packaged extensions in user
979
      profile.
980
    + Removed some old notes that don't apply anymore.
981
  * debian/mozilla-firefox-dom-inspector.install, debian/rules: Move
982
    extensions files to /usr/lib/mozilla-firefox/extensions/ instead of
983
    /usr/lib/mozilla-firefox/defaults/profile/extensions/.
984
  * debian/mozilla-firefox.links: Move installed-extensions.txt symlink
985
    from /usr/lib/mozilla-firefox/defaults/profile/extensions/ to
986
    /usr/lib/mozilla-firefox/extensions/.
987
  * debian/mozilla-firefox.prerm: More cleanup on removal of package.
988
989
 -- Mike Hommey <mh@glandium.org>  Sun, 22 Aug 2004 21:43:47 +0900
990
991
mozilla-firefox (0.9.3-2) unstable; urgency=low
992
993
  * xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s.m4: Comment out
994
    NARGSAVE, like I did in 0.9.1-7, should fully fix #262571.
995
  * debian/mozilla-firefox.preinst: Remove brace expansion
996
    bashism. (Closes: #264200)
997
  * debian/control: Depend on debianutils (>= 1.16) since we use mktemp
998
    -d. (Closes: #263958)
999
  * debian/mozilla-firefox-runner: Make -contentLocale COUNTRY, not
1000
    lang-COUNTRY. (Closes: #263940)
1001
1002
 -- Eric Dorland <eric@debian.org>  Sun,  8 Aug 2004 23:41:02 -0400
1003
1004
mozilla-firefox (0.9.3-1) unstable; urgency=low
1005
1006
  * New upstream release. (Closes: #263193)
1007
  * debian/update-mozilla-firefox-chrome.8: Add manpage from Mark Suter
1008
    for update-mozilla-firefox-chrome.8. (Closes: #263149)
1009
  * debian/mozilla-firefox.manpages: Add update-mozilla-firefox-chrome.8.
1010
  * debian/control: Add build-deps on gcc-3.4 for amd64. (Closes: #262679)
1011
1012
 -- Eric Dorland <eric@debian.org>  Wed,  4 Aug 2004 20:21:22 -0400
1013
1014
mozilla-firefox (0.9.1-7) unstable; urgency=low
1015
1016
  * debian/mozilla-firefox-runner:
1017
    - Reintroduce check for command-line arguments (I broke this last 
1018
      release). (Closes: #262692, #262462, #262537, #262588, #262727)
1019
    - Allow overriding of -contentLocale and -UILocale. (Closes: 
1020
      #240058)
1021
  * xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s: Comment out
1022
    NARGSAVE reassignment, it is defined elsewhere. (Closes: #262571)
1023
  * debian/rules: Force amd64 to build with gcc 3.4. (Closes: #262679)
1024
1025
 -- Eric Dorland <eric@debian.org>  Mon,  2 Aug 2004 10:16:46 -0400
1026
1027
mozilla-firefox (0.9.1-6) unstable; urgency=low
1028
1029
  * widget/src/gtk2/keysym2ucs.c: Patch from Eugeniy Meshcheryakov to
1030
    allow mozilla firefox to enter a ghe with upturn. (Closes: #261543)
1031
  * debian/mozilla-firefox-runner: 
1032
    - Remove some mail and composer cruft. 
1033
    - Add warning if DISPLAY is not set. (Closes: #261465)
1034
1035
 -- Eric Dorland <eric@debian.org>  Thu, 29 Jul 2004 22:49:59 -0400
1036
1037
mozilla-firefox (0.9.1-5) unstable; urgency=low
1038
1039
  * debian/control: Goodbye mozilla-firebird transition package.
1040
  * debian/mozilla-firefox-runner: Add -a firefox flag when running
1041
    firefox-bin. (Closes: #259237)
1042
  * debian/mozilla-firefox.desktop: Add GenericName field.
1043
  * debian/update-mozilla-firefox-chrome: Fix quoting problem with
1044
    {*}. (Closes: #257243)
1045
  * debian/rules: 
1046
    - Re-enable postscript printing support, since the security 
1047
      issues turned out to be bogus. (Closes: #257628)
1048
    - Disable SVG support, it's still too broken to be usable. 
1049
      (Closes: #259544)
1050
1051
 -- Eric Dorland <eric@debian.org>  Sun, 18 Jul 2004 20:09:14 -0400
1052
1053
mozilla-firefox (0.9.1-4) unstable; urgency=low
1054
1055
  * The "Let's try unstable" release. There are still issues, but there
1056
    are issues with 0.8 as well, so no more point in waiting.
1057
  * debian/update-mozilla-firefox-chrome:
1058
    - Copy over empty Extensions.rdf file on update. (Closes: #257243)
1059
    - Increase sleep to 15 seconds, hopefully this will work on most 
1060
      people's machines. 
1061
  * My apologies to Mike Hommey for mispelling his name in last release.
1062
1063
 -- Eric Dorland <eric@debian.org>  Sun, 11 Jul 2004 23:51:24 -0400
1064
1065
mozilla-firefox (0.9.1-3) experimental; urgency=low
1066
1067
  * Ok, I was wrong, we're still in experimental. I think we need to fix a
1068
    few more issues before getting this in unstable, like #257258, and
1069
    make sure the hacky extensions mechanism is more bullet-proof.
1070
  * debian/rules: --disable-installer, since we don't use it.
1071
  * debian/update-mozilla-firefox-chrome: 
1072
    - Wait 8 seconds instead of 5 for the hack, might help some 
1073
      people reporting problems.
1074
    - Remove ${LIBDIR}/extensions/{*}. I may move that to 
1075
      /var/lib/mozilla-firefox eventually, but let's leave it for now.
1076
  * debian/mozilla-firefox.png.uu: Make a nicer png icon, based on the
1077
    about box graphic.
1078
  * debian/mozilla-firefox.preinst: Remove old config files in
1079
    /etc/mozilla-firefox/pref. (Closes: #257711, 257557)
1080
  * browser/app/profile: firefox.js: Revert change to app.version,
1081
    apparently it breaks extensions. (Closes: #257941)
1082
1083
 -- Eric Dorland <eric@debian.org>  Wed,  7 Jul 2004 21:26:55 -0400
1084
1085
mozilla-firefox (0.9.1-2) experimental; urgency=low
1086
1087
  * The "Mike Homey, lord of the bugs" release. Thanks to Mike for being a
1088
    huge help with bug triage. That's right, help with bugs and your name
1089
    could have a prestigious place in the changelog.
1090
  * I'd like my next release to be to unstable, so let me know about
1091
    profile transition bugs, etc.
1092
  * debian/control: Build-depend on libcairo1-dev. 
1093
  * debian/rules: Enable svg support using cairo renderer. (Closes:
1094
    #215990)
1095
  * debian/mozilla-firefox-xremote-client: Add -a firefox switch to make
1096
    the remote client find firefox only. Thanks Jonathan Black. (Closes:
1097
    #256967)
1098
  * debian/mozilla-firefox.desktop: Make comment Gnome HIG
1099
    compliant. (Closes: #257592)
1100
  * browser/app/profile/firefox.js: 
1101
    - app.version = 0.9.1.
1102
    - Disable app updates by default. We're debian, we handle updates.
1103
  * debian/update-mozilla-firefox-chrome: 
1104
    - Remove installed-extensions-processed.txt before regenerating. 
1105
      (Closes: #257243)
1106
    - Take some, but not all advice from Alexandru Fomin. Improve Xvfb 
1107
      and extension registration hacks. 
1108
1109
 -- Eric Dorland <eric@debian.org>  Sun,  4 Jul 2004 16:58:17 -0400
1110
1111
mozilla-firefox (0.9.1-1) experimental; urgency=low
1112
1113
  * New upstream release.
1114
  * config/autoconf.mk.in: Alright, /usr/lib/firefox-0.9 was a bad idea,
1115
    use /usr/lib/mozilla-firefox. Change all the instances
1116
    /usr/lib/firefox-0.9 back to /usr/lib/mozilla-firefox. I feel
1117
    silly. (Closes: #256991)
1118
  * debian/mozilla-firefox-runner: Actually check for the existence of the
1119
    .mozilla/firefox directory before trying to clean it. 
1120
  * debian/update-mozilla-firefox-runner: 
1121
    - Call firefox-bin, not firefox you silly goose.  
1122
    - Use mozilla-firefox tempfile, not mozilla-browser.
1123
    - The horrible hackiness continues: For my previous hack to work, 
1124
      I need to preseed a profile directory in the home directory I
1125
      create. Now things should work. (Closes: #256812)
1126
1127
 -- Eric Dorland <eric@debian.org>  Thu,  1 Jul 2004 17:16:29 -0400
1128
1129
mozilla-firefox (0.9-1) experimental; urgency=low
1130
1131
  * New upstream release. There may be regressions from 0.8. (Closes:
1132
    #254522)
1133
  * widget/src/gtk/nsGtkMozRemoteHelper.cpp,
1134
    widget/src/gtk2/nsGtkMozRemoteHelper.cpp,
1135
    widget/src/xremoteclient/XRemoteClient.cpp: Fix previously applied to
1136
    fix -remote behaviour undone. Mozilla now includes the program name in
1137
    the properties to distinguish between various Mozilla apps.
1138
  * xpcom/reflect/xptcall/src/md/unix/Makefile.in: remove extra endif.
1139
  * dom/public/idl/core/nsIDOMNSDocument.idl: Reintroduce referrer
1140
    attribute that got lost somehow.
1141
  * content/events/src/nsEventStateManager.cpp: Fix a strange broken
1142
    function call to GetContainer.
1143
  
1144
  * debian/rules: 
1145
    - Follow upstream and --enable-single-profile and 
1146
      --disable-profilesharing.
1147
    - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9.
1148
    - --user-app-dir=.mozilla to jive with new location.
1149
    - Remove dom-inspector extension dir from the regular package. 
1150
  * debian/control: Depend on xvfb for insane hack below.
1151
  * debian/mozilla-firefox.install:
1152
    - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9.
1153
    - Remove ipc dir, mozipcd.
1154
    - Add init.d, greprefs dirs.
1155
  * debian/mozilla-firefox.dirs:
1156
    - Add /var/lib/mozilla-firefox/extensions{,.d}
1157
  * debian/mozilla-firefox-dom-inspector.dirs: Add
1158
    /var/lib/mozilla-firefox/extensions.d.
1159
  * debian/mozilla-firefox-dom-inspector.install:
1160
    - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9.
1161
    - Install dom-inspector extension dir.
1162
  * debian/mozilla-firefox.links:
1163
    - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9.
1164
    - Link /usr/lib/mozilla-firefox to /usr/lib/firefox-0.9.
1165
    - Link installed-extensions.txt to our place in 
1166
      /var/lib/mozilla-firefox.
1167
  * debian/mozilla-firefox-runner: 
1168
    - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9.
1169
    - Fix xprintorg typo. (Closes: #255706)
1170
    - Search .mozilla/firefox for XUL.mfasl files.
1171
  * debian/mozilla-firefox-xremote-client: Replace
1172
    /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9.
1173
  * debian/update-mozilla-firefox-chrome: 
1174
    - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9.
1175
    - Capture return values from reg* commands on error, stolen 
1176
      from mozilla source.
1177
    - Remove returns from check_running.
1178
    - Pull in snippets from /var/lib/mozilla-firefox/extensions.d 
1179
      to generate installed-extensions.txt for new extensions mechanism.  
1180
    - An insane hack, but necessary because of upstream: Launch a Xvfb 
1181
      to run firefox to generate the necessary extension metadata. I've
1182
      been told this will not be necessary in the next version. 
1183
1184
 -- Eric Dorland <eric@debian.org>  Mon, 28 Jun 2004 23:40:59 -0400
1185
1186
mozilla-firefox (0.8-12) unstable; urgency=low
1187
1188
  * The "Last Chance Before 0.9" release.
1189
  * debian/mozilla-firefox-runner: Fix unescaped \n, thanks Olly
1190
    Betts. (Closes: #252436)
1191
  * debian/update-mozilla-firefox-chrome: Watch out for empty
1192
    LD_LIBRARY_PATH. Thanks George Cristian Birzan. (Closes: #254142)
1193
  * debian/README.Debian: Restructure and update a bit.
1194
  * debian/presubj: Add bug information from README.Debian for reportbug.
1195
  * debian/mozilla-firefox.install: Install the presubj. 
1196
1197
 -- Eric Dorland <eric@debian.org>  Mon, 14 Jun 2004 19:39:27 -0400
1198
1199
mozilla-firefox (0.8-11) unstable; urgency=low
1200
1201
  * Apply amd64 fix from #249211. 
1202
  * debian/README.Debian: Shamelessly stole the java plugin installation
1203
    instructions from the mozilla package. (Closes: #243513)
1204
  * nsCommonWidget.cpp, nsCommonWidget.h, nsWindow.cpp: Apply patch (with
1205
    some hand massaging) from upstream bugzilla bug #209342 to fix initial
1206
    window placement. (Closes: #235209, 241519)
1207
  * nsprpub/pr/src/misc/prnetdb.c: Apply patch from Miquel van Smoorenburg
1208
    to prevent unless reverse DNS lookups. (Closes: #251978)
1209
  * debian/mozilla-firefox-runner: Apply patch from Jasper Spaans to fix
1210
    remote xprint printing. (Closes: #252072)
1211
1212
 -- Eric Dorland <eric@debian.org>  Tue,  1 Jun 2004 23:12:36 -0400
1213
1214
mozilla-firefox (0.8-10) unstable; urgency=low
1215
1216
  * debian/mozilla-firefox.install: Don't install uuencoded file. (Closes:
1217
    #251441)
1218
  * debian/mozilla-firefox-runner: unset AUDIODEV which can cause
1219
    crashes. Thanks Christopher Armstrong. (Closes: #236231)
1220
  * update-mozilla-firefox-chrome: Port security fix from #249613 to
1221
    handle insecure tempfile creation.
1222
  * debian/rules: Following the advice of #247585 I'm disabling postscript
1223
    printing. Perhaps this will alleviate some of the other printing
1224
    problems.
1225
1226
 -- Eric Dorland <eric@debian.org>  Sun, 30 May 2004 01:47:52 -0400
1227
1228
mozilla-firefox (0.8-9) unstable; urgency=low
1229
1230
  * debian/control: 
1231
    - Suggest latex-xft-fonts for MathML fonts. Thanks Michael 
1232
      JasonSmith. (Closes: #216925)
1233
    - Build depend on libx11-dev & libxp-dev instead of xlibs-dev to 
1234
      reflect new X packages.
1235
  * widget/src/gtk2/nsWindow.cpp: Apply patch from Peter Colberg to ignore
1236
    unused mouse buttons. (Closes: #244305)
1237
  * debian/README.Debian: Document the fact that the loopback interface
1238
    has to be up and unfiltered for things to work right.
1239
1240
 -- Eric Dorland <eric@debian.org>  Wed,  5 May 2004 23:30:42 -0400
1241
1242
mozilla-firefox (0.8-8) unstable; urgency=low
1243
1244
  * security/nss/lib/freebl/unix_rand.c: Remove code that called netstat
1245
    to gain so entropy. It's pretty useless on a Linux system. Thanks
1246
    Wichert. (Closes: #241200)
1247
  * debian/README.Debian: Add note about changing the button order in the
1248
    dialog boxes. (Closes: #240261)
1249
  * debian/control: Add dummy package for mozilla-firebird to smooth
1250
    upgrades. (Closes: #235577)
1251
1252
 -- Eric Dorland <eric@debian.org>  Sat,  3 Apr 2004 16:19:34 -0500
1253
1254
mozilla-firefox (0.8-7) unstable; urgency=low
1255
1256
  * debian/mozilla-firefox-runner: 
1257
    - Cleanup XUL.mfasl whenever firefox is run with no 
1258
      command-line. (Closes: #238717)
1259
    - Add patch from Laurent Buffler to add config to allow 
1260
      new tabs to be opened instead of new windows. (Closes: #239323)
1261
  * debian/mozilla-firefoxrc: Put the new FIREFOX_OPEN_IN variable in
1262
    there and document it's use.
1263
1264
 -- Eric Dorland <eric@debian.org>  Sat, 27 Mar 2004 17:21:51 -0500
1265
1266
mozilla-firefox (0.8-6) unstable; urgency=low
1267
1268
  * debian/control: Build-depend on g++-3.3 (>= 3.3.3-4) to work around
1269
    broken 3.3.3-3 release. (Closes: #238318, #238241, #238441, #238523,
1270
    #238534)
1271
  * debian/rules: Install new small-firefox icon. 
1272
  * debian/mozilla-firefox{.png, .xpm, -small.xpm}: Use the new DFSG-free
1273
    icons, the old pretty ones are trademarked and not DSFG-free. I know,
1274
    it's stupid. Complain to the Mozilla Foundation, not me. (Closes:
1275
    #234869)
1276
1277
 -- Eric Dorland <eric@debian.org>  Sun, 21 Mar 2004 22:09:16 -0500
1278
1279
mozilla-firefox (0.8-5) unstable; urgency=low
1280
1281
  * Rebuild with g++-3.3 3.3.3-2 to work around broken g++. (Closes:
1282
    #238318)
1283
1284
 -- Eric Dorland <eric@debian.org>  Wed, 17 Mar 2004 21:38:58 -0500
1285
1286
mozilla-firefox (0.8-4) unstable; urgency=low
1287
1288
  * debian/README.Debian: 
1289
    - Tell people not to remove their ~/.firefox directory. Just move it
1290
      out of the way. (Closes: #235594)
1291
    - Add notes about the sound dsp. (Closes: #236678)
1292
  * debian/mozilla-firefox-runner: 
1293
    - Don't redirect stderr. (Closes: #236160)
1294
    - Add get_locale code from Aurelien Jarno (Closes: #235521)
1295
    - Fix dsp auto-detection code. (Closes: #236678)
1296
  * debian/rules: Add default locale file.
1297
  * debian/mozilla-firefox.dirs: Add locales dir. 
1298
1299
  * browser/app/profile/all.js,
1300
    content/events/src/nsEventStateManager.cpp,
1301
    modules/libpref/src/init/all.js, widget/public/nsGUIEvent.h,
1302
    widget/src/gtk/nsWidget.cpp: Reapply extended mouse events patch from
1303
    Derek Upham. (Closes: #235385, #230876)
1304
  * browser/base/content/browser-sets.inc: Make ESC stop animations
1305
    again. (Closes: #235474)
1306
1307
 -- Eric Dorland <eric@debian.org>  Tue, 16 Mar 2004 00:31:19 -0500
1308
1309
mozilla-firefox (0.8-3) unstable; urgency=low
1310
1311
  * debian/mozilla.firefox.menu: Change the case of
1312
    mozilla-Firefox. (Closes: #234982, #234755)
1313
  * debian/NEWS.Debian: Move to debian/mozilla-firefox.NEWS so that it
1314
    actually gets installed. (Closes: #234700)
1315
  * debian/update-mozilla-firefox-chrome: Setup dummy home directory to
1316
    capture silly .firefox directory. (Closes: #234855)
1317
  * debian/mozilla-firefox.png.uu, debian/mozilla-firefox.xpm: Use the
1318
    new, pretty mozilla-firefox icons. (Closes: #234869)
1319
  * debian/rules: Install the pretty icon in the right places. 
1320
1321
 -- Eric Dorland <eric@debian.org>  Thu, 26 Feb 2004 21:10:27 -0500
1322
1323
mozilla-firefox (0.8-2) unstable; urgency=low
1324
1325
  * The "what he taketh, he giveth back" release.
1326
  * debian/rules:
1327
    - Disable the wallet extension, this really closes #222447.
1328
    - Remove some more cruft left over from the patch system.
1329
    - Reinstall the dom-inspector.
1330
  * debian/control: Add the dom-inspector back, now that it is supported
1331
    upstream.
1332
  * debian/mozilla-firefox-dom-inspector.{install,dirs,postinst,postrm}:
1333
    Bring these files back.
1334
  * docshell/base/nsWebShell.cpp: Only do keyword lookup on when DNS
1335
    entries don't exist. (Closes: #233916, #218033, #211524)
1336
1337
 -- Eric Dorland <eric@debian.org>  Mon, 23 Feb 2004 21:48:03 -0500
1338
1339
mozilla-firefox (0.8-1) unstable; urgency=low
1340
  
1341
  * The "Let's Change Our Name Every Other Day" release.
1342
  * New upstream release, mozilla-firebird has been renamed to
1343
    mozilla-firefox. Let's hope it lasts. (Closes: #231903, #222447)
1344
  * debian/mozilla-firebird.*: Renamed to debian/mozilla-firefox.*.
1345
1346
  * debian/README.Debian: Update for firefox, remove blurb about the
1347
    inspector.
1348
  * debian/NEWS.Debian: Explain how to move your configs over. I may make
1349
    this automatic if enough people complain, but I'm loathe to muck
1350
    around in pople's home directories.
1351
1352
  * debian/control:
1353
    - Rename the package.
1354
    - Tweak description to list Firefox's previous aliases.
1355
    - Remove conflicts on mozilla-firebird-dom-inspector.
1356
1357
  * debian/rules: 
1358
    - s/firebird/firefox/g, s/MozillaFirebird/firebird/g.
1359
    - Comment out some old inspector code. 
1360
    - Remove unused patch subsystem.
1361
    - Disable gtktest. We don't need no stinking tests.
1362
    - Remove disable plaintext editor line, not sure why it's there.
1363
    - Disable LDAP support. We don't use it.
1364
    - Remove executable bit on *.so files.
1365
    - Remove useless preference files.
1366
    - Exclude the inspector files.
1367
    - Don't remove installed-chrome, we don't install it anymore.
1368
    - user-app-dir = .firefox. (Closes: #212301)
1369
    - export MOZILLA_OFFICIAL for the build ID. (Closes: #231133)
1370
1371
  * debian/mozilla-firefox-runner: 
1372
    - s/firebird/firefox/g.
1373
    - Remove composer and editor functions.
1374
    - Use .firefox directory.
1375
1376
  * debian/mozilla-firefox.install: 
1377
    - s/firebird/firefox/g, s/MozillaFirebird/firefox/g.
1378
    - Don't install timebombgen.
1379
    - Install icons directory.
1380
    - Don't install installed-chrome.txt, we just remove it anyway. 
1381
1382
  * debian/mozilla-firefox.desktop, debian/mozilla-firefox.dirs,
1383
    debian/mozilla-firefox.manpages, debian/mozilla-firefox.links,
1384
    debian/mozilla-firefox.menu, debian/mozilla-firefox.mime,
1385
    debian/mozilla-firefoxrc, debian/mozilla-firefox.postinst,
1386
    debian/mozilla-firefox.prerm, debian/update-mozilla-firefox-chrome,
1387
    debian/mozilla-firefox.1, debian/mozilla-firefox-xremote-client:
1388
    s/firebird/firefox/g, s/MozillaFirebird/firefox/g.
1389
1390
  * debian/mozilla-firefox.links: Link mozilla-firefox.1 to firefox.1.
1391
  
1392
  * debian/mozilla-firefox.preinst: Remove, at least with the rename I can
1393
    erase some of my previous blunders.
1394
1395
  * debian/mozilla-firefox.{png.uu,xpm}: Use the package icon.
1396
1397
  * browser/app/nsBrowserApp.cpp: Change package name to Firefox, so now
1398
    the ~/.firefox is used. (Closes: #196550)
1399
1400
  * browser/app/profile/all.js: Merge in autoscroll fixes.
1401
  * browser/base/content/browser-sets.inc: Merge in upstream stop button
1402
    fix.
1403
  * modules/plugin/samples/default/unix/nullplugin.c: Merge in removal of
1404
    commented code.
1405
  * nsprpub/pr/include/md/_linux.cfg, nsprpub/pr/include/md/_linux.h,
1406
    security/coreconf/Linux.mk: Merge in hppa build fixes from upstream.
1407
  * config/autoconf.mk.in: Install into /usr/lib/mozilla-firefox now.
1408
  * content/base/src/nsDocumentViewer.cpp: Remove redundant stop patch
1409
    since it has been merged upstream.
1410
  * content/events/src/nsEventStateManager.cpp,
1411
    modules/libpref/src/init/all.js, widget/src/gtk/nsWidget.cpp: Revert
1412
    back to upstream version. There was a patch here to add support for
1413
    extended mouse buttons, but I'm removing it since I don't trust that
1414
    it works in the new version correctly. Send me another patch if you
1415
    want this functionality back.
1416
  * toolkit/components/passwordmgr/base/nsPasswordManager.cpp: Revert this
1417
    back to upstream, I'm not sure which patches I applied to this file,
1418
    likely something to try and fix the double password prompt.
1419
  * widget/src/xremoteclient/XRemoteClient.cpp,
1420
    widget/src/xremoteclient/XRemoteClient.h: Revert to upstream version,
1421
    I believe it does the right thing now, but the patch I used does not
1422
    apppear to have been used. Restore the properties to _FIREFOX_*
1423
    though.
1424
  * widget/src/gtk/nsGtkMozRemoteHelper.cpp,
1425
    widget/src/gtk2/nsGtkMozRemoteHelper.cpp: Change the _FIREBIRD_* to
1426
    _FIREFOX_* here as well.
1427
  * content/base/src/nsDocument.cpp: Comment out nsDocument::GetDomConfig,
1428
    needed to get things to compile.
1429
1430
 -- Eric Dorland <eric@debian.org>  Sun, 15 Feb 2004 21:28:45 -0500
1431
1432
mozilla-firebird (0.7-7) unstable; urgency=low
1433
1434
  * debian/mozilla-firebird-runner: Open a new window when loading a
1435
    regular file. (Closes: #228853)
1436
1437
 -- Eric Dorland <eric@debian.org>  Thu, 29 Jan 2004 22:12:30 -0500
1438
1439
mozilla-firebird (0.7-6) unstable; urgency=medium
1440
1441
  * The "Indian-giver-christmas" release.
1442
  * Urgency medium since we're closing some critical bugs that need to get
1443
    in before a freeze.
1444
  * Completely remove mozilla-firebird-dom-browser. No one stepped up to
1445
    help fix it's brokeness in 0.7 and I don't use it or particularly care
1446
    about it. So it is no more. If someone steps up to take responsibility
1447
    I might put it back, but otherwise it may RIP. (Closes: #222085)
1448
  * debian/mozilla-firebird-runner: Remove XUL.mfasl uncoditionally
1449
    now. There is a corner case where this file is corrupted on upgrade
1450
    when firebird was running. This is a total hack, and not an elegant
1451
    solution, but at least it fixes the problem. (Closes: #224779,
1452
    #224323)
1453
  * debian/control: Conflict against old mozilla-firebird-dom-inspector
1454
    since it doesn't work anymore.
1455
1456
 -- Eric Dorland <eric@debian.org>  Thu, 25 Dec 2003 15:54:21 -0500
1457
1458
mozilla-firebird (0.7-5) unstable; urgency=low
1459
1460
  * browser/base/content/browser-sets.inc: Patch to make ESC stop actually
1461
    work. (Closes: #223382)
1462
  * debian/rules: Turn down optimizations on sparc. (Closes: #223760)
1463
1464
 -- Eric Dorland <eric@debian.org>  Sun, 14 Dec 2003 23:01:59 -0500
1465
1466
mozilla-firebird (0.7-4) unstable; urgency=low
1467
1468
  * The "All of Takuo's hard work really pays off" release.
1469
  * toolkit/components/passwordmgr/base/nsPasswordManager.cpp: Patch from
1470
    upstream bugzilla (#220214) to fix double password prompt
1471
    problem. (Closes: #222696)
1472
  * xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s.m4: Stolen
1473
    patch from mozilla package to make mozilla-firebird build on
1474
    mips. (Closes: #222743)
1475
  * content/base/src/nsDocumentViewer.cpp: Port yet another patch to allow
1476
    the ESC key to stop animated gifs. (Closes: #223382)
1477
1478
 -- Eric Dorland <eric@debian.org>  Mon,  8 Dec 2003 23:59:16 -0500
1479
1480
mozilla-firebird (0.7-3) unstable; urgency=low
1481
1482
  * debian/control: Add dependency on psmisc since we use fuser. Thanks
1483
    Daniel Schröter.
1484
  * widget/src/xremoteclient/XRemoteClient.{cpp,h}: Apply patch from
1485
    bugzilla to fix -remote behaviour on modern WMs. Thanks Nikolai
1486
    Prokoschenko. (Closes: #197632)
1487
  * nsprpub/pr/src/misc/prdtoa.c: Apply fix from mozilla package (#215067)
1488
    to fix building on arm. This is a partial fix to #222743.
1489
  * debian/patches: Remove these. Put everything in CVS.
1490
1491
 -- Eric Dorland <eric@debian.org>  Fri,  5 Dec 2003 20:03:46 -0500
1492
1493
mozilla-firebird (0.7-2) unstable; urgency=low
1494
1495
  * Apply excellent patch from Alexander Sack <asac@jwsdot.com> to fix the
1496
    issues with mozilla running and firebird not starting. (Closes:
1497
    #216264)
1498
  * browser/app/profile/all.js: Set the default of "general.autoScroll" to
1499
    false because it annoyes me. (Closes: #221661)
1500
1501
 -- Eric Dorland <eric@debian.org>  Wed, 19 Nov 2003 20:59:55 -0500
1502
1503
mozilla-firebird (0.7-1) unstable; urgency=low
1504
1505
  * New upstream release. (Closes: #216019)
1506
  * debian/patches/dom-inspector.diff: Remove, and apply directly into my
1507
    CVS.
1508
  * debian/patches/pref.diff: Removed, doesn't seem applicable anymore.
1509
  * debian/rules: export MOZ_FIREBIRD=1.
1510
  * debian/control: 
1511
    - Change Chimera to Camino. (Closes: #220821)
1512
    - Fix typos in descriptions. (Closes: #218202)
1513
    - Add build-deps on m4. (Closes: #219681)
1514
1515
 -- Eric Dorland <eric@debian.org>  Wed, 12 Nov 2003 23:01:35 -0500
1516
1517
mozilla-firebird (0.6.1-8) unstable; urgency=low
1518
1519
  * Apply patch to make forward and back buttons work on mice. (Closes:
1520
    #211606)
1521
  * debian/rules: Use -O optimization on alpha, so it will build
1522
    again. (Closes: #213603)
1523
  
1524
 -- Eric Dorland <eric@debian.org>  Fri,  3 Oct 2003 00:07:44 -0400
1525
1526
mozilla-firebird (0.6.1-7) unstable; urgency=low
1527
1528
  * Rebuild with the latest and greatest from unstable. This seems to fix
1529
    the problems with bookmarks people were having, at least for me. No
1530
    idea why. Please reopen if this doesn't fix it for you. (Closes:
1531
    #209339, #211706, #211286, #211146, #212011) 
1532
1533
 -- Eric Dorland <eric@debian.org>  Mon, 22 Sep 2003 00:00:08 -0400
1534
1535
mozilla-firebird (0.6.1-6) unstable; urgency=low
1536
1537
  * Patch from Eric Wong <normalperson@yhbt.net> to make plugin requests
1538
    less annoying. (Closes: #196609)
1539
  * debian/rules: Stop building libart.
1540
  * debian/mozilla-firebird.links: Fix path to bookmarks file. (Partial
1541
    fix to #211286)
1542
1543
 -- Eric Dorland <eric@debian.org>  Wed, 17 Sep 2003 20:22:56 -0400
1544
1545
mozilla-firebird (0.6.1-5) unstable; urgency=low
1546
1547
  * The "sorry Chris Gray" release.
1548
  * debian/rules: disable SVG. This was causing drag and drop to lock up
1549
    X and possibly fixes #208630. (Closes: #209371)
1550
  * debian/mozilla-firebird-runner: Remove XUL.mfasl if we have upgraded,
1551
    since it can cause problems. (Closes: #200073, #202130, #207351)
1552
1553
 -- Eric Dorland <eric@debian.org>  Sat, 13 Sep 2003 20:15:37 -0400
1554
1555
mozilla-firebird (0.6.1-4) unstable; urgency=low
1556
1557
  * The "pleasing Chris Gray" release.
1558
  * other-licenses/libart_gpl: Add this library for svg.
1559
  * debian/rules: 
1560
    - Enable svg.
1561
    - Move bookmarks.html file into /etc. (Closes: #207398)
1562
  * debian/mozilla-firebird.links: Add links back to files moved to /etc.
1563
  * security/coreconf/Linux2.6.mk: Add this as a copy of Linux2.5.mk to
1564
    get mozilla-firebird to build on 2.6. (Closes: #207821)
1565
1566
 -- Eric Dorland <eric@debian.org>  Sun, 31 Aug 2003 04:40:30 -0400
1567
1568
mozilla-firebird (0.6.1-3) unstable; urgency=low
1569
1570
  * debian/mozilla-firebird.prerm: Remove mozilla alternative on
1571
    remove. (Closes: #205310)
1572
  * debian/debsearch.{gif.uu,src}: Debian search plugin graciously
1573
    contributed by Fergus McKenzie-Kay <Linux@NerdIT.com>.
1574
  * debian/rules: 
1575
    - uudecode and clean up debsearch.gif.uu.
1576
    - Steal platform specific optimization code from mozilla 
1577
      package. Thanks Brian Nelson. (Closes: #206309) 
1578
  * debian/mozilla-firebird.install: Install the above files. 
1579
  * debian/control: Update Standards-Version to 3.6.1.
1580
1581
 -- Eric Dorland <eric@debian.org>  Sun, 24 Aug 2003 19:09:11 -0400
1582
1583
mozilla-firebird (0.6.1-2) unstable; urgency=low
1584
1585
  * The "Stop Pestering Me Already!" release.
1586
  * debian/control: Only recommend xprt-xprintorg, don't require
1587
    it. (Closes: #204176)
1588
1589
 -- Eric Dorland <eric@debian.org>  Sun, 10 Aug 2003 20:00:11 -0400
1590
1591
mozilla-firebird (0.6.1-1) unstable; urgency=low
1592
1593
  * New upstream release. (Closes: #203518, #201203)
1594
  * debian/control:
1595
    - Standards-Version to 3.6.0.
1596
    - Don't provide www-browser anymore. (Closes: #201035)
1597
    - Depend on xprt-xprintorg so printing will work. (Closes: #202418)
1598
  * debian/mozilla-firebird.preinst: Remove www-browser alternative.
1599
  * debian/mozilla-firebird.postinst: Don't install www-browser alternative.
1600
  * debian/mozilla-firebird.prerm: Don't remove www-browser alternative
1601
    anymore.
1602
  * debian/README.Debian: Added note about configuration breaking on
1603
    upgrade. (Closes: #202130)
1604
  * debian/patches/classic.diff: Removed. Not sure what it's point was.
1605
  * debian/rules: Add --disable-pedantic to the configure options.
1606
1607
 -- Eric Dorland <eric@debian.org>  Sun,  3 Aug 2003 14:58:12 -0400
1608
1609
mozilla-firebird (0.6-8) unstable; urgency=low
1610
1611
  * debian/patches/alpha-build-fix.diff: Steal patch from mozilla to allow
1612
    building on alpha. (Closes: #198638)
1613
  * debian/patches/hppa-build-fix.diff: Steal patch from mozilla to allow
1614
    building on hppa, clean it up so it applies cleanly. (Closes: #199068)
1615
  * debian/mozilla-firebird.png.uu: Added uuencoded nice png icon.
1616
  * debian/rules: Add code to decode and clean up the new icon file.
1617
  * debian/mozilla-firebird.install: Install new icon.
1618
  * debian/mozilla-firebird.desktop: Use the new icon.
1619
1620
 -- Eric Dorland <eric@debian.org>  Fri, 27 Jun 2003 23:21:56 -0400
1621
1622
mozilla-firebird (0.6-7) unstable; urgency=low
1623
1624
  * debian/mozilla-firebird.1: Stole the mozilla manpage for my own
1625
    nefarious purposes. (Closes: #196638)
1626
  * debian/mozilla-firebird.postrm: Add slave links to the
1627
    mozilla-firebird manpage. (Closes: #197145)
1628
  * debian/mozilla-firebird-xremote-client: Set up the environment
1629
    properly so it returns correct information. (Closes: #197632)
1630
  * debian/mozilla-firebird.xpm: Added icon from
1631
    http://iconpacks.mozdev.org/phoenix/iconshots/flame48true.png to have
1632
    a nice menu icon. (Closes: #197565)
1633
  * Updated the README.Debian with some helpful bug reporting tips.
1634
  * debian/rules: Replaced dh_installmanpages with dh_installman.
1635
1636
 -- Eric Dorland <eric@debian.org>  Sun, 22 Jun 2003 15:15:37 -0400
1637
1638
mozilla-firebird (0.6-6) unstable; urgency=low
1639
1640
  * debian/mozilla-firebird.postinst: Add priority 0 alternative on
1641
    mozilla. (Closes: #196444)
1642
  * debian/control: Add build-depends on libxrender-dev, libmng-dev,
1643
    libpng12-dev, libjpeg62-dev.
1644
  * debian/rules: 
1645
    - Build with system jpeg, mng and png libs.
1646
    - Exclude inspector files from mozilla-firebird. 
1647
      (Closes: #196432, #196509)
1648
1649
 -- Eric Dorland <eric@debian.org>  Sat,  7 Jun 2003 15:19:23 -0400
1650
1651
mozilla-firebird (0.6-5) unstable; urgency=low
1652
1653
  * The "Mike Hommey is my homey" release.
1654
  * Thanks to Mike Hommey <mh@glandium.org> for his excellent work on this
1655
    version (it's 99% his), which I've shamelessly stolen.
1656
  * Added a README.Debian file.
1657
  * Added a separate mozilla-firebird-dom-inspector package.
1658
  * debian/patches/dom-inspector.diff:
1659
    - add DOM Inspector to Tools menu. (note: DOM Inspector is still
1660
      not very well integrated with Firebird)
1661
    - remove modern skin references.
1662
  * debian/patches/xpinstall.diff: remove unneeded chrome registrations
1663
    from xpinstall/packager/unix/browser.jst.
1664
  * debian/patches/classic.diff: remove
1665
    themes/classic/global/win/preview.gif from jar file and modify
1666
    preview image reference in rdf file to Preview.png.
1667
  * debian/patches/pref.diff: remove preview image constraints in
1668
    browser/components/prefwindow/skin/pref.css file to avoid deformation
1669
    of preview image in classic theme.
1670
  * debian/mozilla-firebird.preinst: added #DEBHELPER#.
1671
  * debian/mozilla-firebird.install:
1672
    - Don't install the modern.jar and embed-sample.jar files.
1673
    - Remove files related to dom-inspector.
1674
  * debian/rules:
1675
    - enabling xinerama support.
1676
    - disabling build of chatzilla and venkman.
1677
    - moved /var/lib/mozilla-firebird/chrome.d/99default to
1678
      /var/lib/mozilla-firebird/chrome.d/00all
1679
    - remove references to embed-sample.jar in
1680
      /var/lib/mozilla-firebird/chrome.d/00all
1681
    - Add some comments.
1682
    - Change == to =, for more strict /bin/sh's.
1683
  * debian/control: Build-Depend on libidl-dev (>= 0.8.0) because the
1684
    configure script requires at least this version.
1685
  * debian/copyright: Make this a real debian copyright file. 
1686
  
1687
 -- Eric Dorland <eric@debian.org>  Thu,  5 Jun 2003 01:00:32 -0400
1688
1689
mozilla-firebird (0.6-4) unstable; urgency=low
1690
1691
  * debian/rules: Change -O2 to -O for building on powerpc.
1692
  * debian/mozilla-firebird.preinst: Delete
1693
    /usr/lib/mozilla-firebird/defaults/pref on upgrade to facilitate
1694
    transition to prefs in /etc. Thanks to all who reported this.
1695
1696
 -- Eric Dorland <eric@debian.org>  Tue, 27 May 2003 21:45:06 -0400
1697
1698
mozilla-firebird (0.6-3) unstable; urgency=low
1699
1700
  * First attempt at a debian upload. (Closes: #163270)
1701
  * debian/rules:
1702
    + Small fix to Mike Hommey's chrome patch.
1703
    + Suggestion from Bernhard R. Link to install
1704
      /usr/lib/mozilla-firebird/defaults/pref to 
1705
      /etc/mozilla-firebird/pref
1706
    + Add dh_installmime call.
1707
  * debian/mozilla-firebird.mime: Install mime type handlers for firebird.
1708
  * debian/mozilla-firebird.links: Link
1709
    /usr/lib/mozilla-firebird/defaults/pref to /etc/mozilla-firebird/pref
1710
  * debian/mozilla-firebird.install: Don't install the inspector.jar.
1711
1712
 -- Eric Dorland <eric@debian.org>  Mon, 26 May 2003 00:28:40 -0400
1713
1714
mozilla-firebird (0.6-2) unstable; urgency=low
1715
1716
  * debian/rules:
1717
    + Add --with-user-appdir=.mozilla-firebird, since it still 
1718
      defaults to .phoenix.
1719
    + Don't use the ${prefix} variable, use /usr, since ${prefix} 
1720
      doesn't seem to work.
1721
    + Use --without-system-nspr.
1722
  * debian/mozilla-firebird.install:
1723
    + Be picky about what chrome files we install, since there's 
1724
      quite a few we don't need, and a bunch of empty dirs.
1725
  * Excellent patch from Mike Hommey <mh@glandium.org> to add a
1726
    update-mozilla-firebird-chrome script.
1727
  
1728
 -- Eric Dorland <eric@debian.org>  Sat, 24 May 2003 13:00:44 -0400
1729
1730
mozilla-firebird (0.6-1) unstable; urgency=low
1731
1732
  * New upstream release.
1733
  * Renamed to mozilla-firebird.
1734
  * Changed phoenix to mozilla-firebird where appropriate.
1735
  * debian/mozilla-firebird.links: Add link mozilla-firebird to
1736
    MozillaFirebird.
1737
  * debian/control:
1738
    + Standars-Version to 3.5.10.0.
1739
    + Build-depend on gtk2 libs now.
1740
    + Build-depend on libidl-dev.
1741
    + Add Provides x-www-browser.
1742
  * debian/rules:
1743
    + Enable building with the gtk2 libs.
1744
    + Make mozilla-firebird-xremote-client executable in install target.
1745
  * debian/mozilla-firebird.desktop: Added gnome menu entry.
1746
  * debian/mozilla-firebird.{prerm,postinst}: Add alternatives to
1747
    www-browser and x-www-browser.
1748
1749
 -- Eric Dorland <eric@debian.org>  Mon, 19 May 2003 20:43:39 -0400
1750
1751
phoenix (0.5-4) unstable; urgency=low
1752
1753
  * debian/control: Depend on fontconfig.
1754
  * debian/rules: Add source-tarball-from-cvs to build a orig tarball from
1755
    a checked out cvs tree. Now I can provide source package. And there
1756
    was much rejoicing.
1757
1758
 -- Eric Dorland <eric@debian.org>  Fri, 17 Jan 2003 21:06:47 -0500
1759
1760
phoenix (0.5-3) unstable; urgency=low
1761
1762
  * debian/phoenix-xremote-client: Added to send remote commands to
1763
    phoenix. Just a wrapper that calls phoenix-bin -remote.
1764
  * debian/phoenix-runner: 
1765
    + Use phoenix-xremote-client.
1766
    + Replace MOZILLA_DSP with PHOENIX_DSP.
1767
  * debian/phoenixrc: phoenix-runner uses this file to determine what dsp
1768
    to start.
1769
  * debian/phoenix.install: 
1770
    + Install phoenix-xremote-client, and don't install
1771
	  mozilla-xremote-client.
1772
    + Install phoenixrc.
1773
1774
 -- Eric Dorland <eric@debian.org>  Mon, 23 Dec 2002 02:52:21 -0500
1775
1776
phoenix (0.5-2) unstable; urgency=low
1777
1778
  * debian/control: 
1779
    + Add Provides: www-browser.
1780
    + Build-depend on libxft2-dev, libnspr-dev.
1781
  * debian/rules:
1782
    + Use xft and the system nspr.
1783
    + Install phoenix-runner.
1784
  * debian/phoenix-runner: Stolen from the mozilla package to run phoenix.
1785
1786
 -- Eric Dorland <eric@debian.org>  Sat, 21 Dec 2002 02:03:11 -0500
1787
1788
phoenix (0.5-1) unstable; urgency=low
1789
1790
  * New upstream release.
1791
  * debian/phoenix.install: Fix paths to phoenix libs.
1792
  * debian/control: 
1793
    + Standards-Version to 3.5.8
1794
    + Improve build-deps.
1795
  * debian/rules: 
1796
    + Have configure options here, no more .mozconfig.
1797
    + Steal some patch code from Colin.
1798
  * debian/patches/mozappdir.diff: Change the mozappdir.
1799
  
1800
 -- Eric Dorland <eric@debian.org>  Mon,  9 Dec 2002 02:43:13 -0500
1801
1802
phoenix (0.4-3) unstable; urgency=low
1803
1804
  * debian/phoenix.menu: Add menu entry.
1805
  * Rebuild to fix libstdc++ dependency.
1806
  * .mozonfig: Disable more tests.
1807
1808
 -- Eric Dorland <eric@debian.org>  Wed, 20 Nov 2002 19:13:18 -0500
1809
1810
phoenix (0.4-2) unstable; urgency=low
1811
1812
  * debian/control:
1813
    + Add build-depends.
1814
    + Fix section and description.
1815
  * .mozconfig:
1816
    + Use system zlib.
1817
1818
 -- Eric Dorland <eric@debian.org>  Wed, 13 Nov 2002 19:03:52 -0500
1819
1820
phoenix (0.4-1) unstable; urgency=low
1821
1822
  * Initial release.
1823
  
1824
 -- Eric Dorland <eric@debian.org>  Mon, 11 Nov 2002 23:09:41 -0500
1825
++ configure.in
Lines 92-97 Link Here
92
MAKE_VERSION=3.78
92
MAKE_VERSION=3.78
93
WINDRES_VERSION=2.14.90
93
WINDRES_VERSION=2.14.90
94
W32API_VERSION=2.4
94
W32API_VERSION=2.4
95
GNOMEUI_VERSION=2.0.6
95
GNOMEVFS_VERSION=2.0
96
GNOMEVFS_VERSION=2.0
96
GCONF_VERSION=1.2.1
97
GCONF_VERSION=1.2.1
97
LIBGNOME_VERSION=2.0
98
LIBGNOME_VERSION=2.0
Lines 1112-1119 Link Here
1112
        MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1113
        MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1113
    ;;
1114
    ;;
1114
    mips*)
1115
    mips*)
1115
        CFLAGS="$CFLAGS -Wa,-xgot"
1116
        MOZ_DEBUG_FLAGS="-g"   # We want inlining
1116
        CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1117
    ;;
1117
    ;;
1118
    esac
1118
    esac
1119
    ;;
1119
    ;;
Lines 3461-3466 Link Here
3461
    MOZ_ENABLE_XFT=1,
3461
    MOZ_ENABLE_XFT=1,
3462
    MOZ_ENABLE_XFT= )
3462
    MOZ_ENABLE_XFT= )
3463
3463
3464
if test "$MOZ_ENABLE_XFT" && test "$MOZ_ENABLE_FREETYPE2"; then
3465
    AC_MSG_ERROR([Cannot enable XFT and FREETYPE2 at the same time.])
3466
fi
3467
3464
if test "$MOZ_ENABLE_XFT"
3468
if test "$MOZ_ENABLE_XFT"
3465
then
3469
then
3466
    AC_DEFINE(MOZ_ENABLE_XFT)
3470
    AC_DEFINE(MOZ_ENABLE_XFT)
Lines 3475-3480 Link Here
3475
AC_SUBST(MOZ_XFT_LIBS)
3479
AC_SUBST(MOZ_XFT_LIBS)
3476
3480
3477
dnl ========================================================
3481
dnl ========================================================
3482
dnl = pango font rendering
3483
dnl ========================================================
3484
MOZ_ARG_ENABLE_BOOL(pango,
3485
[  --enable-pango          Enable Pango font rendering support],
3486
    MOZ_ENABLE_PANGO=1,
3487
    MOZ_ENABLE_PANGO=)
3488
3489
if test "$MOZ_ENABLE_PANGO"
3490
then
3491
    AC_DEFINE(MOZ_ENABLE_PANGO)
3492
    PKG_CHECK_MODULES(MOZ_PANGO, pango >= 1.5.0)
3493
3494
    dnl Make sure that the pango version is _actually_ new enough
3495
    _SAVE_CFLAGS=$CFLAGS
3496
    _SAVE_LDFLAGS=$LDFLAGS
3497
    CFLAGS="$MOZ_PANGO_CFLAGS $CFLAGS"
3498
    LDFLAGS="$MOZ_PANGO_LIBS $LDFLAGS"
3499
    AC_CHECK_LIB(pangoft2-1.0, pango_fc_font_map_add_decoder_find_func,,
3500
                 AC_MSG_ERROR([Your Pango is too old. Sorry.]))
3501
    CFLAGS=$_SAVE_CFLAGS
3502
    LDFLAGS=$_SAVE_LDFLAGS
3503
3504
    AC_SUBST(MOZ_ENABLE_PANGO)
3505
    AC_SUBST(MOZ_PANGO_CFLAGS)
3506
    AC_SUBST(MOZ_PANGO_LIBS)
3507
fi
3508
3509
dnl ========================================================
3478
dnl = disabling x11 core support, enabled by default
3510
dnl = disabling x11 core support, enabled by default
3479
dnl ========================================================
3511
dnl ========================================================
3480
MOZ_ENABLE_COREXFONTS=${MOZ_ENABLE_COREXFONTS-1}
3512
MOZ_ENABLE_COREXFONTS=${MOZ_ENABLE_COREXFONTS-1}
Lines 3588-3594 Link Here
3588
3620
3589
    AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
3621
    AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
3590
fi
3622
fi
3623
dnl = libgnomeui support module
3624
dnl ========================================================
3625
3626
if test "$MOZ_ENABLE_GTK2"
3627
then
3628
    MOZ_ENABLE_GNOMEUI=1
3629
3630
    MOZ_ARG_DISABLE_BOOL(gnomeui,
3631
    [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
3632
        MOZ_ENABLE_GNOMEUI=,
3633
        MOZ_ENABLE_GNOMEUI=force)
3591
3634
3635
    if test "$MOZ_ENABLE_GNOMEUI"
3636
    then
3637
        PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
3638
        [MOZ_ENABLE_GNOMEUI=1], [
3639
            if test "$MOZ_ENABLE_GNOMEUI" = "force"
3640
            then
3641
                AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
3642
            fi
3643
            MOZ_ENABLE_GNOMEUI=
3644
        ])
3645
    fi
3646
3647
    AC_SUBST(MOZ_ENABLE_GNOMEUI)
3648
    AC_SUBST(MOZ_GNOMEUI_CFLAGS)
3649
    AC_SUBST(MOZ_GNOMEUI_LIBS)
3650
3651
fi
3592
dnl ========================================================
3652
dnl ========================================================
3593
dnl = Setting MOZ_EXTRA_X11CONVERTERS turns on additional 
3653
dnl = Setting MOZ_EXTRA_X11CONVERTERS turns on additional 
3594
dnl = converters in intl/uconv that are used only by X11 gfx 
3654
dnl = converters in intl/uconv that are used only by X11 gfx 
Lines 3999-4004 Link Here
3999
        MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
4059
        MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
4000
    fi
4060
    fi
4001
    ;;
4061
    ;;
4062
*)
4063
    if test "$MOZ_ENABLE_GNOMEUI"; then
4064
4065
        MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
4066
    fi
4067
    ;;
4068
*)
4069
    if test "$MOZ_ENABLE_GNOMEUI"; then
4070
        MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
4071
    fi
4072
    ;;
4002
esac
4073
esac
4003
4074
4004
MOZ_ARG_ENABLE_STRING(image-decoders,
4075
MOZ_ARG_ENABLE_STRING(image-decoders,

Return to bug 89242