commit 1657ba799a873a7758219dc0bdebf6ab91908fa2 (HEAD, refs/remotes/origin/master) Author: Paul Eggert Date: Fri Sep 25 00:21:58 2015 -0700 Merge from gnulib This incorporates: 2015-09-25 c-ctype: rewrite to use inline functions 2015-09-24 maint: add coding cookies to non-ASCII sources 2015-09-24 gitlog-to-changelog: trim only trailing whitespaces * build-aux/gitlog-to-changelog, doc/misc/texinfo.tex: * lib/acl-internal.c, lib/acl-internal.h, lib/c-ctype.c: * lib/c-ctype.h, lib/get-permissions.c, lib/qcopy-acl.c: * lib/set-permissions.c: Copy from gnulib. diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index 0cab1bf..a0e0a05 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -333,7 +333,7 @@ sub git_dir_option($) $rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m; } - my @line = split /\s*\n/, $rest; + my @line = split /[ \t]*\n/, $rest; my $author_line = shift @line; defined $author_line or die "$ME:$.: unexpected EOF\n"; diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index aaabbc9..bff8eb0 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2015-09-05.20} +\def\texinfoversion{2015-09-20.17} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @@ -196,17 +196,6 @@ wide-spread wrap-around } -% Margin to add to right of even pages, to left of odd pages. -\newdimen\bindingoffset -\newdimen\normaloffset -\newdimen\pagewidth \newdimen\pageheight - -% For a final copy, take out the rectangles -% that mark overfull boxes (in case you have decided -% that the text looks ok even though it passes the margin). -% -\def\finalout{\overfullrule=0pt } - % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make @@ -251,6 +240,15 @@ \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} +% Output routine +% + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + % Do @cropmarks to get crop marks. % \newif\ifcropmarks @@ -290,6 +288,9 @@ \noexpand\else \the\toks8 % 2: color marks }% } + +% \gettopheadingmarks, \getbottomheadingmarks - extract needed part of mark. +% % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., @@ -310,6 +311,10 @@ \def\prevsectiondefs{} \def\lastcolordefs{} +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight % Main output routine. % @@ -319,25 +324,56 @@ \newbox\headlinebox \newbox\footlinebox -% \onepageout takes a vbox as an argument. Note that \pagecontents -% does insertions, but you have to call it yourself. +% \onepageout takes a vbox as an argument. +% \shipout a vbox for a single page, adding an optional header, footer, +% cropmarks, and footnote. This also causes index entries for this page +% to be written to the auxiliary files. +% \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % + % Common context changes for both heading and footing. % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars} % - \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi - \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% + % Retrieve the information for the headings from the marks in the page, + % and call Plain TeX's \makeheadline and \makefootline, which use the + % values in \headline and \footline. + % + % This is used to check if we are on the first page of a chapter. + \ifcase0\topmark\fi + \ifx\thischapter\empty + % See comment for \gettopheadingmarks + \ifcase0\firstmark\fi + \let\curchaptername\thischaptername + \ifcase1\firstmark\fi + \let\prevchaptername\thischaptername + \else + \let\curchaptername\thischaptername + \ifcase1\topmark\fi + \let\prevchaptername\thischaptername + \fi % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + % + \ifx\curchaptername\prevchaptername + \else + % If on the first page of a chapter, clear @thischapter so it + % doesn't appear in the headline, because the chapter is already + % shown in the chapter heading. + \def\thischapter{}% + \fi + % + \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% % {% + % Set context for writing to auxiliary files like index files. % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. @@ -407,6 +443,7 @@ \newinsert\margin \dimen\margin=\maxdimen +% Main part of page, including any footnotes \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi @@ -690,6 +727,12 @@ \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. + \addgroupbox + \prevdepth = \dimen1 + \checkinserts +} + +\def\addgroupbox{ % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). @@ -702,9 +745,8 @@ \fi \fi \box\groupbox - \prevdepth = \dimen1 - \checkinserts } + % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. @@ -1046,32 +1088,8 @@ where each line of input produces a line of output.} % @refill is a no-op. \let\refill=\relax -% If working on a large document in chapters, it is convenient to -% be able to disable indexing, cross-referencing, and contents, for test runs. -% This is done with @novalidate (before @setfilename). -% -\newif\iflinks \linkstrue % by default we want the aux files. -\let\novalidate = \linksfalse - -% @setfilename is done at the beginning of every texinfo file. So open -% here some of the files we need to have open while reading the input. -% This makes it possible to make a .fmt file for texinfo. -\def\setfilename{% - \iflinks - \tryauxfile - % Open the new aux file. TeX will close it automatically at exit. - \immediate\openout\auxfile=\jobname.aux - \fi % \openindices needs to do some work in any case. - \let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - \openin 1 texinfo.cnf - \ifeof 1 \else \input texinfo.cnf \fi - \closein 1 - % - \comment % Ignore the actual filename. -} +% @setfilename INFO-FILENAME - ignored +\let\setfilename=\comment % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} @@ -1825,8 +1843,10 @@ end % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf +\let\tenttsl=\defttsl \let\tensl=\defsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} @@ -1957,8 +1977,10 @@ end % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf +\let\tensl=\defsl \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} @@ -2777,11 +2799,6 @@ end % \def\dmn#1{\thinspace #1} -% @l was never documented to mean ``switch to the Lisp font'', -% and it is not used as such in any manual I can find. We need it for -% Polish suppressed-l. --karl, 22sep96. -%\def\l#1{{\li #1}\null} - % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. @@ -3392,7 +3409,7 @@ end \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages -% Now make TeX use those variables +% Now make \makeheadline and \makefootline in Plain TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline @@ -3448,6 +3465,10 @@ end % @everyheadingmarks % @everyfootingmarks +% These define \getoddheadingmarks, \getevenheadingmarks, +% \getoddfootingmarks, and \getevenfootingmarks, each to one of +% \gettopheadingmarks, \getbottomheadingmarks. +% \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} @@ -3737,7 +3758,12 @@ end \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % - \vadjust{\penalty 1200}}% not good to break after first line of item. + \ifinner\else + \vadjust{\penalty 1200}% not good to break after first line of item. + \fi + % We can be in inner vertical mode in a footnote, although an + % @itemize looks awful there. + }% \flushcr } @@ -4436,8 +4462,6 @@ end % Used when writing an index entry out to an index file, to prevent % expansion of Texinfo commands that can appear in an index entry. -% Since there are some commands we want to expand, and others we don't, -% we have to laboriously prevent expansion for those that we don't. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. @@ -4659,6 +4683,7 @@ end % that we make for arg2 (see \parsemargdef ff.). We want all this to be % expanded for the sake of the index, so we end up just seeing "bar". \let\xeatspaces = \eatspaces + \let\xprocessmacroarg\eatspaces } % For testing: output @{ and @} in index sort strings as \{ and \}. @@ -4679,12 +4704,14 @@ end \backslashdisappear \def-{}% \def<{}% + \def\@{}% } \gdef\indexnonalnumreappear{% \useindexbackslash \let-\normaldash \let<\normalless + \def\@{@}% } } @@ -4837,7 +4864,10 @@ end \def\requireopenindexfile#1{% \ifnum\csname #1indfile\endcsname=0 \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 % Open the file + \immediate\openout\csname#1indfile\endcsname \jobname.#1 % Open the file + % Using \immediate here prevents an object entering into the current box, + % which could confound checks such as those in \safewhatsit for preceding + % skips. \fi} % Output \ as {\indexbackslash}, because \ is an escape character in @@ -5037,11 +5067,13 @@ end % there is some text. \putwordIndexNonexistent \else + \catcode`\\ = 0 + \escapechar = `\\ % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. - \read 1 to \temp + \read 1 to \thisline \ifeof 1 \putwordIndexIsEmpty \else @@ -5051,16 +5083,36 @@ end \def\indexbackslash{\ttbackslash}% \let\indexlbrace\{ % Likewise, set these sequences for braces \let\indexrbrace\} % used in the sort key. - \catcode`\\ = 0 - \escapechar = `\\ \begindoublecolumns - \input \jobname.#1s + \let\entryorphanpenalty=\indexorphanpenalty + % + % Read input from the index file line by line. + \loopdo + \ifeof1 + \let\firsttoken\relax + \else + \read 1 to \nextline + \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% + \act + \fi + \thisline + % + \ifeof1\else + \let\thisline\nextline + \repeat + %% \enddoublecolumns \fi \fi \closein 1 \endgroup} +\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} +\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} + +\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} +\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} + % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. @@ -5078,8 +5130,8 @@ end \catcode`\/=13 \def/{{\secrmnotbold \normalslash}}% \def-{{\normaldash\normaldash}}% en dash `--' - \def^{{\chapbf \normalcaret}} - \let~=\normaltilde + \def^{{\chapbf \normalcaret}}% + \def~{{\chapbf \normaltilde}}% \def\_{% \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% \def|{$\vert$}% @@ -5102,9 +5154,9 @@ end % The glue before the bonus allows a little bit of space at the % bottom of a column to reduce an increase in inter-line spacing. \nobreak - \vskip 0pt plus 6\baselineskip + \vskip 0pt plus 5\baselineskip \penalty -300 - \vskip 0pt plus -6\baselineskip + \vskip 0pt plus -5\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column @@ -5112,8 +5164,8 @@ end % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. - \vskip 1.67\baselineskip plus .5\baselineskip - \leftline{\secfonts \secbf #1}% + \vskip 1.67\baselineskip plus 1\baselineskip + \leftline{\secfonts \kern-0.05em \secbf #1}% % \secfonts is inside the argument of \leftline so that the change of % \baselineskip will not affect any glue inserted before the vbox that % \leftline creates. @@ -5123,6 +5175,9 @@ end \egroup % \initialglyphs } +\newdimen\entryrightmargin +\entryrightmargin=0pt + % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. @@ -5134,38 +5189,46 @@ end % affect previous text. \par % - % Do not fill out the last line with white space. - \parfillskip = 0in - % % No extra space above this paragraph. \parskip = 0in % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus0.5pt + % + % Badness calculation for paragraph affected by - + % How much \indexdotfill is stretched, or how much \parfillskip is shrunk + % Number of lines (\linepenalty) + % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % - % \hangindent is only relevant when the entry text and page number - % don't both fit on one line. In that case, bob suggests starting the - % dots pretty far over on the line. Unfortunately, a large - % indentation looks wrong when the entry text itself is broken across - % lines. So we use a small indentation and put up with long leaders. + % Word spacing - no stretch + \spaceskip=\fontdimen2\font minus \fontdimen4\font % - % \hangafter is reset to 1 (which is the value we want) at the start - % of each paragraph, so we need not do anything with that. - \hangindent = 2em + \linepenalty=1000 % Discourage line breaks. + \hyphenpenalty=5000 % Discourage hyphenation. % - % When the entry text needs to be broken, just fill out the first line - % with blank space. - \rightskip = 0pt plus1fil + % Ragged right margin, but not for the last line with the leaders in it. + % When an index entry spans lines, this stretch competes with the stretch + % in \indexdotfill to determine how the line will be split. + \rightskip=\entryrightmargin + \advance\rightskip by 0pt plus .6\hsize % - % A bit of stretch before each entry for the benefit of balancing - % columns. - \vskip 0pt plus0.5pt - % - % When reading the text of entry, convert explicit line breaks - % from @* into spaces. The user might give these in long section - % titles, for instance. - \def\*{\unskip\space\ignorespaces}% - \def\entrybreak{\hfil\break}% + % \parfillskip is at the end of the line with the page number + \parfillskip=0pt + % Cancel the \rightskip stretch + \advance \parfillskip by 0pt plus -.6\hsize + % Determine how far we can stretch into the margin. + % This allows, e.g., "Appendix H GNU Free Documentation License" to fit + % on one line. + \advance \parfillskip by 0pt minus .6\entryrightmargin % % Swallow the left brace of the text (first parameter): \afterassignment\doentry @@ -5173,6 +5236,8 @@ end } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% + % Save the text of the entry in a \vtop. + \global\setbox\entryindexbox=\vtop\bgroup \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry @@ -5189,29 +5254,70 @@ end \ % \else % - % If we must, put the page number on a line of its own, and fill out - % this line with blank space. (The \hfil is overwhelmed with the - % fill leaders glue in \indexdotfill if the page number does fit.) - \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % - % The `\ ' here is removed by the implicit \unskip that TeX does as - % part of (the primitive) \par. Without it, a spurious underfull - % \hbox ensues. \ifpdf - \pdfgettoks#1.% - \ \the\toksA + \pdfgettoks#1.% + \hskip\skip\thinshrinkable\the\toksA \else - \ #1% + \hskip\skip\thinshrinkable #1% \fi \fi + % Parameters for formatting this paragraph, reset for each paragraph. + % + % \hangindent is only relevant when the entry text and page number + % don't both fit on one line. In that case, bob suggests starting the + % dots pretty far over on the line. Unfortunately, a large + % indentation looks wrong when the entry text itself is broken across + % lines. So we use a small indentation and put up with long leaders. + % + \hangafter = 1 + \hangindent = 1em \par + \egroup % The \vtop \endgroup + % delay text of entry until after penalty + \bgroup\aftergroup\insertindexentrybox + \entryorphanpenalty +} + +\newskip\thinshrinkable +\skip\thinshrinkable=.15em minus .15em + +\newbox\entryindexbox +\def\insertindexentrybox{% +\lineskip=.8ex plus .6ex % This comes into effect when the \vtop has a large + % depth due to the paragraph in it having several + % lines. +\box\entryindexbox} + +% Default is no penalty +\let\entryorphanpenalty\egroup + +% Used from \printindex. \firsttoken should be the first token +% after the \entry. If it's not another \entry, we are at the last +% line of a group of index entries, so insert a penalty to discourage +% orphaned index entries. +\long\def\indexorphanpenalty{% + \def\isentry{\entry}% + \ifx\firsttoken\isentry + \else + \unskip\penalty 9000 + % The \unskip here stops breaking before the glue. It relies on the + % \vskip above being there, otherwise there is an error + % "You can't use `\unskip' in vertical mode". There has to be glue + % in the current vertical list that hasn't been added to the + % "current page". See Chapter 24 of the TeXbook. This contradicts + % Section 8.3.7 in "TeX by Topic," though. + \fi + \egroup % now comes the box added with \aftergroup } % Like plain.tex's \dotfill, except uses up at least 1 em. +% Using a finite stretch encourages several words to appear on a second line +% if the entry is broken. \def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus .4\hsize} \def\primary #1{\line{#1\hfil}} @@ -5238,6 +5344,9 @@ end \newbox\partialpage \newdimen\doublecolumnhsize +\newtoks\savedtopmark % Used in \begindoublecolumns +\newtoks\savedfirstmark + \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% @@ -5258,9 +5367,23 @@ end \unvbox\PAGE \kern-\topskip \kern\baselineskip }% + % Save \topmark and \firstmark + \global\savedtopmark=\expandafter{\topmark}% + \global\savedfirstmark=\expandafter{\firstmark}% }% \eject % run that output routine to set \partialpage % + % We recover the two marks that the last output routine saved in order + % to propagate the information in marks added around a chapter heading, + % which could be otherwise be lost by the time the final page is output. + % + \mark{\the\savedtopmark}% Only mark in page passed to following \output. + \output = {% + \setbox0=\box\PAGE % clear box 255 + }abc\eject + % + \mark{\the\savedfirstmark}% + % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % @@ -5404,9 +5527,11 @@ end \divide\dimen@ii by 5 \ifdim\ht3<\dimen@ii % Column heights are too different, so don't make their bottoms - % flush with each other + % flush with each other. The glue at the end of the second column + % allows a second column to stretch, reducing the difference in + % height between the two. \setbox0=\vbox to\dimen@{\unvbox1\vfill}% - \setbox2=\vbox to\dimen@{\unvbox3\vfill}% + \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% \else \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% @@ -5432,6 +5557,9 @@ end \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page + % This outputs a mark at the end of the page that clears \thischapter + % and \thissection, like is done in \startcontents. + \chapmacro{}{Yomitfromtoc}{}% \chapoddpage \endgroup } @@ -5676,9 +5804,6 @@ end % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% - % Well, we could do the following in a group, but that would break - % an assumption that \chapmacro is called at the outermost level. - % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax @@ -5802,7 +5927,11 @@ end % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} + +% Start a new page \def\chappager{\par\vfill\supereject} + +% \chapoddpage - start on an odd page for a new chapter % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. @@ -5838,7 +5967,7 @@ end \CHAPPAGon -% Chapter opening. +% \chapmacro - Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. @@ -6232,7 +6361,7 @@ end \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. - \advance\hsize by -\contentsrightmargin % Don't use the full line length. + \entryrightmargin=\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi @@ -6337,7 +6466,7 @@ end % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} -% + % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% @@ -6352,7 +6481,7 @@ end \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % -\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} @@ -6385,6 +6514,8 @@ end \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup + % Move the page numbers slightly to the right + \advance\entryrightmargin by -0.05em \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup @@ -6504,6 +6635,24 @@ end \endgraf \ifdim\lastskip<\envskipamount \removelastskip + \ifnum\lastpenalty<10000 + % Penalize breaking before the environment, because preceding text + % often leads into it. + \penalty100 + \fi + \vskip\envskipamount + \fi + \fi +}} + +\def\afterenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi @@ -6512,8 +6661,6 @@ end \fi }} -\let\afterenvbreak = \aboveenvbreak - % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax @@ -6557,7 +6704,7 @@ end % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % - \vbox\bgroup + \setbox\groupbox=\vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup @@ -6581,6 +6728,7 @@ end \egroup \cartbot \egroup + \addgroupbox \checkinserts } @@ -7058,7 +7206,7 @@ end \temp } -% \domakedefun \deffn \deffnx \deffnheader +% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. @@ -7407,6 +7555,8 @@ end \def\scanmacro#1{% \newlinechar`\^^M \let\xeatspaces\eatspaces + % Reduce doubled backslashes to one + \def\xprocessmacroarg{\passargtomacro\eatspaces}% % % Process the macro body under the current catcode regime. \scantokens{#1\texinfoc}\aftermacro% @@ -7526,6 +7676,7 @@ end % an argument to another Texinfo command. \def\macroargctxt{% \scanctxt + \catcode`\^^M=\other \catcode`\\=\active } @@ -7605,59 +7756,36 @@ end \fi } -% This makes use of the obscure feature that if the last token of a -% is #, then the preceding argument is delimited by -% an opening brace, and that opening brace is not consumed. -% +% \getargs -- Parse the arguments to a @macro line. Set \macname to +% the name of the macro, and \argl to the braced argument list. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} +% This made use of the feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. -% For macro processing make @ a letter so that we can make -% private-to-Texinfo macro names. -\edef\texiatcatcode{\the\catcode`\@} -\catcode `@=11\relax - -% Parse the optional {params} list. Set up \paramno and \paramlist -% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH -% in the params list to some hook where the argument is to be expanded. If -% there are less than 10 arguments that hook is to be replaced by ##N where N +% Parse the optional {params} list to @macro or @rmacro. +% Set \paramno to the number of arguments, +% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a +% three-param macro.) Define \macarg.BLAH for each BLAH in the params +% list to some hook where the argument is to be expanded. If there are +% less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % -% We need to get `macro parameter char #' into several definitions. -% The technique used is stolen from LaTeX: let \hash be something -% unexpandable, insert that wherever you need a #, and then redefine -% it to # just before using the token list produced. -% -% The same technique is used to protect \eatspaces till just before -% the macro is used. -% -% If there are 10 or more arguments, a different technique is used, where the -% hook remains in the body, and when macro is to be expanded the body is -% processed again to replace the arguments. -% -% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the -% argument N value and then \edef the body (nothing else will expand because of -% the catcode regime underwhich the body was input). +% If there are 10 or more arguments, a different technique is used: see +% \parsemmanyargdef. % -% If you compile with TeX (not eTeX), and you have macros with 10 or more -% arguments, no macro can have more than 256 arguments (else error). -% \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax - \let\xeatspaces\relax + % \hash is redefined to `#' later to get it into definitions + \let\processmacroarg\relax \parsemargdefxxx#1,;,% - % In case that there are 10 or more arguments we parse again the arguments - % list to set new definitions for the \macarg.BLAH macros corresponding to - % each BLAH argument. It was anyhow needed to parse already once this list - % in order to count the arguments, and as macros with at most 9 arguments - % are by far more frequent than macro with 10 or more arguments, defining - % twice the \macarg.BLAH macros does not cost too much processing power. \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments @@ -7668,10 +7796,47 @@ end \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% + {\processmacroarg{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} +% \parsemacbody, \parsermacbody +% +% Read recursive and nonrecursive macro bodies. (They're different since +% rec and nonrec macros end differently.) +% +% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro +% body to be transformed. +% Set \macrobody to the body of the macro, and call \defmacro. +% +{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% +{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% + +% Make @ a letter, so that we can make private-to-Texinfo macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% + +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime under which the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, no macro can have more than 256 arguments (else error). +% +% In case that there are 10 or more arguments we parse again the arguments +% list to set new definitions for the \macarg.BLAH macros corresponding to +% each BLAH argument. It was anyhow needed to parse already once this list +% in order to count the arguments, and as macros with at most 9 arguments +% are by far more frequent than macro with 10 or more arguments, defining +% twice the \macarg.BLAH macros does not cost too much processing power. \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else @@ -7687,15 +7852,6 @@ end \advance\paramno by 1\relax \fi\next} -% These two commands read recursive and nonrecursive macro bodies. -% (They're different since rec and nonrec macros end differently.) -% Set \temp to the body of the macro, and call \defmacro. -\catcode `\@\texiatcatcode -{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% -\xdef\temp{\eatcr{#1}}\endgroup\defmacro}}% -{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% -\xdef\temp{\eatcr{#1}}\endgroup\defmacro}}% -\catcode `\@=11\relax \let\endargs@\relax \let\nil@\relax @@ -7724,9 +7880,6 @@ end \getargvals@@ \fi } - -% Internal for \getargsval@. -% \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. @@ -7834,16 +7987,7 @@ end \next } -% Save the token stack pointer into macro #1: -\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} -% -% Restore the token stack pointer from number in macro #1: -\def\texirestoretoksstackpoint#1{\expandafter\mathchardef - \expandafter\@cclvi#1\relax} -% Variant \newtoks that can be used non-\outer: -\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} - -% Tailing missing arguments are set to empty. +% Trailing missing arguments are set to empty. % \def\setemptyargvalues@{% \ifx\paramlist\nilm@ @@ -7874,44 +8018,73 @@ end \long\def#2{#4}% } -% This defines a Texinfo @macro. \temp has the body of the macro in it. + +%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% + + + +% Remove following spaces at the expansion stage. +% This works because spaces are discarded before each argument when TeX is +% getting the arguments for a macro. +% This must not be immediately followed by a }. +\long\def\gobblespaces#1{#1} + +% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. +% \macrobody has the body of the macro in it, with placeholders for +% its parameters, looking like "\processmacroarg{\hash 1}". +% \paramno is the number of parameters +% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," % There are eight cases: recursive and nonrecursive macros of zero, one, % up to nine, and many arguments. -% Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file -% they're defined in; @include reads the file inside a group. +% they're defined in: @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars + \ifnum\paramno=1 + \def\processmacroarg{\gobblespaces}% + % This removes the pair of braces around the argument. We don't + % use \eatspaces, because this can cause ends of lines to be lost + % when the argument to \eatspaces is read, leading to line-based + % commands like "@itemize" not being read correctly. + \else + \def\processmacroarg{\xprocessmacroarg}% + \let\xprocessmacroarg\relax + \fi \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\temp}}% + \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup\noexpand\scanmacro{\temp}}% + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname{% + \noexpand\gobblespaces##1\empty}% + % The \empty is for \gobblespaces in case #1 is empty + }% + \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% + \egroup\noexpand\scanmacro{\macrobody}}% \else \ifnum\paramno<10\relax % at most 9 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt - \noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \csname\the\macname @@@\endcsname + \paramlist{\egroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi @@ -7919,36 +8092,41 @@ end \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\temp}}% + \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname{% + \noexpand\gobblespaces##1\empty}% + % The \empty is for \gobblespaces in case #1 is empty + }% + \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% \egroup - \noexpand\scanmacro{\temp}% + \noexpand\scanmacro{\macrobody}% }% \else % at most 9 \ifnum\paramno<10\relax \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt - \expandafter\noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter - \csname\the\macname xxx\endcsname + \csname\the\macname @@@\endcsname \paramlist{% \egroup - \noexpand\scanmacro{\temp}% + \noexpand\scanmacro{\macrobody}% }% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi @@ -8119,6 +8297,7 @@ end \pdfmkdest{#1}% \iflinks {% + \requireauxfile \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef @@ -8383,6 +8562,7 @@ end % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% + \requireauxfile {% \indexnofonts \otherbackslash @@ -8446,6 +8626,23 @@ end \fi } +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate at the beginning of the file. +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% Used when writing to the aux file, or when using data from it. +\def\requireauxfile{% + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi + \global\let\requireauxfile=\relax % Only do this once. +} + % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% @@ -8919,6 +9116,7 @@ end % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% + \requireauxfile \atdummies % % since we read the caption text in the macro world, where ^^M @@ -10477,6 +10675,16 @@ directory should work if nowhere else does.} % file name, in case not using a pre-dumped format. @catcode`+=@active @catcode`@_=@active + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets + % called at the beginning of every Texinfo file. Not opening texinfo.cnf + % directly in this file, texinfo.tex, makes it possible to make a format + % file for Texinfo. + % + @openin 1 texinfo.cnf + @ifeof 1 @else @input texinfo.cnf @fi + @closein 1 } diff --git a/lib/acl-internal.c b/lib/acl-internal.c index 1eaa671..c1b7017 100644 --- a/lib/acl-internal.c +++ b/lib/acl-internal.c @@ -1,4 +1,4 @@ -/* Test whether a file has a nontrivial access control list. +/* Test whether a file has a nontrivial ACL. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff --git a/lib/acl-internal.h b/lib/acl-internal.h index 38a4ab2..560d146 100644 --- a/lib/acl-internal.h +++ b/lib/acl-internal.h @@ -1,4 +1,4 @@ -/* Internal implementation of access control lists. +/* Internal implementation of access control lists. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff --git a/lib/c-ctype.c b/lib/c-ctype.c index 1fb5fe6..5d9d4d8 100644 --- a/lib/c-ctype.c +++ b/lib/c-ctype.c @@ -1,395 +1,3 @@ -/* Character handling in C locale. - - Copyright 2000-2003, 2006, 2009-2015 Free Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, see . */ - #include - -/* Specification. */ -#define NO_C_CTYPE_MACROS +#define C_CTYPE_INLINE _GL_EXTERN_INLINE #include "c-ctype.h" - -/* The function isascii is not locale dependent. Its use in EBCDIC is - questionable. */ -bool -c_isascii (int c) -{ - return (c >= 0x00 && c <= 0x7f); -} - -bool -c_isalnum (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')); -#else - return ((c >= '0' && c <= '9') - || (c >= 'A' && c <= 'Z') - || (c >= 'a' && c <= 'z')); -#endif -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isalpha (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'); -#else - return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); -#endif -#else - switch (c) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isblank (int c) -{ - return (c == ' ' || c == '\t'); -} - -bool -c_iscntrl (int c) -{ -#if C_CTYPE_ASCII - return ((c & ~0x1f) == 0 || c == 0x7f); -#else - switch (c) - { - case ' ': case '!': case '"': case '#': case '$': case '%': - case '&': case '\'': case '(': case ')': case '*': case '+': - case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 0; - default: - return 1; - } -#endif -} - -bool -c_isdigit (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS - return (c >= '0' && c <= '9'); -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - return 1; - default: - return 0; - } -#endif -} - -bool -c_islower (int c) -{ -#if C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'a' && c <= 'z'); -#else - switch (c) - { - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isgraph (int c) -{ -#if C_CTYPE_ASCII - return (c >= '!' && c <= '~'); -#else - switch (c) - { - case '!': case '"': case '#': case '$': case '%': case '&': - case '\'': case '(': case ')': case '*': case '+': case ',': - case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isprint (int c) -{ -#if C_CTYPE_ASCII - return (c >= ' ' && c <= '~'); -#else - switch (c) - { - case ' ': case '!': case '"': case '#': case '$': case '%': - case '&': case '\'': case '(': case ')': case '*': case '+': - case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_ispunct (int c) -{ -#if C_CTYPE_ASCII - return ((c >= '!' && c <= '~') - && !((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'))); -#else - switch (c) - { - case '!': case '"': case '#': case '$': case '%': case '&': - case '\'': case '(': case ')': case '*': case '+': case ',': - case '-': case '.': case '/': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case '[': case '\\': case ']': case '^': case '_': case '`': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isspace (int c) -{ - return (c == ' ' || c == '\t' - || c == '\n' || c == '\v' || c == '\f' || c == '\r'); -} - -bool -c_isupper (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE - return (c >= 'A' && c <= 'Z'); -#else - switch (c) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isxdigit (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F')); -#else - return ((c >= '0' && c <= '9') - || (c >= 'A' && c <= 'F') - || (c >= 'a' && c <= 'f')); -#endif -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - return 1; - default: - return 0; - } -#endif -} - -int -c_tolower (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c); -#else - switch (c) - { - case 'A': return 'a'; - case 'B': return 'b'; - case 'C': return 'c'; - case 'D': return 'd'; - case 'E': return 'e'; - case 'F': return 'f'; - case 'G': return 'g'; - case 'H': return 'h'; - case 'I': return 'i'; - case 'J': return 'j'; - case 'K': return 'k'; - case 'L': return 'l'; - case 'M': return 'm'; - case 'N': return 'n'; - case 'O': return 'o'; - case 'P': return 'p'; - case 'Q': return 'q'; - case 'R': return 'r'; - case 'S': return 's'; - case 'T': return 't'; - case 'U': return 'u'; - case 'V': return 'v'; - case 'W': return 'w'; - case 'X': return 'x'; - case 'Y': return 'y'; - case 'Z': return 'z'; - default: return c; - } -#endif -} - -int -c_toupper (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c); -#else - switch (c) - { - case 'a': return 'A'; - case 'b': return 'B'; - case 'c': return 'C'; - case 'd': return 'D'; - case 'e': return 'E'; - case 'f': return 'F'; - case 'g': return 'G'; - case 'h': return 'H'; - case 'i': return 'I'; - case 'j': return 'J'; - case 'k': return 'K'; - case 'l': return 'L'; - case 'm': return 'M'; - case 'n': return 'N'; - case 'o': return 'O'; - case 'p': return 'P'; - case 'q': return 'Q'; - case 'r': return 'R'; - case 's': return 'S'; - case 't': return 'T'; - case 'u': return 'U'; - case 'v': return 'V'; - case 'w': return 'W'; - case 'x': return 'X'; - case 'y': return 'Y'; - case 'z': return 'Z'; - default: return c; - } -#endif -} diff --git a/lib/c-ctype.h b/lib/c-ctype.h index 4764473..50ebbb5 100644 --- a/lib/c-ctype.h +++ b/lib/c-ctype.h @@ -25,6 +25,13 @@ along with this program; if not, see . */ #include +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef C_CTYPE_INLINE +# define C_CTYPE_INLINE _GL_INLINE +#endif #ifdef __cplusplus extern "C" { @@ -39,38 +46,6 @@ extern "C" { characters. */ -/* Check whether the ASCII optimizations apply. */ - -/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that - '0', '1', ..., '9' have consecutive integer values. */ -#define C_CTYPE_CONSECUTIVE_DIGITS 1 - -#if ('A' <= 'Z') \ - && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \ - && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \ - && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \ - && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \ - && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \ - && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \ - && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \ - && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \ - && ('Y' + 1 == 'Z') -#define C_CTYPE_CONSECUTIVE_UPPERCASE 1 -#endif - -#if ('a' <= 'z') \ - && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \ - && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \ - && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \ - && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \ - && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \ - && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \ - && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \ - && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \ - && ('y' + 1 == 'z') -#define C_CTYPE_CONSECUTIVE_LOWERCASE 1 -#endif - #if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ @@ -96,11 +71,99 @@ extern "C" { && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126) /* The character set is ASCII or one of its variants or extensions, not EBCDIC. Testing the value of '\n' and '\r' is not relevant. */ -#define C_CTYPE_ASCII 1 +# define C_CTYPE_ASCII 1 +#elif ! (' ' == '\x40' && '0' == '\xf0' \ + && 'A' == '\xc1' && 'J' == '\xd1' && 'S' == '\xe2' \ + && 'a' == '\x81' && 'j' == '\x91' && 's' == '\xa2') +# error "Only ASCII and EBCDIC are supported" +#endif + +#define _C_CTYPE_SIGNED_EBCDIC ('A' < 0) + +#if C_CTYPE_ASCII +# define _C_CTYPE_CNTRL \ + case '\x00': case '\x01': case '\x02': case '\x03': \ + case '\x04': case '\x05': case '\x06': case '\x07': \ + case '\x08': case '\x09': case '\x0a': case '\x0b': \ + case '\x0c': case '\x0d': case '\x0e': case '\x0f': \ + case '\x10': case '\x11': case '\x12': case '\x13': \ + case '\x14': case '\x15': case '\x16': case '\x17': \ + case '\x18': case '\x19': case '\x1a': case '\x1b': \ + case '\x1c': case '\x1d': case '\x1e': case '\x1f': \ + case '\x7f' +#else + /* Use EBCDIC code page 1047's assignments for ASCII control chars; + assume all EBCDIC code pages agree about these assignments. */ +# define _C_CTYPE_CNTRL \ + case '\x00': case '\x01': case '\x02': case '\x03': \ + case '\x05': case '\x07': case '\x0b': case '\x0c': \ + case '\x0d': case '\x0e': case '\x0f': case '\x10': \ + case '\x11': case '\x12': case '\x13': case '\x16': \ + case '\x18': case '\x19': case '\x1c': case '\x1d': \ + case '\x1e': case '\x1f': case '\x25': case '\x26': \ + case '\x27': case '\x2d': case '\x2e': case '\x2f': \ + case '\x32': case '\x37': case '\x3c': case '\x3d': \ + case '\x3f' #endif +/* Cases for hex letter digits, digits, lower, and upper, offset by N. */ + +#define _C_CTYPE_A_THRU_F_N(n) \ + case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \ + case 'e' + (n): case 'f' + (n): \ + case 'A' + (n): case 'B' + (n): case 'C' + (n): case 'D' + (n): \ + case 'E' + (n): case 'F' + (n) +#define _C_CTYPE_DIGIT_N(n) \ + case '0' + (n): case '1' + (n): case '2' + (n): case '3' + (n): \ + case '4' + (n): case '5' + (n): case '6' + (n): case '7' + (n): \ + case '8' + (n): case '9' + (n) +#define _C_CTYPE_LOWER_N(n) \ + case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \ + case 'e' + (n): case 'f' + (n): case 'g' + (n): case 'h' + (n): \ + case 'i' + (n): case 'j' + (n): case 'k' + (n): case 'l' + (n): \ + case 'm' + (n): case 'n' + (n): case 'o' + (n): case 'p' + (n): \ + case 'q' + (n): case 'r' + (n): case 's' + (n): case 't' + (n): \ + case 'u' + (n): case 'v' + (n): case 'w' + (n): case 'x' + (n): \ + case 'y' + (n): case 'z' + (n) +#define _C_CTYPE_UPPER_N(n) \ + case 'A' + (n): case 'B' + (n): case 'C' + (n): case 'D' + (n): \ + case 'E' + (n): case 'F' + (n): case 'G' + (n): case 'H' + (n): \ + case 'I' + (n): case 'J' + (n): case 'K' + (n): case 'L' + (n): \ + case 'M' + (n): case 'N' + (n): case 'O' + (n): case 'P' + (n): \ + case 'Q' + (n): case 'R' + (n): case 'S' + (n): case 'T' + (n): \ + case 'U' + (n): case 'V' + (n): case 'W' + (n): case 'X' + (n): \ + case 'Y' + (n): case 'Z' + (n) + +/* Given MACRO_N, expand to all the cases for the corresponding class. */ +#if _C_CTYPE_SIGNED_EBCDIC +# define _C_CTYPE_CASES(macro_n) macro_n (0): macro_n (256) +#else +# define _C_CTYPE_CASES(macro_n) macro_n (0) +#endif -/* Function declarations. */ +/* Cases for hex letter digits, digits, lower, and upper, with another + case for unsigned char if the original char is negative. */ + +#define _C_CTYPE_A_THRU_F _C_CTYPE_CASES (_C_CTYPE_A_THRU_F_N) +#define _C_CTYPE_DIGIT _C_CTYPE_CASES (_C_CTYPE_DIGIT_N) +#define _C_CTYPE_LOWER _C_CTYPE_CASES (_C_CTYPE_LOWER_N) +#define _C_CTYPE_UPPER _C_CTYPE_CASES (_C_CTYPE_UPPER_N) + +/* The punct class differs because some punctuation characters may be + negative while others are nonnegative. Instead of attempting to + define _C_CTYPE_PUNCT, define just the plain chars here, and do any + cases-plus-256 by hand after using this macro. */ +#define _C_CTYPE_PUNCT_PLAIN \ + case '!': case '"': case '#': case '$': \ + case '%': case '&': case '\'': case '(': \ + case ')': case '*': case '+': case ',': \ + case '-': case '.': case '/': case ':': \ + case ';': case '<': case '=': case '>': \ + case '?': case '@': case '[': case '\\': \ + case ']': case '^': case '_': case '`': \ + case '{': case '|': case '}': case '~' + +/* Function definitions. */ /* Unlike the functions in , which require an argument in the range of the 'unsigned char' type, the functions here operate on values that are @@ -117,179 +180,608 @@ extern "C" { if (c_isalpha (*s)) ... */ -extern bool c_isascii (int c) _GL_ATTRIBUTE_CONST; /* not locale dependent */ +C_CTYPE_INLINE bool +c_isalnum (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + return true; + + default: + return false; + } +} -extern bool c_isalnum (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isalpha (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isblank (int c) _GL_ATTRIBUTE_CONST; -extern bool c_iscntrl (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isdigit (int c) _GL_ATTRIBUTE_CONST; -extern bool c_islower (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isgraph (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isprint (int c) _GL_ATTRIBUTE_CONST; -extern bool c_ispunct (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isspace (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isupper (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isxdigit (int c) _GL_ATTRIBUTE_CONST; +C_CTYPE_INLINE bool +c_isalpha (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + return true; + + default: + return false; + } +} -extern int c_tolower (int c) _GL_ATTRIBUTE_CONST; -extern int c_toupper (int c) _GL_ATTRIBUTE_CONST; +/* The function isascii is not locale dependent. + Its use in EBCDIC is questionable. */ +C_CTYPE_INLINE bool +c_isascii (int c) +{ + switch (c) + { + case ' ': + _C_CTYPE_CNTRL: + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + + _C_CTYPE_PUNCT_PLAIN: +#if '!' < 0 + case '!' + 256: +#endif +#if '"' < 0 + case '"' + 256: +#endif +#if '#' < 0 + case '#' + 256: +#endif +#if '$' < 0 + case '$' + 256: +#endif +#if '%' < 0 + case '%' + 256: +#endif +#if '&' < 0 + case '&' + 256: +#endif +#if '\'' < 0 + case '\'' + 256: +#endif +#if '(' < 0 + case '(' + 256: +#endif +#if ')' < 0 + case ')' + 256: +#endif +#if '*' < 0 + case '*' + 256: +#endif +#if '+' < 0 + case '+' + 256: +#endif +#if ',' < 0 + case ',' + 256: +#endif +#if '-' < 0 + case '-' + 256: +#endif +#if '.' < 0 + case '.' + 256: +#endif +#if '/' < 0 + case '/' + 256: +#endif +#if ':' < 0 + case ':' + 256: +#endif +#if ';' < 0 + case ';' + 256: +#endif +#if '<' < 0 + case '<' + 256: +#endif +#if '=' < 0 + case '=' + 256: +#endif +#if '>' < 0 + case '>' + 256: +#endif +#if '?' < 0 + case '?' + 256: +#endif +#if '@' < 0 + case '@' + 256: +#endif +#if '[' < 0 + case '[' + 256: +#endif +#if '\\' < 0 + case '\\' + 256: +#endif +#if ']' < 0 + case ']' + 256: +#endif +#if '^' < 0 + case '^' + 256: +#endif +#if '_' < 0 + case '_' + 256: +#endif +#if '`' < 0 + case '`' + 256: +#endif +#if '{' < 0 + case '{' + 256: +#endif +#if '|' < 0 + case '|' + 256: +#endif +#if '}' < 0 + case '}' + 256: +#endif +#if '~' < 0 + case '~' + 256: +#endif + return true; + default: + return false; + } +} -#if (defined __GNUC__ && !defined __STRICT_ANSI__ && defined __OPTIMIZE__ \ - && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS) +C_CTYPE_INLINE bool +c_isblank (int c) +{ + return c == ' ' || c == '\t'; +} -/* ASCII optimizations. */ +C_CTYPE_INLINE bool +c_iscntrl (int c) +{ + switch (c) + { + _C_CTYPE_CNTRL: + return true; + default: + return false; + } +} -#undef c_isascii -#define c_isascii(c) \ - ({ int __c = (c); \ - (__c >= 0x00 && __c <= 0x7f); \ - }) +C_CTYPE_INLINE bool +c_isdigit (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isalnum -#define c_isalnum(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \ - }) -#else -#undef c_isalnum -#define c_isalnum(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || (__c >= 'A' && __c <= 'Z') \ - || (__c >= 'a' && __c <= 'z')); \ - }) +C_CTYPE_INLINE bool +c_isgraph (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + + _C_CTYPE_PUNCT_PLAIN: +#if '!' < 0 + case '!' + 256: #endif +#if '"' < 0 + case '"' + 256: #endif - -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isalpha -#define c_isalpha(c) \ - ({ int __c = (c); \ - ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \ - }) -#else -#undef c_isalpha -#define c_isalpha(c) \ - ({ int __c = (c); \ - ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \ - }) +#if '#' < 0 + case '#' + 256: +#endif +#if '$' < 0 + case '$' + 256: +#endif +#if '%' < 0 + case '%' + 256: +#endif +#if '&' < 0 + case '&' + 256: +#endif +#if '\'' < 0 + case '\'' + 256: +#endif +#if '(' < 0 + case '(' + 256: +#endif +#if ')' < 0 + case ')' + 256: +#endif +#if '*' < 0 + case '*' + 256: +#endif +#if '+' < 0 + case '+' + 256: +#endif +#if ',' < 0 + case ',' + 256: +#endif +#if '-' < 0 + case '-' + 256: +#endif +#if '.' < 0 + case '.' + 256: +#endif +#if '/' < 0 + case '/' + 256: +#endif +#if ':' < 0 + case ':' + 256: +#endif +#if ';' < 0 + case ';' + 256: +#endif +#if '<' < 0 + case '<' + 256: +#endif +#if '=' < 0 + case '=' + 256: +#endif +#if '>' < 0 + case '>' + 256: +#endif +#if '?' < 0 + case '?' + 256: +#endif +#if '@' < 0 + case '@' + 256: +#endif +#if '[' < 0 + case '[' + 256: +#endif +#if '\\' < 0 + case '\\' + 256: +#endif +#if ']' < 0 + case ']' + 256: +#endif +#if '^' < 0 + case '^' + 256: +#endif +#if '_' < 0 + case '_' + 256: +#endif +#if '`' < 0 + case '`' + 256: +#endif +#if '{' < 0 + case '{' + 256: +#endif +#if '|' < 0 + case '|' + 256: +#endif +#if '}' < 0 + case '}' + 256: #endif +#if '~' < 0 + case '~' + 256: #endif + return true; -#undef c_isblank -#define c_isblank(c) \ - ({ int __c = (c); \ - (__c == ' ' || __c == '\t'); \ - }) + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_iscntrl -#define c_iscntrl(c) \ - ({ int __c = (c); \ - ((__c & ~0x1f) == 0 || __c == 0x7f); \ - }) -#endif +C_CTYPE_INLINE bool +c_islower (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS -#undef c_isdigit -#define c_isdigit(c) \ - ({ int __c = (c); \ - (__c >= '0' && __c <= '9'); \ - }) +C_CTYPE_INLINE bool +c_isprint (int c) +{ + switch (c) + { + case ' ': + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + + _C_CTYPE_PUNCT_PLAIN: +#if '!' < 0 + case '!' + 256: #endif - -#if C_CTYPE_CONSECUTIVE_LOWERCASE -#undef c_islower -#define c_islower(c) \ - ({ int __c = (c); \ - (__c >= 'a' && __c <= 'z'); \ - }) +#if '"' < 0 + case '"' + 256: #endif - -#if C_CTYPE_ASCII -#undef c_isgraph -#define c_isgraph(c) \ - ({ int __c = (c); \ - (__c >= '!' && __c <= '~'); \ - }) +#if '#' < 0 + case '#' + 256: #endif - -#if C_CTYPE_ASCII -#undef c_isprint -#define c_isprint(c) \ - ({ int __c = (c); \ - (__c >= ' ' && __c <= '~'); \ - }) +#if '$' < 0 + case '$' + 256: +#endif +#if '%' < 0 + case '%' + 256: +#endif +#if '&' < 0 + case '&' + 256: +#endif +#if '\'' < 0 + case '\'' + 256: +#endif +#if '(' < 0 + case '(' + 256: +#endif +#if ')' < 0 + case ')' + 256: +#endif +#if '*' < 0 + case '*' + 256: +#endif +#if '+' < 0 + case '+' + 256: +#endif +#if ',' < 0 + case ',' + 256: +#endif +#if '-' < 0 + case '-' + 256: +#endif +#if '.' < 0 + case '.' + 256: +#endif +#if '/' < 0 + case '/' + 256: +#endif +#if ':' < 0 + case ':' + 256: +#endif +#if ';' < 0 + case ';' + 256: #endif +#if '<' < 0 + case '<' + 256: +#endif +#if '=' < 0 + case '=' + 256: +#endif +#if '>' < 0 + case '>' + 256: +#endif +#if '?' < 0 + case '?' + 256: +#endif +#if '@' < 0 + case '@' + 256: +#endif +#if '[' < 0 + case '[' + 256: +#endif +#if '\\' < 0 + case '\\' + 256: +#endif +#if ']' < 0 + case ']' + 256: +#endif +#if '^' < 0 + case '^' + 256: +#endif +#if '_' < 0 + case '_' + 256: +#endif +#if '`' < 0 + case '`' + 256: +#endif +#if '{' < 0 + case '{' + 256: +#endif +#if '|' < 0 + case '|' + 256: +#endif +#if '}' < 0 + case '}' + 256: +#endif +#if '~' < 0 + case '~' + 256: +#endif + return true; -#if C_CTYPE_ASCII -#undef c_ispunct -#define c_ispunct(c) \ - ({ int _c = (c); \ - (c_isgraph (_c) && ! c_isalnum (_c)); \ - }) -#endif - -#undef c_isspace -#define c_isspace(c) \ - ({ int __c = (c); \ - (__c == ' ' || __c == '\t' \ - || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \ - }) - -#if C_CTYPE_CONSECUTIVE_UPPERCASE -#undef c_isupper -#define c_isupper(c) \ - ({ int __c = (c); \ - (__c >= 'A' && __c <= 'Z'); \ - }) -#endif - -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isxdigit -#define c_isxdigit(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \ - }) -#else -#undef c_isxdigit -#define c_isxdigit(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || (__c >= 'A' && __c <= 'F') \ - || (__c >= 'a' && __c <= 'f')); \ - }) + default: + return false; + } +} + +C_CTYPE_INLINE bool +c_ispunct (int c) +{ + switch (c) + { + _C_CTYPE_PUNCT_PLAIN: +#if '!' < 0 + case '!' + 256: +#endif +#if '"' < 0 + case '"' + 256: #endif +#if '#' < 0 + case '#' + 256: #endif +#if '$' < 0 + case '$' + 256: +#endif +#if '%' < 0 + case '%' + 256: +#endif +#if '&' < 0 + case '&' + 256: +#endif +#if '\'' < 0 + case '\'' + 256: +#endif +#if '(' < 0 + case '(' + 256: +#endif +#if ')' < 0 + case ')' + 256: +#endif +#if '*' < 0 + case '*' + 256: +#endif +#if '+' < 0 + case '+' + 256: +#endif +#if ',' < 0 + case ',' + 256: +#endif +#if '-' < 0 + case '-' + 256: +#endif +#if '.' < 0 + case '.' + 256: +#endif +#if '/' < 0 + case '/' + 256: +#endif +#if ':' < 0 + case ':' + 256: +#endif +#if ';' < 0 + case ';' + 256: +#endif +#if '<' < 0 + case '<' + 256: +#endif +#if '=' < 0 + case '=' + 256: +#endif +#if '>' < 0 + case '>' + 256: +#endif +#if '?' < 0 + case '?' + 256: +#endif +#if '@' < 0 + case '@' + 256: +#endif +#if '[' < 0 + case '[' + 256: +#endif +#if '\\' < 0 + case '\\' + 256: +#endif +#if ']' < 0 + case ']' + 256: +#endif +#if '^' < 0 + case '^' + 256: +#endif +#if '_' < 0 + case '_' + 256: +#endif +#if '`' < 0 + case '`' + 256: +#endif +#if '{' < 0 + case '{' + 256: +#endif +#if '|' < 0 + case '|' + 256: +#endif +#if '}' < 0 + case '}' + 256: +#endif +#if '~' < 0 + case '~' + 256: +#endif + return true; -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#undef c_tolower -#define c_tolower(c) \ - ({ int __c = (c); \ - (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \ - }) -#undef c_toupper -#define c_toupper(c) \ - ({ int __c = (c); \ - (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \ - }) + default: + return false; + } +} + +C_CTYPE_INLINE bool +c_isspace (int c) +{ + switch (c) + { + case ' ': case '\t': case '\n': case '\v': case '\f': case '\r': + return true; + default: + return false; + } +} + +C_CTYPE_INLINE bool +c_isupper (int c) +{ + switch (c) + { + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} + +C_CTYPE_INLINE bool +c_isxdigit (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_A_THRU_F: + return true; + + default: + return false; + } +} + +C_CTYPE_INLINE int +c_tolower (int c) +{ + switch (c) + { + _C_CTYPE_UPPER_N (0): +#if _C_CTYPE_SIGNED_EBCDIC + c += 256; + /* Fall through. */ + _C_CTYPE_UPPER_N (256): #endif + return c - 'A' + 'a'; -#endif /* optimizing for speed */ + default: + return c; + } +} +C_CTYPE_INLINE int +c_toupper (int c) +{ + switch (c) + { + _C_CTYPE_LOWER_N (0): +#if _C_CTYPE_SIGNED_EBCDIC + c += 256; + /* Fall through. */ + _C_CTYPE_LOWER_N (256): +#endif + return c - 'a' + 'A'; + + default: + return c; + } +} #ifdef __cplusplus } #endif +_GL_INLINE_HEADER_END + #endif /* C_CTYPE_H */ diff --git a/lib/get-permissions.c b/lib/get-permissions.c index 459513c..9dfb076 100644 --- a/lib/get-permissions.c +++ b/lib/get-permissions.c @@ -1,4 +1,4 @@ -/* get-permissions.c - get permissions of a file +/* Get permissions of a file. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff --git a/lib/qcopy-acl.c b/lib/qcopy-acl.c index c450742..9db9033 100644 --- a/lib/qcopy-acl.c +++ b/lib/qcopy-acl.c @@ -1,4 +1,4 @@ -/* copy-acl.c - copy access control list from one file to another file +/* Copy access control list from one file to another. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff --git a/lib/set-permissions.c b/lib/set-permissions.c index 1aa5b49..8e6ecf3 100644 --- a/lib/set-permissions.c +++ b/lib/set-permissions.c @@ -1,4 +1,4 @@ -/* set-permissions.c - set permissions of a file +/* Set permissions of a file. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. commit da38b6a7cdcdc7670a3e9088777b3f2829b08bbd Author: Paul Eggert Date: Thu Sep 24 11:12:36 2015 -0700 Update publicsuffix.txt from upstream * etc/publicsuffix.txt: Update from https://publicsuffix.org/list/effective_tld_names.dat dated 2015-09-24 17:29:21 UTC. diff --git a/etc/publicsuffix.txt b/etc/publicsuffix.txt index 5c0baaf..98929de 100644 --- a/etc/publicsuffix.txt +++ b/etc/publicsuffix.txt @@ -713,7 +713,19 @@ cx gov.cx // cy : http://en.wikipedia.org/wiki/.cy -*.cy +ac.cy +biz.cy +com.cy +ekloges.cy +gov.cy +ltd.cy +name.cy +net.cy +org.cy +parliament.cy +press.cy +pro.cy +tm.cy // cz : http://en.wikipedia.org/wiki/.cz cz @@ -826,6 +838,7 @@ edu.et biz.et name.et info.et +net.et // eu : http://en.wikipedia.org/wiki/.eu eu @@ -932,6 +945,11 @@ org.gi // gl : http://en.wikipedia.org/wiki/.gl // http://nic.gl gl +co.gl +com.gl +edu.gl +net.gl +org.gl // gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm gm @@ -1130,7 +1148,7 @@ tt.im tv.im // in : http://en.wikipedia.org/wiki/.in -// see also: http://www.inregistry.in/policies/ +// see also: https://registry.in/Policies // Please note, that nic.in is not an offical eTLD, but used by most // government institutions. in @@ -3571,6 +3589,7 @@ ltd.lk assn.lk grp.lk hotel.lk +ac.lk // lr : http://psg.com/dns/lr/lr.txt // Submitted by registry 2008-06-17 @@ -3647,7 +3666,7 @@ gov.me its.me priv.me -// mg : http://www.nic.mg/tarif.htm +// mg : http://nic.mg/nicmg/?page_id=39 mg org.mg nom.mg @@ -3657,6 +3676,7 @@ tm.mg edu.mg mil.mg com.mg +co.mg // mh : http://en.wikipedia.org/wiki/.mh mh @@ -4412,9 +4432,9 @@ mobi.ng // ni : http://www.nic.ni/dominios.htm *.ni -// nl : http://www.domain-registry.nl/ace.php/c,728,122,,,,Home.html -// Confirmed by registry (with technical -// reservations) 2008-06-08 +// nl : http://en.wikipedia.org/wiki/.nl +// https://www.sidn.nl/ +// ccTLD for the Netherlands nl // BV.nl will be a registry for dutch BV's (besloten vennootschap) @@ -5304,14 +5324,11 @@ gos.pk info.pk // pl http://www.dns.pl/english/index.html -// confirmed on 26.09.2014 from Bogna Tchórzewska +// updated by .PL registry on 2015-04-28 pl com.pl net.pl org.pl -info.pl -waw.pl -gov.pl // pl functional domains (http://www.dns.pl/english/index.html) aid.pl agro.pl @@ -5321,6 +5338,7 @@ biz.pl edu.pl gmina.pl gsm.pl +info.pl mail.pl miasta.pl media.pl @@ -5342,16 +5360,55 @@ tm.pl tourism.pl travel.pl turystyka.pl -// Government domains (administred by ippt.gov.pl) -uw.gov.pl -um.gov.pl +// Government domains +gov.pl +ap.gov.pl +ic.gov.pl +is.gov.pl +us.gov.pl +kmpsp.gov.pl +kppsp.gov.pl +kwpsp.gov.pl +psp.gov.pl +wskr.gov.pl +kwp.gov.pl +mw.gov.pl ug.gov.pl +um.gov.pl +umig.gov.pl +ugim.gov.pl upow.gov.pl +uw.gov.pl starostwo.gov.pl +pa.gov.pl +po.gov.pl +psse.gov.pl +pup.gov.pl +rzgw.gov.pl +sa.gov.pl so.gov.pl sr.gov.pl -po.gov.pl -pa.gov.pl +wsa.gov.pl +sko.gov.pl +uzs.gov.pl +wiih.gov.pl +winb.gov.pl +pinb.gov.pl +wios.gov.pl +witd.gov.pl +wzmiuw.gov.pl +piw.gov.pl +wiw.gov.pl +griw.gov.pl +wif.gov.pl +oum.gov.pl +sdn.gov.pl +zp.gov.pl +uppo.gov.pl +mup.gov.pl +wuoz.gov.pl +konsulat.gov.pl +oirm.gov.pl // pl regional domains (http://www.dns.pl/english/index.html) augustow.pl babia-gora.pl @@ -5459,6 +5516,7 @@ ustka.pl walbrzych.pl warmia.pl warszawa.pl +waw.pl wegrow.pl wielun.pl wlocl.pl @@ -5906,6 +5964,38 @@ store.st // su : http://en.wikipedia.org/wiki/.su su +adygeya.su +arkhangelsk.su +balashov.su +bashkiria.su +bryansk.su +dagestan.su +grozny.su +ivanovo.su +kalmykia.su +kaluga.su +karelia.su +khakassia.su +krasnodar.su +kurgan.su +lenug.su +mordovia.su +msk.su +murmansk.su +nalchik.su +nov.su +obninsk.su +penza.su +pokrovsk.su +sochi.su +spb.su +togliatti.su +troitsk.su +tula.su +tuva.su +vladikavkaz.su +vladimir.su +vologda.su // sv : http://www.svnet.org.sv/niveldos.pdf sv @@ -6213,10 +6303,6 @@ zhytomyr.ua zp.ua zt.ua -// Private registries in .ua -co.ua -pp.ua - // ug : https://www.registry.co.ug/ ug co.ug @@ -6589,114 +6675,147 @@ edu.ws yt // IDN ccTLDs -// Please sort by ISO 3166 ccTLD, then punicode string -// when submitting patches and follow this format: -// ("" ) : -// [optional sponsoring org] -// +// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then +// U-label, and follow this format: +// // A-Label ("", [, variant info]) : +// // [sponsoring org] +// U-Label -// xn--mgbaam7a8h ("Emerat" Arabic) : AE +// xn--mgbaam7a8h ("Emerat", Arabic) : AE // http://nic.ae/english/arabicdomain/rules.jsp امارات -// xn--54b7fta0cc ("Bangla" Bangla) : BD +// xn--y9a3aq ("hye", Armenian) : AM +// ISOC AM (operated by .am Registry) +հայ + +// xn--54b7fta0cc ("Bangla", Bangla) : BD বাংলা -// xn--fiqs8s ("China" Chinese-Han-Simplified <.Zhongguo>) : CN +// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY +// Operated by .by registry +бел + +// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN // CNNIC // http://cnnic.cn/html/Dir/2005/10/11/3218.htm 中国 -// xn--fiqz9s ("China" Chinese-Han-Traditional <.Zhongguo>) : CN +// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN // CNNIC // http://cnnic.cn/html/Dir/2005/10/11/3218.htm 中國 -// xn--lgbbat1ad8j ("Algeria / Al Jazair" Arabic) : DZ +// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ الجزائر -// xn--wgbh1c ("Egypt" Arabic .masr) : EG +// xn--wgbh1c ("Egypt/Masr", Arabic) : EG // http://www.dotmasr.eg/ مصر -// xn--node ("ge" Georgian (Mkhedruli)) : GE +// xn--node ("ge", Georgian Mkhedruli) : GE გე -// xn--j6w193g ("Hong Kong" Chinese-Han) : HK +// xn--qxam ("el", Greek) : GR +// Hellenic Ministry of Infrastructure, Transport, and Networks +ελ + +// xn--j6w193g ("Hong Kong", Chinese) : HK // https://www2.hkirc.hk/register/rules.jsp 香港 -// xn--h2brj9c ("Bharat" Devanagari) : IN +// xn--h2brj9c ("Bharat", Devanagari) : IN // India भारत -// xn--mgbbh1a71e ("Bharat" Arabic) : IN +// xn--mgbbh1a71e ("Bharat", Arabic) : IN // India بھارت -// xn--fpcrj9c3d ("Bharat" Telugu) : IN +// xn--fpcrj9c3d ("Bharat", Telugu) : IN // India భారత్ -// xn--gecrj9c ("Bharat" Gujarati) : IN +// xn--gecrj9c ("Bharat", Gujarati) : IN // India ભારત -// xn--s9brj9c ("Bharat" Gurmukhi) : IN +// xn--s9brj9c ("Bharat", Gurmukhi) : IN // India ਭਾਰਤ -// xn--45brj9c ("Bharat" Bengali) : IN +// xn--45brj9c ("Bharat", Bengali) : IN // India ভারত -// xn--xkc2dl3a5ee0h ("India" Tamil) : IN +// xn--xkc2dl3a5ee0h ("India", Tamil) : IN // India இந்தியா -// xn--mgba3a4f16a ("Iran" Persian) : IR +// xn--mgba3a4f16a ("Iran", Persian) : IR ایران -// xn--mgba3a4fra ("Iran" Arabic) : IR +// xn--mgba3a4fra ("Iran", Arabic) : IR ايران -// xn--mgbayh7gpa ("al-Ordon" Arabic) : JO +// xn--mgbtx2b ("Iraq", Arabic) : IQ +// Communications and Media Commission +عراق + +// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO // National Information Technology Center (NITC) // Royal Scientific Society, Al-Jubeiha الاردن -// xn--3e0b707e ("Republic of Korea" Hangul) : KR +// xn--3e0b707e ("Republic of Korea", Hangul) : KR 한국 -// xn--80ao21a ("Kaz" Kazakh) : KZ +// xn--80ao21a ("Kaz", Kazakh) : KZ қаз -// xn--fzc2c9e2c ("Lanka" Sinhalese-Sinhala) : LK +// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK // http://nic.lk ලංකා -// xn--xkc2al3hye2a ("Ilangai" Tamil) : LK +// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK // http://nic.lk இலங்கை -// xn--mgbc0a9azcg ("Morocco / al-Maghrib" Arabic) : MA +// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA المغرب -// xn--l1acc ("mon" Mongolian) : MN +// xn--d1alf ("mkd", Macedonian) : MK +// MARnet +мкд + +// xn--l1acc ("mon", Mongolian) : MN мон -// xn--mgbx4cd0ab ("Malaysia" Malay) : MY +// xn--mix891f ("Macao", Chinese, Traditional) : MO +// MONIC / HNET Asia (Registry Operator for .mo) +澳門 + +// xn--mix082f ("Macao", Chinese, Simplified) : MO +澳门 + +// xn--mgbx4cd0ab ("Malaysia", Malay) : MY مليسيا -// xn--mgb9awbf ("Oman" Arabic) : OM +// xn--mgb9awbf ("Oman", Arabic) : OM عمان -// xn--ygbi2ammx ("Falasteen" Arabic) : PS +// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK +پاکستان + +// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK +پاكستان + +// xn--ygbi2ammx ("Falasteen", Arabic) : PS // The Palestinian National Internet Naming Authority (PNINA) // http://www.pnina.ps فلسطين -// xn--90a3ac ("srb" Cyrillic) : RS +// xn--90a3ac ("srb", Cyrillic) : RS // http://www.rnids.rs/en/the-.срб-domain срб пр.срб @@ -6706,62 +6825,66 @@ yt упр.срб ак.срб -// xn--p1ai ("rf" Russian-Cyrillic) : RU +// xn--p1ai ("rf", Russian-Cyrillic) : RU // http://www.cctld.ru/en/docs/rulesrf.php рф -// xn--wgbl6a ("Qatar" Arabic) : QA +// xn--wgbl6a ("Qatar", Arabic) : QA // http://www.ict.gov.qa/ قطر -// xn--mgberp4a5d4ar ("AlSaudiah" Arabic) : SA +// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA // http://www.nic.net.sa/ السعودية -// xn--mgberp4a5d4a87g ("AlSaudiah" Arabic) variant : SA +// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant) : SA السعودیة -// xn--mgbqly7c0a67fbc ("AlSaudiah" Arabic) variant : SA +// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA السعودیۃ -// xn--mgbqly7cvafr ("AlSaudiah" Arabic) variant : SA +// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA السعوديه -// xn--ogbpf8fl ("Syria" Arabic) : SY -سورية - -// xn--mgbtf8fl ("Syria" Arabic) variant : SY -سوريا +// xn--mgbpl2fh ("sudan", Arabic) : SD +// Operated by .sd registry +سودان -// xn--yfro4i67o Singapore ("Singapore" Chinese-Han) : SG +// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG 新加坡 -// xn--clchc0ea0b2g2a9gcd ("Singapore" Tamil) : SG +// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG சிங்கப்பூர் -// xn--o3cw4h ("Thai" Thai) : TH +// xn--ogbpf8fl ("Syria", Arabic) : SY +سورية + +// xn--mgbtf8fl ("Syria", Arabic, variant) : SY +سوريا + +// xn--o3cw4h ("Thai", Thai) : TH // http://www.thnic.co.th ไทย -// xn--pgbs0dh ("Tunis") : TN +// xn--pgbs0dh ("Tunisia", Arabic) : TN // http://nic.tn تونس -// xn--kpry57d ("Taiwan" Chinese-Han-Traditional) : TW +// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW // http://www.twnic.net/english/dn/dn_07a.htm 台灣 -// xn--kprw13d ("Taiwan" Chinese-Han-Simplified) : TW +// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW // http://www.twnic.net/english/dn/dn_07a.htm 台湾 -// xn--nnx388a ("Taiwan") variant : TW +// xn--nnx388a ("Taiwan", Chinese, variant) : TW 臺灣 -// xn--j1amh ("ukr" Cyrillic) : UA +// xn--j1amh ("ukr", Cyrillic) : UA укр -// xn--mgb2ddes ("AlYemen" Arabic) : YE +// xn--mgb2ddes ("AlYemen", Arabic) : YE اليمن // xxx : http://icmregistry.com @@ -6770,8 +6893,24 @@ xxx // ye : http://www.y.net.ye/services/domain_name.htm *.ye -// za : http://www.zadna.org.za/slds.html -*.za +// za : http://www.zadna.org.za/content/page/domain-information +ac.za +agrica.za +alt.za +co.za +edu.za +gov.za +grondar.za +law.za +mil.za +net.za +ngo.za +nis.za +nom.za +org.za +school.za +tm.za +web.za // zm : http://en.wikipedia.org/wiki/.zm *.zm @@ -6780,7 +6919,16 @@ xxx *.zw -// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2014-12-22T18:02:07Z +// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2015-08-26T23:57:22Z + +// aaa : 2015-02-26 American Automobile Association, Inc. +aaa + +// aarp : 2015-05-21 AARP +aarp + +// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V. +abarth // abb : 2014-10-24 ABB Ltd abb @@ -6788,9 +6936,21 @@ abb // abbott : 2014-07-24 Abbott Laboratories, Inc. abbott +// abbvie : 2015-07-30 AbbVie Inc. +abbvie + +// abc : 2015-07-30 Disney Enterprises, Inc. +abc + +// able : 2015-06-25 Able Inc. +able + // abogado : 2014-04-24 Top Level Domain Holdings Limited abogado +// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre +abudhabi + // academy : 2013-11-07 Half Oaks, LLC academy @@ -6803,42 +6963,105 @@ accountant // accountants : 2014-03-20 Knob Town, LLC accountants +// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG +aco + // active : 2014-05-01 The Active Network, Inc active // actor : 2013-12-12 United TLD Holdco Ltd. actor +// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC) +adac + // ads : 2014-12-04 Charleston Road Registry Inc. ads // adult : 2014-10-16 ICM Registry AD LLC adult +// aeg : 2015-03-19 Aktiebolaget Electrolux +aeg + +// aetna : 2015-05-21 Aetna Life Insurance Company +aetna + +// afamilycompany : 2015-07-23 Johnson Shareholdings, Inc. +afamilycompany + // afl : 2014-10-02 Australian Football League afl // africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa africa +// africamagic : 2015-03-05 Electronic Media Network (Pty) Ltd +africamagic + +// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +agakhan + // agency : 2013-11-14 Steel Falls, LLC agency // aig : 2014-12-18 American International Group, Inc. aig +// aigo : 2015-08-06 aigo Digital Technology Co,Ltd. +aigo + +// airbus : 2015-07-30 Airbus S.A.S. +airbus + // airforce : 2014-03-06 United TLD Holdco Ltd. airforce // airtel : 2014-10-24 Bharti Airtel Limited airtel +// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +akdn + +// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V. +alfaromeo + +// alibaba : 2015-01-15 Alibaba Group Holding Limited +alibaba + +// alipay : 2015-01-15 Alibaba Group Holding Limited +alipay + // allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft allfinanz +// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company +allstate + +// ally : 2015-06-18 Ally Financial Inc. +ally + // alsace : 2014-07-02 REGION D ALSACE alsace +// alstom : 2015-07-30 ALSTOM +alstom + +// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc. +americanexpress + +// americanfamily : 2015-07-23 AmFam, Inc. +americanfamily + +// amex : 2015-07-31 American Express Travel Related Services Company, Inc. +amex + +// amfam : 2015-07-23 AmFam, Inc. +amfam + +// amica : 2015-05-28 Amica Mutual Insurance Company +amica + // amsterdam : 2014-07-24 Gemeente Amsterdam amsterdam @@ -6848,9 +7071,21 @@ analytics // android : 2014-08-07 Charleston Road Registry Inc. android +// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +anquan + +// anz : 2015-07-31 Australia and New Zealand Banking Group Limited +anz + // apartments : 2014-12-11 June Maple, LLC apartments +// app : 2015-05-14 Charleston Road Registry Inc. +app + +// apple : 2015-05-14 Apple Inc. +apple + // aquarelle : 2014-07-24 Aquarelle.com aquarelle @@ -6866,33 +7101,66 @@ army // arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E. arte +// asda : 2015-07-31 Wal-Mart Stores, Inc. +asda + // associates : 2014-03-06 Baxter Hill, LLC associates +// athleta : 2015-07-30 The Gap, Inc. +athleta + // attorney : 2014-03-20 attorney // auction : 2014-03-20 auction +// audi : 2015-05-21 AUDI Aktiengesellschaft +audi + +// audible : 2015-06-25 Amazon EU S.à r.l. +audible + // audio : 2014-03-20 Uniregistry, Corp. audio +// auspost : 2015-08-13 Australian Postal Corporation +auspost + // author : 2014-12-18 Amazon EU S.à r.l. author -// auto : 2014-11-13 Uniregistry, Corp. +// auto : 2014-11-13 auto // autos : 2014-01-09 DERAutos, LLC autos +// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca +avianca + +// aws : 2015-06-25 Amazon EU S.à r.l. +aws + // axa : 2013-12-19 AXA SA axa // azure : 2014-12-18 Microsoft Corporation azure +// baby : 2015-04-09 Johnson & Johnson Services, Inc. +baby + +// baidu : 2015-01-08 Baidu, Inc. +baidu + +// banamex : 2015-07-30 Citigroup Inc. +banamex + +// bananarepublic : 2015-07-31 The Gap, Inc. +bananarepublic + // band : 2014-06-12 band @@ -6911,9 +7179,15 @@ barclaycard // barclays : 2014-11-20 Barclays Bank PLC barclays +// barefoot : 2015-06-11 Gallo Vineyards, Inc. +barefoot + // bargains : 2013-11-14 Half Hallow, LLC bargains +// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA) +basketball + // bauhaus : 2014-04-17 Werkhaus GmbH bauhaus @@ -6923,12 +7197,21 @@ bayern // bbc : 2014-12-18 British Broadcasting Corporation bbc +// bbt : 2015-07-23 BB&T Corporation +bbt + // bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A. bbva +// bcg : 2015-04-02 The Boston Consulting Group, Inc. +bcg + // bcn : 2014-07-24 Municipi de Barcelona bcn +// beats : 2015-05-14 Beats Electronics, LLC +beats + // beer : 2014-01-09 Top Level Domain Holdings Limited beer @@ -6941,6 +7224,12 @@ berlin // best : 2013-12-19 BestTLD Pty Ltd best +// bestbuy : 2015-07-31 BBY Solutions, Inc. +bestbuy + +// bet : 2015-05-07 Afilias plc +bet + // bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited bharti @@ -6968,6 +7257,15 @@ black // blackfriday : 2014-01-16 Uniregistry, Corp. blackfriday +// blanco : 2015-07-16 BLANCO GmbH + Co KG +blanco + +// blockbuster : 2015-07-30 Dish DBS Corporation +blockbuster + +// blog : 2015-05-14 PRIMER NIVEL S.A. +blog + // bloomberg : 2014-07-17 Bloomberg IP Holdings LLC bloomberg @@ -6989,6 +7287,12 @@ bnpparibas // boats : 2014-12-04 DERBoats, LLC boats +// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH +boehringer + +// bofa : 2015-07-31 NMS Services, Inc. +bofa + // bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br bom @@ -6998,6 +7302,18 @@ bond // boo : 2014-01-30 Charleston Road Registry Inc. boo +// booking : 2015-07-16 Booking.com B.V. +booking + +// boots : 2015-01-08 THE BOOTS COMPANY PLC +boots + +// bosch : 2015-06-18 Robert Bosch GMBH +bosch + +// bostik : 2015-05-28 Bostik SA +bostik + // bot : 2014-12-18 Amazon EU S.à r.l. bot @@ -7010,15 +7326,24 @@ bradesco // bridgestone : 2014-12-18 Bridgestone Corporation bridgestone +// broadway : 2014-12-22 Celebrate Broadway, Inc. +broadway + // broker : 2014-12-11 IG Group Holdings PLC broker +// brother : 2015-01-29 Brother Industries, Ltd. +brother + // brussels : 2014-02-06 DNS.be vzw brussels // budapest : 2013-11-21 Top Level Domain Holdings Limited budapest +// bugatti : 2015-07-23 Bugatti International SA +bugatti + // build : 2013-11-07 Plan Bee LLC build @@ -7040,12 +7365,18 @@ bzh // cab : 2013-10-24 Half Sunset, LLC cab +// cafe : 2015-02-11 Pioneer Canyon, LLC +cafe + // cal : 2014-07-24 Charleston Road Registry Inc. cal // call : 2014-12-18 Amazon EU S.à r.l. call +// calvinklein : 2015-07-30 PVH gTLD Holdings LLC +calvinklein + // camera : 2013-08-27 Atomic Maple, LLC camera @@ -7064,6 +7395,12 @@ capetown // capital : 2014-03-06 Delta Mill, LLC capital +// capitalone : 2015-08-06 Capital One Financial Corporation +capitalone + +// car : 2015-01-22 +car + // caravan : 2013-12-12 Caravan International, Inc. caravan @@ -7079,7 +7416,7 @@ career // careers : 2013-10-02 Wild Corner, LLC careers -// cars : 2014-11-13 Uniregistry, Corp. +// cars : 2014-11-13 cars // cartier : 2014-06-23 Richemont DNS Inc. @@ -7103,13 +7440,22 @@ cba // cbn : 2014-08-22 The Christian Broadcasting Network, Inc. cbn +// cbre : 2015-07-02 CBRE, Inc. +cbre + +// cbs : 2015-08-06 CBS Domains Inc. +cbs + +// ceb : 2015-04-09 The Corporate Executive Board Company +ceb + // center : 2013-11-07 Tin Mill, LLC center // ceo : 2013-11-07 CEOTLD Pty Ltd ceo -// cern : 2014-06-05 European Organization for Nuclear Research (\ +// cern : 2014-06-05 European Organization for Nuclear Research ("CERN") cern // cfa : 2014-08-28 CFA Institute @@ -7118,15 +7464,24 @@ cfa // cfd : 2014-12-11 IG Group Holdings PLC cfd +// chanel : 2015-04-09 Chanel International B.V. +chanel + // channel : 2014-05-08 Charleston Road Registry Inc. channel +// chase : 2015-04-30 JPMorgan Chase & Co. +chase + // chat : 2014-12-04 Sand Fields, LLC chat // cheap : 2013-11-14 Sand Cover, LLC cheap +// chintai : 2015-06-11 CHINTAI Corporation +chintai + // chloe : 2014-10-16 Richemont DNS Inc. chloe @@ -7136,12 +7491,27 @@ christmas // chrome : 2014-07-24 Charleston Road Registry Inc. chrome -// church : 2014-02-06 Holly Fileds, LLC +// chrysler : 2015-07-30 FCA US LLC. +chrysler + +// church : 2014-02-06 Holly Fields, LLC church +// cipriani : 2015-02-19 Hotel Cipriani Srl +cipriani + // circle : 2014-12-18 Amazon EU S.à r.l. circle +// cisco : 2014-12-22 Cisco Technology, Inc. +cisco + +// citadel : 2015-07-23 Citadel Domain LLC +citadel + +// citi : 2015-07-30 Citigroup Inc. +citi + // citic : 2014-01-09 CITIC Group Corporation citic @@ -7166,9 +7536,15 @@ clinic // clothing : 2013-08-27 Steel Lake, LLC clothing +// cloud : 2015-04-16 ARUBA S.p.A. +cloud + // club : 2013-11-08 .CLUB DOMAINS, LLC club +// clubmed : 2015-06-25 Club Méditerranée S.A. +clubmed + // coach : 2014-10-09 Koko Island, LLC coach @@ -7184,6 +7560,9 @@ college // cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH cologne +// comcast : 2015-07-23 Comcast IP Holdings I, LLC +comcast + // commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA commbank @@ -7196,6 +7575,9 @@ company // computer : 2013-10-24 Pine Mill, LLC computer +// comsec : 2015-01-08 VeriSign, Inc. +comsec + // condos : 2013-12-05 Pine House, LLC condos @@ -7205,12 +7587,18 @@ construction // consulting : 2013-12-05 consulting +// contact : 2015-01-08 Top Level Spectrum, Inc. +contact + // contractors : 2013-09-10 Magic Woods, LLC contractors // cooking : 2013-11-21 Top Level Domain Holdings Limited cooking +// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. +cookingchannel + // cool : 2013-11-14 Koko Lake, LLC cool @@ -7220,6 +7608,12 @@ corsica // country : 2013-12-19 Top Level Domain Holdings Limited country +// coupon : 2015-02-26 Amazon EU S.à r.l. +coupon + +// coupons : 2015-03-26 Black Island, LLC +coupons + // courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD courses @@ -7229,6 +7623,9 @@ credit // creditcard : 2014-03-20 Binky Frostbite, LLC creditcard +// creditunion : 2015-01-22 CUNA Performance Resources, LLC +creditunion + // cricket : 2014-10-09 dot Cricket Limited cricket @@ -7250,6 +7647,9 @@ cuisinella // cymru : 2014-05-08 Nominet UK cymru +// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd. +cyou + // dabur : 2014-02-06 Dabur India Limited dabur @@ -7274,6 +7674,15 @@ day // dclk : 2014-11-20 Charleston Road Registry Inc. dclk +// dds : 2015-05-07 Top Level Domain Holdings Limited +dds + +// deal : 2015-06-25 Amazon EU S.à r.l. +deal + +// dealer : 2014-12-22 Dealer Dot Com, Inc. +dealer + // deals : 2014-05-22 Sand Sunset, LLC deals @@ -7286,6 +7695,12 @@ delivery // dell : 2014-10-24 Dell Inc. dell +// deloitte : 2015-07-31 Deloitte Touche Tohmatsu +deloitte + +// delta : 2015-02-19 Delta Air Lines, Inc. +delta + // democrat : 2013-10-24 United TLD Holdco Ltd. democrat @@ -7304,6 +7719,9 @@ design // dev : 2014-10-16 Charleston Road Registry Inc. dev +// dhl : 2015-07-23 Deutsche Post AG +dhl + // diamonds : 2013-09-22 John Edge, LLC diamonds @@ -7322,12 +7740,21 @@ directory // discount : 2014-03-06 Holly Hill, LLC discount +// discover : 2015-07-23 Discover Financial Services +discover + +// dish : 2015-07-30 Dish DBS Corporation +dish + // dnp : 2013-12-13 Dai Nippon Printing Co., Ltd. dnp // docs : 2014-10-16 Charleston Road Registry Inc. docs +// dodge : 2015-07-30 FCA US LLC. +dodge + // dog : 2014-12-04 Koko Mill, LLC dog @@ -7340,15 +7767,45 @@ domains // doosan : 2014-04-03 Doosan Corporation doosan +// dot : 2015-05-21 Dish DBS Corporation +dot + // download : 2014-11-20 dot Support Limited download +// drive : 2015-03-05 Charleston Road Registry Inc. +drive + +// dstv : 2015-03-12 MultiChoice (Proprietary) Limited +dstv + +// dtv : 2015-06-04 Dish DBS Corporation +dtv + +// dubai : 2015-01-01 Dubai Smart Government Department +dubai + +// duck : 2015-07-23 Johnson Shareholdings, Inc. +duck + +// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company +dunlop + +// duns : 2015-08-06 The Dun & Bradstreet Corporation +duns + +// dupont : 2015-06-25 E.I. du Pont de Nemours and Company +dupont + // durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry durban // dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG dvag +// dwg : 2015-07-23 Autodesk, Inc. +dwg + // earth : 2014-12-04 Interlink Co., Ltd. earth @@ -7367,6 +7824,9 @@ email // emerck : 2014-04-03 Merck KGaA emerck +// emerson : 2015-07-23 Emerson Electric Co. +emerson + // energy : 2014-09-11 Binky Birch, LLC energy @@ -7379,12 +7839,18 @@ engineering // enterprises : 2013-09-20 Snow Oaks, LLC enterprises +// epost : 2015-07-23 Deutsche Post AG +epost + // epson : 2014-12-04 Seiko Epson Corporation epson // equipment : 2013-08-27 Corn Station, LLC equipment +// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson +ericsson + // erni : 2014-04-03 ERNI Group Holding AG erni @@ -7394,6 +7860,9 @@ esq // estate : 2013-08-27 Trixy Park, LLC estate +// esurance : 2015-07-23 Esurance Insurance Company +esurance + // eurovision : 2014-04-24 European Broadcasting Union (EBU) eurovision @@ -7415,6 +7884,12 @@ expert // exposed : 2013-12-05 Victor Beach, LLC exposed +// express : 2015-02-11 Sea Sunset, LLC +express + +// extraspace : 2015-05-14 Extra Space Storage LLC +extraspace + // fage : 2014-12-18 Fage International S.A. fage @@ -7427,6 +7902,9 @@ fairwinds // faith : 2014-11-20 dot Faith Limited faith +// family : 2015-04-02 +family + // fan : 2014-03-06 fan @@ -7436,18 +7914,39 @@ fans // farm : 2013-11-07 Just Maple, LLC farm +// farmers : 2015-07-09 Farmers Insurance Exchange +farmers + // fashion : 2014-07-03 Top Level Domain Holdings Limited fashion // fast : 2014-12-18 Amazon EU S.à r.l. fast +// fedex : 2015-08-06 Federal Express Corporation +fedex + // feedback : 2013-12-19 Top Level Spectrum, Inc. feedback +// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V. +ferrari + // ferrero : 2014-12-18 Ferrero Trading Lux S.A. ferrero +// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V. +fiat + +// fidelity : 2015-07-30 Fidelity Brokerage Services LLC +fidelity + +// fido : 2015-08-06 Rogers Communications Partnership +fido + +// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd +film + // final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br final @@ -7457,6 +7956,9 @@ finance // financial : 2014-03-06 Just Cover, LLC financial +// fire : 2015-06-25 Amazon EU S.à r.l. +fire + // firestone : 2014-12-18 Bridgestone Corporation firestone @@ -7475,9 +7977,15 @@ fit // fitness : 2014-03-06 Brice Orchard, LLC fitness +// flickr : 2015-04-02 Yahoo! Domain Services Inc. +flickr + // flights : 2013-12-05 Fox Station, LLC flights +// flir : 2015-07-23 FLIR Systems, Inc. +flir + // florist : 2013-11-07 Half Cypress, LLC florist @@ -7493,6 +8001,9 @@ fly // foo : 2014-01-23 Charleston Road Registry Inc. foo +// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc. +foodnetwork + // football : 2014-12-18 Foggy Farms, LLC football @@ -7505,15 +8016,36 @@ forex // forsale : 2014-05-22 forsale +// forum : 2015-04-02 Fegistry, LLC +forum + // foundation : 2013-12-05 John Dale, LLC foundation +// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH +fresenius + // frl : 2014-05-15 FRLregistry B.V. frl // frogans : 2013-12-19 OP3FT frogans +// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc. +frontdoor + +// frontier : 2015-02-05 Frontier Communications Corporation +frontier + +// ftr : 2015-07-16 Frontier Communications Corporation +ftr + +// fujitsu : 2015-07-30 Fujitsu Limited +fujitsu + +// fujixerox : 2015-07-23 Xerox DNHC LLC +fujixerox + // fund : 2014-03-20 John Castle, LLC fund @@ -7523,19 +8055,37 @@ furniture // futbol : 2013-09-20 futbol +// fyi : 2015-04-02 Silver Tigers, LLC +fyi + // gal : 2013-11-07 Asociación puntoGAL gal // gallery : 2013-09-13 Sugar House, LLC gallery +// gallo : 2015-06-11 Gallo Vineyards, Inc. +gallo + +// gallup : 2015-02-19 Gallup, Inc. +gallup + +// game : 2015-05-28 Uniregistry, Corp. +game + +// games : 2015-05-28 Foggy Beach, LLC +games + +// gap : 2015-07-31 The Gap, Inc. +gap + // garden : 2014-06-26 Top Level Domain Holdings Limited garden // gbiz : 2014-07-17 Charleston Road Registry Inc. gbiz -// gdn : 2014-07-31 Joint Stock Company \ +// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems" gdn // gea : 2014-12-04 GEA Group Aktiengesellschaft @@ -7544,6 +8094,12 @@ gea // gent : 2014-01-23 COMBELL GROUP NV/SA gent +// genting : 2015-03-12 Resorts World Inc Pte. Ltd. +genting + +// george : 2015-07-31 Wal-Mart Stores, Inc. +george + // ggee : 2014-01-09 GMO Internet, Inc. ggee @@ -7559,6 +8115,9 @@ gives // giving : 2014-11-13 Giving Limited giving +// glade : 2015-07-23 Johnson Shareholdings, Inc. +glade + // glass : 2013-11-07 Black Cover, LLC glass @@ -7580,6 +8139,12 @@ gmo // gmx : 2014-04-24 1&1 Mail & Media GmbH gmx +// godaddy : 2015-07-23 Go Daddy East, LLC +godaddy + +// gold : 2015-01-22 June Edge, LLC +gold + // goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD. goldpoint @@ -7589,6 +8154,12 @@ golf // goo : 2014-12-18 NTT Resonant Inc. goo +// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company +goodhands + +// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company +goodyear + // goog : 2014-11-20 Charleston Road Registry Inc. goog @@ -7601,6 +8172,12 @@ gop // got : 2014-12-18 Amazon EU S.à r.l. got +// gotv : 2015-03-12 MultiChoice (Proprietary) Limited +gotv + +// grainger : 2015-05-07 Grainger Registry Services, LLC +grainger + // graphics : 2013-09-13 Over Madison, LLC graphics @@ -7616,6 +8193,9 @@ gripe // group : 2014-08-15 Romeo Town, LLC group +// guardian : 2015-07-30 The Guardian Life Insurance Company of America +guardian + // gucci : 2014-11-13 Guccio Gucci S.p.a. gucci @@ -7640,39 +8220,78 @@ hangout // haus : 2013-12-05 haus +// hbo : 2015-07-30 HBO Registry Services, Inc. +hbo + +// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED +hdfc + +// hdfcbank : 2015-02-12 HDFC Bank Limited +hdfcbank + +// health : 2015-02-11 DotHealth, LLC +health + // healthcare : 2014-06-12 Silver Glen, LLC healthcare // help : 2014-06-26 Uniregistry, Corp. help +// helsinki : 2015-02-05 City of Helsinki +helsinki + // here : 2014-02-06 Charleston Road Registry Inc. here // hermes : 2014-07-10 HERMES INTERNATIONAL hermes +// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc. +hgtv + // hiphop : 2014-03-06 Uniregistry, Corp. hiphop +// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc. +hisamitsu + // hitachi : 2014-10-31 Hitachi, Ltd. hitachi // hiv : 2014-03-13 dotHIV gemeinnuetziger e.V. hiv +// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited +hkt + +// hockey : 2015-03-19 Half Willow, LLC +hockey + // holdings : 2013-08-27 John Madison, LLC holdings // holiday : 2013-11-07 Goose Woods, LLC holiday +// homedepot : 2015-04-02 Homer TLC, Inc. +homedepot + +// homegoods : 2015-07-16 The TJX Companies, Inc. +homegoods + // homes : 2014-01-09 DERHomes, LLC homes +// homesense : 2015-07-16 The TJX Companies, Inc. +homesense + // honda : 2014-12-18 Honda Motor Co., Ltd. honda +// honeywell : 2015-07-23 Honeywell GTLD LLC +honeywell + // horse : 2013-11-21 Top Level Domain Holdings Limited horse @@ -7682,6 +8301,9 @@ host // hosting : 2014-05-29 Uniregistry, Corp. hosting +// hoteles : 2015-03-05 Travel Reservations SRL +hoteles + // hotmail : 2014-12-18 Microsoft Corporation hotmail @@ -7694,18 +8316,48 @@ how // hsbc : 2014-10-24 HSBC Holdings PLC hsbc +// htc : 2015-04-02 HTC corporation +htc + +// hughes : 2015-07-30 Hughes Satellite Systems Corporation +hughes + +// hyatt : 2015-07-30 Hyatt GTLD, L.L.C. +hyatt + +// hyundai : 2015-07-09 Hyundai Motor Company +hyundai + // ibm : 2014-07-31 International Business Machines Corporation ibm +// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited +icbc + // ice : 2014-10-30 IntercontinentalExchange, Inc. ice +// icu : 2015-01-08 One.com A/S +icu + +// ieee : 2015-07-23 IEEE Global LLC +ieee + // ifm : 2014-01-30 ifm electronic gmbh ifm // iinet : 2014-07-03 Connect West Pty. Ltd. iinet +// ikano : 2015-07-09 Ikano S.A. +ikano + +// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +imamat + +// imdb : 2015-06-25 Amazon EU S.à r.l. +imdb + // immo : 2014-07-10 Auburn Bloom, LLC immo @@ -7727,12 +8379,21 @@ ink // institute : 2013-11-07 Outer Maple, LLC institute +// insurance : 2015-02-19 fTLD Registry Services LLC +insurance + // insure : 2014-03-20 Pioneer Willow, LLC insure +// intel : 2015-08-06 Intel Corporation +intel + // international : 2013-11-07 Wild Way, LLC international +// intuit : 2015-07-30 Intuit Administrative Services, Inc. +intuit + // investments : 2014-03-20 Holly Glen, LLC investments @@ -7742,6 +8403,12 @@ ipiranga // irish : 2014-08-07 Dot-Irish LLC irish +// iselect : 2015-02-11 iSelect Ltd +iselect + +// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +ismaili + // ist : 2014-08-28 Istanbul Metropolitan Municipality ist @@ -7751,6 +8418,9 @@ istanbul // itau : 2014-10-02 Itau Unibanco Holding S.A. itau +// itv : 2015-07-09 ITV Services Limited +itv + // iwc : 2014-06-23 Richemont DNS Inc. iwc @@ -7763,12 +8433,33 @@ java // jcb : 2014-11-20 JCB Co., Ltd. jcb +// jcp : 2015-04-23 JCP Media, Inc. +jcp + +// jeep : 2015-07-30 FCA US LLC. +jeep + // jetzt : 2014-01-09 New TLD Company AB jetzt +// jewelry : 2015-03-05 Wild Bloom, LLC +jewelry + +// jio : 2015-04-02 Affinity Names, Inc. +jio + // jlc : 2014-12-04 Richemont DNS Inc. jlc +// jll : 2015-04-02 Jones Lang LaSalle Incorporated +jll + +// jmp : 2015-03-26 Matrix IP LLC +jmp + +// jnj : 2015-06-18 Johnson & Johnson Services, Inc. +jnj + // joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry joburg @@ -7778,27 +8469,48 @@ jot // joy : 2014-12-18 Amazon EU S.à r.l. joy +// jpmorgan : 2015-04-30 JPMorgan Chase & Co. +jpmorgan + // jprs : 2014-09-18 Japan Registry Services Co., Ltd. jprs // juegos : 2014-03-20 Uniregistry, Corp. juegos +// juniper : 2015-07-30 JUNIPER NETWORKS, INC. +juniper + // kaufen : 2013-11-07 United TLD Holdco Ltd. kaufen // kddi : 2014-09-12 KDDI CORPORATION kddi +// kerryhotels : 2015-04-30 Kerry Trading Co. Limited +kerryhotels + +// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited +kerrylogistics + +// kerryproperties : 2015-04-09 Kerry Trading Co. Limited +kerryproperties + // kfh : 2014-12-04 Kuwait Finance House kfh +// kia : 2015-07-09 KIA MOTORS CORPORATION +kia + // kim : 2013-09-23 Afilias Limited kim // kinder : 2014-11-07 Ferrero Trading Lux S.A. kinder +// kindle : 2015-06-25 Amazon EU S.à r.l. +kindle + // kitchen : 2013-09-20 Just Goodbye, LLC kitchen @@ -7808,34 +8520,79 @@ kiwi // koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH koeln +// komatsu : 2015-01-08 Komatsu Ltd. +komatsu + +// kosher : 2015-08-20 Kosher Marketing Assets LLC +kosher + +// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft) +kpmg + +// kpn : 2015-01-08 Koninklijke KPN N.V. +kpn + // krd : 2013-12-05 KRG Department of Information Technology krd // kred : 2013-12-19 KredTLD Pty Ltd kred +// kuokgroup : 2015-04-09 Kerry Trading Co. Limited +kuokgroup + +// kyknet : 2015-03-05 Electronic Media Network (Pty) Ltd +kyknet + // kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen kyoto // lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA lacaixa +// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC +ladbrokes + +// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A. +lamborghini + +// lancaster : 2015-02-12 LANCASTER +lancaster + +// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V. +lancia + +// lancome : 2015-07-23 L'Oréal +lancome + // land : 2013-09-10 Pine Moon, LLC land // landrover : 2014-11-13 Jaguar Land Rover Ltd landrover +// lanxess : 2015-07-30 LANXESS Corporation +lanxess + +// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated +lasalle + // lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico lat +// latino : 2015-07-30 Dish DBS Corporation +latino + // latrobe : 2014-06-16 La Trobe University latrobe +// law : 2015-01-22 Minds + Machines Group Limited +law + // lawyer : 2014-03-20 lawyer -// lds : 2014-03-20 IRI Domain Management, LLC (\ +// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant") lds // lease : 2014-03-06 Victor Trail, LLC @@ -7844,9 +8601,18 @@ lease // leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc leclerc +// lefrak : 2015-07-16 LeFrak Organization, Inc. +lefrak + // legal : 2014-10-16 Blue Falls, LLC legal +// lego : 2015-07-16 LEGO Juris A/S +lego + +// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION +lexus + // lgbt : 2014-05-08 Afilias Limited lgbt @@ -7859,6 +8625,9 @@ lidl // life : 2014-02-06 Trixy Oaks, LLC life +// lifeinsurance : 2015-01-15 American Council of Life Insurers +lifeinsurance + // lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc. lifestyle @@ -7868,6 +8637,9 @@ lighting // like : 2014-12-18 Amazon EU S.à r.l. like +// lilly : 2015-07-31 Eli Lilly and Company +lilly + // limited : 2014-03-06 Big Fest, LLC limited @@ -7883,15 +8655,36 @@ linde // link : 2013-11-14 Uniregistry, Corp. link -// live : 2014-12-04 Half Woods, LLC +// lipsy : 2015-06-25 Lipsy Ltd +lipsy + +// live : 2014-12-04 live +// living : 2015-07-30 Lifestyle Domain Holdings, Inc. +living + +// lixil : 2015-03-19 LIXIL Group Corporation +lixil + // loan : 2014-11-20 dot Loan Limited loan // loans : 2014-03-20 June Woods, LLC loans +// locker : 2015-06-04 Dish DBS Corporation +locker + +// locus : 2015-06-25 Locus Analytics LLC +locus + +// loft : 2015-07-30 Annco, Inc. +loft + +// lol : 2015-01-30 Uniregistry, Corp. +lol + // london : 2013-11-14 Dot London Domains Limited london @@ -7901,12 +8694,24 @@ lotte // lotto : 2014-04-10 Afilias Limited lotto +// love : 2014-12-22 Merchant Law Group LLP +love + +// lpl : 2015-07-30 LPL Holdings, Inc. +lpl + +// lplfinancial : 2015-07-30 LPL Holdings, Inc. +lplfinancial + // ltd : 2014-09-25 Over Corner, LLC ltd // ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA ltda +// lundbeck : 2015-08-06 H. Lundbeck A/S +lundbeck + // lupin : 2014-11-07 LUPIN LIMITED lupin @@ -7916,6 +8721,9 @@ luxe // luxury : 2013-10-17 Luxury Partners, LLC luxury +// macys : 2015-07-31 Macys, Inc. +macys + // madrid : 2014-05-01 Comunidad de Madrid madrid @@ -7925,6 +8733,9 @@ maif // maison : 2013-12-05 Victor Frostbite, LLC maison +// makeup : 2015-01-15 L'Oréal +makeup + // man : 2014-12-04 MAN SE man @@ -7946,10 +8757,34 @@ markets // marriott : 2014-10-09 Marriott Worldwide Corporation marriott +// marshalls : 2015-07-16 The TJX Companies, Inc. +marshalls + +// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V. +maserati + +// mattel : 2015-08-06 Mattel Sites, Inc. +mattel + +// mba : 2015-04-02 Lone Hollow, LLC +mba + +// mcd : 2015-07-30 McDonald’s Corporation +mcd + +// mcdonalds : 2015-07-30 McDonald’s Corporation +mcdonalds + +// mckinsey : 2015-07-31 McKinsey Holdings, Inc. +mckinsey + +// med : 2015-08-06 Medistry LLC +med + // media : 2014-03-06 Grand Glen, LLC media -// meet : 2014-01-16 Afilias Limited +// meet : 2014-01-16 meet // melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation @@ -7961,12 +8796,18 @@ meme // memorial : 2014-10-16 Dog Beach, LLC memorial +// men : 2015-02-26 Exclusive Registry Limited +men + // menu : 2013-09-11 Wedding TLD2, LLC menu // meo : 2014-11-07 PT Comunicacoes S.A. meo +// metlife : 2015-05-07 MetLife Services and Solutions, LLC +metlife + // miami : 2013-12-19 Top Level Domain Holdings Limited miami @@ -7976,9 +8817,27 @@ microsoft // mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft mini +// mint : 2015-07-30 Intuit Administrative Services, Inc. +mint + +// mit : 2015-07-02 Massachusetts Institute of Technology +mit + +// mitsubishi : 2015-07-23 Mitsubishi Corporation +mitsubishi + +// mlb : 2015-05-21 MLB Advanced Media DH, LLC +mlb + +// mls : 2015-04-23 The Canadian Real Estate Association +mls + // mma : 2014-11-07 MMA IARD mma +// mnet : 2015-03-05 Electronic Media Network (Pty) Ltd +mnet + // mobily : 2014-12-18 GreenTech Consultancy Company W.L.L. mobily @@ -7991,6 +8850,9 @@ moe // moi : 2014-12-18 Amazon EU S.à r.l. moi +// mom : 2015-04-16 Uniregistry, Corp. +mom + // monash : 2013-09-30 Monash University monash @@ -8000,7 +8862,10 @@ money // montblanc : 2014-06-23 Richemont DNS Inc. montblanc -// mormon : 2013-12-05 IRI Domain Management, LLC (\ +// mopar : 2015-07-30 FCA US LLC. +mopar + +// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant") mormon // mortgage : 2014-03-20 @@ -8009,33 +8874,78 @@ mortgage // moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) moscow +// moto : 2015-06-04 Charleston Road Registry Inc. +moto + // motorcycles : 2014-01-09 DERMotorcycles, LLC motorcycles // mov : 2014-01-30 Charleston Road Registry Inc. mov +// movie : 2015-02-05 New Frostbite, LLC +movie + // movistar : 2014-10-16 Telefónica S.A. movistar +// msd : 2015-07-23 MSD Registry Holdings, Inc. +msd + // mtn : 2014-12-04 MTN Dubai Limited mtn // mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation mtpc +// mtr : 2015-03-12 MTR Corporation Limited +mtr + +// multichoice : 2015-03-12 MultiChoice (Proprietary) Limited +multichoice + +// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC +mutual + +// mutuelle : 2015-06-18 Fédération Nationale de la Mutualité Française +mutuelle + +// mzansimagic : 2015-03-05 Electronic Media Network (Pty) Ltd +mzansimagic + +// nab : 2015-08-20 National Australia Bank Limited +nab + // nadex : 2014-12-11 IG Group Holdings PLC nadex // nagoya : 2013-10-24 GMO Registry, Inc. nagoya +// naspers : 2015-02-12 Intelprop (Proprietary) Limited +naspers + +// nationwide : 2015-07-23 Nationwide Mutual Insurance Company +nationwide + +// natura : 2015-03-12 NATURA COSMÉTICOS S.A. +natura + // navy : 2014-03-06 United TLD Holdco Ltd. navy +// nba : 2015-07-31 NBA REGISTRY, LLC +nba + +// nec : 2015-01-08 NEC Corporation +nec + // netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA netbank +// netflix : 2015-06-18 Netflix, Inc. +netflix + // network : 2013-11-14 Trixy Manor, LLC network @@ -8045,12 +8955,21 @@ neustar // new : 2014-01-30 Charleston Road Registry Inc. new -// news : 2014-12-18 Hidden Bloom, LLC +// news : 2014-12-18 news +// next : 2015-06-18 Next plc +next + +// nextdirect : 2015-06-18 Next plc +nextdirect + // nexus : 2014-07-24 Charleston Road Registry Inc. nexus +// nfl : 2015-07-23 NFL Reg Ops LLC +nfl + // ngo : 2014-03-06 Public Interest Registry ngo @@ -8060,18 +8979,36 @@ nhk // nico : 2014-12-04 DWANGO Co., Ltd. nico +// nike : 2015-07-23 NIKE, Inc. +nike + +// nikon : 2015-05-21 NIKON CORPORATION +nikon + // ninja : 2013-11-07 United TLD Holdco Ltd. ninja // nissan : 2014-03-27 NISSAN MOTOR CO., LTD. nissan +// nokia : 2015-01-08 Nokia Corporation +nokia + +// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC +northwesternmutual + // norton : 2014-12-04 Symantec Corporation norton +// now : 2015-06-25 Amazon EU S.à r.l. +now + // nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. nowruz +// nowtv : 2015-05-14 Starbucks (HK) Limited +nowtv + // nra : 2014-05-22 NRA Holdings Company, INC. nra @@ -8087,9 +9024,33 @@ nyc // obi : 2014-09-25 OBI Group Holding SE & Co. KGaA obi +// observer : 2015-04-30 Guardian News and Media Limited +observer + +// off : 2015-07-23 Johnson Shareholdings, Inc. +off + +// office : 2015-03-12 Microsoft Corporation +office + // okinawa : 2013-12-05 BusinessRalliart Inc. okinawa +// olayan : 2015-05-14 Crescent Holding GmbH +olayan + +// olayangroup : 2015-05-14 Crescent Holding GmbH +olayangroup + +// oldnavy : 2015-07-31 The Gap, Inc. +oldnavy + +// ollo : 2015-06-04 Dish DBS Corporation +ollo + +// omega : 2015-01-08 The Swatch Group Ltd +omega + // one : 2014-11-07 One.com A/S one @@ -8099,27 +9060,51 @@ ong // onl : 2013-09-16 I-Registry Ltd. onl +// online : 2015-01-15 DotOnline Inc. +online + +// onyourside : 2015-07-23 Nationwide Mutual Insurance Company +onyourside + // ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED ooo +// open : 2015-07-31 American Express Travel Related Services Company, Inc. +open + // oracle : 2014-06-19 Oracle Corporation oracle +// orange : 2015-03-12 Orange Brand Services Limited +orange + // organic : 2014-03-27 Afilias Limited organic +// orientexpress : 2015-02-05 Belmond Ltd. +orientexpress + // osaka : 2014-09-04 Interlink Co., Ltd. osaka // otsuka : 2013-10-11 Otsuka Holdings Co., Ltd. otsuka +// ott : 2015-06-04 Dish DBS Corporation +ott + // ovh : 2014-01-16 OVH SAS ovh // page : 2014-12-04 Charleston Road Registry Inc. page +// pamperedchef : 2015-02-05 The Pampered Chef, Ltd. +pamperedchef + +// panasonic : 2015-07-30 Panasonic Corporation +panasonic + // panerai : 2014-11-07 Richemont DNS Inc. panerai @@ -8138,6 +9123,18 @@ parts // party : 2014-09-11 Blue Sky Registry Limited party +// passagens : 2015-03-05 Travel Reservations SRL +passagens + +// payu : 2015-02-12 MIH PayU B.V. +payu + +// pccw : 2015-05-14 PCCW Enterprises Limited +pccw + +// pet : 2015-05-07 Afilias plc +pet + // pharmacy : 2014-06-19 National Association of Boards of Pharmacy pharmacy @@ -8168,36 +9165,66 @@ pictet // pictures : 2014-03-06 Foggy Sky, LLC pictures +// pid : 2015-01-08 Top Level Spectrum, Inc. +pid + // pin : 2014-12-18 Amazon EU S.à r.l. pin +// ping : 2015-06-11 Ping Registry Provider, Inc. +ping + // pink : 2013-10-01 Afilias Limited pink +// pioneer : 2015-07-16 Pioneer Corporation +pioneer + // pizza : 2014-06-26 Foggy Moon, LLC pizza // place : 2014-04-24 Snow Galley, LLC place +// play : 2015-03-05 Charleston Road Registry Inc. +play + +// playstation : 2015-07-02 Sony Computer Entertainment Inc. +playstation + // plumbing : 2013-09-10 Spring Tigers, LLC plumbing +// plus : 2015-02-05 Sugar Mill, LLC +plus + +// pnc : 2015-07-02 PNC Domain Co., LLC +pnc + // pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG pohl // poker : 2014-07-03 Afilias Domains No. 5 Limited poker +// politie : 2015-08-20 Politie Nederland +politie + // porn : 2014-10-16 ICM Registry PN LLC porn +// pramerica : 2015-07-30 Prudential Financial, Inc. +pramerica + // praxi : 2013-12-05 Praxi S.p.A. praxi // press : 2014-04-03 DotPress Inc. press +// prime : 2015-06-25 Amazon EU S.à r.l. +prime + // prod : 2014-01-23 Charleston Road Registry Inc. prod @@ -8207,6 +9234,9 @@ productions // prof : 2014-07-24 Charleston Road Registry Inc. prof +// progressive : 2015-07-23 Progressive Casualty Insurance Company +progressive + // promo : 2014-12-18 Play.PROMO Oy promo @@ -8216,6 +9246,15 @@ properties // property : 2014-05-22 Uniregistry, Corp. property +// protection : 2015-04-23 +protection + +// pru : 2015-07-30 Prudential Financial, Inc. +pru + +// prudential : 2015-07-30 Prudential Financial, Inc. +prudential + // pub : 2013-12-12 United TLD Holdco Ltd. pub @@ -8225,15 +9264,27 @@ qpon // quebec : 2013-12-19 PointQuébec Inc quebec +// quest : 2015-03-26 Quest ION Limited +quest + +// qvc : 2015-07-30 QVC, Inc. +qvc + // racing : 2014-12-04 Premier Registry Limited racing +// raid : 2015-07-23 Johnson Shareholdings, Inc. +raid + // read : 2014-12-18 Amazon EU S.à r.l. read // realtor : 2014-05-29 Real Estate Domains LLC realtor +// realty : 2015-03-19 Fegistry, LLC +realty + // recipes : 2013-10-17 Grand Island, LLC recipes @@ -8243,10 +9294,13 @@ red // redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. redstone +// redumbrella : 2015-03-26 Travelers TLD, LLC +redumbrella + // rehab : 2014-03-06 United TLD Holdco Ltd. rehab -// reise : 2014-03-13 dotreise GmbH +// reise : 2014-03-13 reise // reisen : 2014-03-06 New Cypress, LLC @@ -8255,6 +9309,9 @@ reisen // reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc. reit +// reliance : 2015-04-02 Reliance Industries Limited +reliance + // ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd. ren @@ -8285,12 +9342,24 @@ review // reviews : 2013-09-13 reviews +// rexroth : 2015-06-18 Robert Bosch GMBH +rexroth + // rich : 2013-11-21 I-Registry Ltd. rich +// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited +richardli + // ricoh : 2014-11-20 Ricoh Company, Ltd. ricoh +// rightathome : 2015-07-23 Johnson Shareholdings, Inc. +rightathome + +// ril : 2015-04-02 Reliance Industries Limited +ril + // rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO rio @@ -8306,6 +9375,9 @@ rocks // rodeo : 2013-12-19 Top Level Domain Holdings Limited rodeo +// rogers : 2015-08-06 Rogers Communications Partnership +rogers + // room : 2014-12-18 Amazon EU S.à r.l. room @@ -8315,6 +9387,12 @@ rsvp // ruhr : 2013-10-02 regiodot GmbH & Co. KG ruhr +// run : 2015-03-19 Snow Park, LLC +run + +// rwe : 2015-04-02 RWE AG +rwe + // ryukyu : 2014-01-09 BusinessRalliart Inc. ryukyu @@ -8324,6 +9402,9 @@ saarland // safe : 2014-12-18 Amazon EU S.à r.l. safe +// safety : 2015-01-08 Safety Registry Services, LLC. +safety + // sakura : 2014-12-18 SAKURA Internet Inc. sakura @@ -8333,6 +9414,9 @@ sale // salon : 2014-12-11 Outer Orchard, LLC salon +// samsclub : 2015-07-31 Wal-Mart Stores, Inc. +samsclub + // samsung : 2014-04-03 SAMSUNG SDS CO., LTD samsung @@ -8354,18 +9438,30 @@ sapo // sarl : 2014-07-03 Delta Orchard, LLC sarl +// sas : 2015-04-02 Research IP LLC +sas + +// save : 2015-06-25 Amazon EU S.à r.l. +save + // saxo : 2014-10-31 Saxo Bank A/S saxo +// sbi : 2015-03-12 STATE BANK OF INDIA +sbi + // sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION sbs // sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ) sca -// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited (\ +// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB") scb +// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG +schaeffler + // schmidt : 2014-04-03 SALM S.A.S. schmidt @@ -8384,6 +9480,9 @@ schwarz // science : 2014-09-11 dot Science Limited science +// scjohnson : 2015-07-23 Johnson Shareholdings, Inc. +scjohnson + // scor : 2014-10-31 SCOR SE scor @@ -8393,6 +9492,9 @@ scot // seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal) seat +// security : 2015-05-14 +security + // seek : 2014-12-04 Seek Limited seek @@ -8402,6 +9504,12 @@ sener // services : 2014-02-27 Fox Castle, LLC services +// ses : 2015-07-23 SES +ses + +// seven : 2015-08-06 Seven West Media Ltd +seven + // sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG sew @@ -8411,9 +9519,18 @@ sex // sexy : 2013-09-11 Uniregistry, Corp. sexy +// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR +sfr + // sharp : 2014-05-01 Sharp Corporation sharp +// shaw : 2015-04-23 Shaw Cablesystems G.P. +shaw + +// shell : 2015-07-30 Shell Information Technology International Inc +shell + // shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. shia @@ -8423,24 +9540,63 @@ shiksha // shoes : 2013-10-02 Binky Galley, LLC shoes +// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +shouji + +// show : 2015-03-05 Snow Beach, LLC +show + +// showtime : 2015-08-06 CBS Domains Inc. +showtime + // shriram : 2014-01-23 Shriram Capital Ltd. shriram +// silk : 2015-06-25 Amazon EU S.à r.l. +silk + +// sina : 2015-03-12 Sina Corporation +sina + // singles : 2013-08-27 Fern Madison, LLC singles +// site : 2015-01-15 DotSite Inc. +site + +// ski : 2015-04-09 STARTING DOT LIMITED +ski + +// skin : 2015-01-15 L'Oréal +skin + // sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch sky // skype : 2014-12-18 Microsoft Corporation skype +// sling : 2015-07-30 Hughes Satellite Systems Corporation +sling + +// smart : 2015-07-09 Smart Communications, Inc. (SMART) +smart + // smile : 2014-12-18 Amazon EU S.à r.l. smile +// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F +sncf + +// soccer : 2015-03-26 Foggy Shadow, LLC +soccer + // social : 2013-11-07 United TLD Holdco Ltd. social +// softbank : 2015-07-02 SoftBank Corp. +softbank + // software : 2014-03-20 software @@ -8453,6 +9609,12 @@ solar // solutions : 2013-11-07 Silver Cover, LLC solutions +// song : 2015-02-26 Amazon EU S.à r.l. +song + +// sony : 2015-01-08 Sony Corporation +sony + // soy : 2014-01-23 Charleston Road Registry Inc. soy @@ -8462,12 +9624,36 @@ space // spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG spiegel +// spot : 2015-02-26 Amazon EU S.à r.l. +spot + // spreadbetting : 2014-12-11 IG Group Holdings PLC spreadbetting +// srl : 2015-05-07 mySRL GmbH +srl + +// srt : 2015-07-30 FCA US LLC. +srt + // stada : 2014-11-13 STADA Arzneimittel AG stada +// staples : 2015-07-30 Staples, Inc. +staples + +// star : 2015-01-08 Star India Private Limited +star + +// starhub : 2015-02-05 StarHub Limited +starhub + +// statebank : 2015-03-12 STATE BANK OF INDIA +statebank + +// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company +statefarm + // statoil : 2014-12-04 Statoil ASA statoil @@ -8480,12 +9666,27 @@ stcgroup // stockholm : 2014-12-18 Stockholms kommun stockholm +// storage : 2014-12-22 Self Storage Company LLC +storage + +// store : 2015-04-09 DotStore Inc. +store + +// studio : 2015-02-11 +studio + // study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD study // style : 2014-12-04 Binky Moon, LLC style +// sucks : 2014-12-22 Vox Populi Registry Inc. +sucks + +// supersport : 2015-03-05 SuperSport International Holdings Proprietary Limited +supersport + // supplies : 2013-12-19 Atomic Fields, LLC supplies @@ -8504,6 +9705,12 @@ surgery // suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION suzuki +// swatch : 2015-01-08 The Swatch Group Ltd +swatch + +// swiftcover : 2015-07-23 Swiftcover Insurance Services Limited +swiftcover + // swiss : 2014-10-16 Swiss Confederation swiss @@ -8522,7 +9729,19 @@ tab // taipei : 2014-07-10 Taipei City Government taipei -// tatar : 2014-04-24 Limited Liability Company \ +// talk : 2015-04-09 Amazon EU S.à r.l. +talk + +// taobao : 2015-01-15 Alibaba Group Holding Limited +taobao + +// target : 2015-07-31 Target Domain Holdings, LLC +target + +// tatamotors : 2015-03-12 Tata Motors Ltd +tatamotors + +// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" tatar // tattoo : 2013-08-30 Uniregistry, Corp. @@ -8531,12 +9750,27 @@ tattoo // tax : 2014-03-20 Storm Orchard, LLC tax +// taxi : 2015-03-19 Pine Falls, LLC +taxi + // tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. tci +// tdk : 2015-06-11 TDK Corporation +tdk + +// team : 2015-03-05 Atomic Lake, LLC +team + +// tech : 2015-01-30 Dot Tech LLC +tech + // technology : 2013-09-13 Auburn Falls technology +// telecity : 2015-02-19 TelecityGroup International Limited +telecity + // telefonica : 2014-10-16 Telefónica S.A. telefonica @@ -8546,9 +9780,33 @@ temasek // tennis : 2014-12-04 Cotton Bloom, LLC tennis +// teva : 2015-07-02 Teva Pharmaceutical Industries Limited +teva + +// thd : 2015-04-02 Homer TLC, Inc. +thd + +// theater : 2015-03-19 Blue Tigers, LLC +theater + +// theatre : 2015-05-07 +theatre + +// theguardian : 2015-04-30 Guardian News and Media Limited +theguardian + +// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America +tiaa + +// tickets : 2015-02-05 Accent Media Limited +tickets + // tienda : 2013-11-14 Victor Manor, LLC tienda +// tiffany : 2015-01-30 Tiffany and Company +tiffany + // tips : 2013-09-20 Corn Willow, LLC tips @@ -8558,6 +9816,18 @@ tires // tirol : 2014-04-24 punkt Tirol GmbH tirol +// tjmaxx : 2015-07-16 The TJX Companies, Inc. +tjmaxx + +// tjx : 2015-07-16 The TJX Companies, Inc. +tjx + +// tkmaxx : 2015-07-16 The TJX Companies, Inc. +tkmaxx + +// tmall : 2015-01-15 Alibaba Group Holding Limited +tmall + // today : 2013-09-20 Pearl Woods, LLC today @@ -8576,9 +9846,18 @@ toray // toshiba : 2014-04-10 TOSHIBA Corporation toshiba +// total : 2015-08-06 Total SA +total + +// tours : 2015-01-22 Sugar Station, LLC +tours + // town : 2014-03-06 Koko Moon, LLC town +// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION +toyota + // toys : 2014-03-06 Pioneer Orchard, LLC toys @@ -8591,18 +9870,45 @@ trading // training : 2013-11-07 Wild Willow, LLC training +// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. +travelchannel + +// travelers : 2015-03-26 Travelers TLD, LLC +travelers + +// travelersinsurance : 2015-03-26 Travelers TLD, LLC +travelersinsurance + // trust : 2014-10-16 trust +// trv : 2015-03-26 Travelers TLD, LLC +trv + +// tube : 2015-06-11 Latin American Telecom LLC +tube + // tui : 2014-07-03 TUI AG tui +// tunes : 2015-02-26 Amazon EU S.à r.l. +tunes + // tushu : 2014-12-18 Amazon EU S.à r.l. tushu +// tvs : 2015-02-19 T V SUNDRAM IYENGAR & SONS LIMITED +tvs + +// ubank : 2015-08-20 National Australia Bank Limited +ubank + // ubs : 2014-12-11 UBS AG ubs +// uconnect : 2015-07-30 FCA US LLC. +uconnect + // university : 2014-03-06 Little Station, LLC university @@ -8612,6 +9918,9 @@ uno // uol : 2014-05-01 UBN INTERNET LTDA. uol +// ups : 2015-06-25 UPS Market Driver, Inc. +ups + // vacations : 2013-12-05 Atomic Tigers, LLC vacations @@ -8624,6 +9933,9 @@ vegas // ventures : 2013-08-27 Binky Lake, LLC ventures +// verisign : 2015-08-13 VeriSign, Inc. +verisign + // versicherung : 2014-03-20 dotversicherung-registry GmbH versicherung @@ -8636,12 +9948,27 @@ viajes // video : 2014-10-16 video +// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe +vig + +// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd. +viking + // villas : 2013-12-05 New Sky, LLC villas +// vin : 2015-06-18 Holly Shadow, LLC +vin + +// vip : 2015-01-22 Minds + Machines Group Limited +vip + // virgin : 2014-09-25 Virgin Enterprises Limited virgin +// visa : 2015-07-30 Visa Worldwide Pte. Limited +visa + // vision : 2013-12-05 Koko Station, LLC vision @@ -8654,12 +9981,18 @@ vistaprint // viva : 2014-11-07 Saudi Telecom Company viva +// vivo : 2015-07-31 Telefonica Brasil S.A. +vivo + // vlaanderen : 2014-02-06 DNS.be vzw vlaanderen // vodka : 2013-12-19 Top Level Domain Holdings Limited vodka +// volkswagen : 2015-05-14 Volkswagen Group of America Inc. +volkswagen + // vote : 2013-11-21 Monolith Registry LLC vote @@ -8672,9 +10005,15 @@ voto // voyage : 2013-08-27 Ruby House, LLC voyage +// vuelos : 2015-03-05 Travel Reservations SRL +vuelos + // wales : 2014-05-08 Nominet UK wales +// walmart : 2015-07-31 Wal-Mart Stores, Inc. +walmart + // walter : 2014-11-13 Sandvik AB walter @@ -8684,12 +10023,27 @@ wang // wanggou : 2014-12-18 Amazon EU S.à r.l. wanggou +// warman : 2015-06-18 Weir Group IP Limited +warman + // watch : 2013-11-14 Sand Shadow, LLC watch +// watches : 2014-12-22 Richemont DNS Inc. +watches + +// weather : 2015-01-08 The Weather Channel, LLC +weather + +// weatherchannel : 2015-03-12 The Weather Channel, LLC +weatherchannel + // webcam : 2014-01-23 dot Webcam Limited webcam +// weber : 2015-06-04 Saint-Gobain Weber SA +weber + // website : 2014-04-03 DotWebsite Inc. website @@ -8699,6 +10053,12 @@ wed // wedding : 2014-04-24 Top Level Domain Holdings Limited wedding +// weibo : 2015-03-05 Sina Corporation +weibo + +// weir : 2015-01-29 Weir Group IP Limited +weir + // whoswho : 2014-02-20 Who's Who Registry whoswho @@ -8717,9 +10077,21 @@ win // windows : 2014-12-18 Microsoft Corporation windows +// wine : 2015-06-18 June Station, LLC +wine + +// winners : 2015-07-16 The TJX Companies, Inc. +winners + // wme : 2014-02-13 William Morris Endeavor Entertainment, LLC wme +// wolterskluwer : 2015-08-06 Wolters Kluwer N.V. +wolterskluwer + +// woodside : 2015-07-09 Woodside Petroleum Limited +woodside + // work : 2013-12-19 Top Level Domain Holdings Limited work @@ -8741,9 +10113,21 @@ xbox // xerox : 2014-10-24 Xerox DNHC LLC xerox +// xfinity : 2015-07-09 Comcast IP Holdings I, LLC +xfinity + +// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +xihuan + // xin : 2014-12-11 Elegant Leader Limited xin +// xn--11b4c3d : 2015-01-15 VeriSign Sarl +कॉम + +// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l. +セール + // xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd. 佛山 @@ -8756,18 +10140,33 @@ xin // xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED 在线 +// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd. +大众汽车 + +// xn--3pxu8k : 2015-01-15 VeriSign Sarl +点看 + +// xn--42c2d9a : 2015-01-15 VeriSign Sarl +คอม + // xn--45q11c : 2013-11-21 Zodiac Scorpio Limited 八卦 // xn--4gbrim : 2013-10-04 Suhub Electronic Establishment موقع +// xn--4gq48lf9j : 2015-07-31 Wal-Mart Stores, Inc. +一号店 + // xn--55qw42g : 2013-11-08 China Organizational Name Administration Center 公益 // xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) 公司 +// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited +网站 + // xn--6frz82g : 2013-09-23 Afilias Limited 移动 @@ -8783,19 +10182,37 @@ xin // xn--80aswg : 2013-07-14 CORE Association сайт +// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited +联通 + +// xn--9dbq2a : 2015-01-15 VeriSign Sarl +קום + // xn--9et52u : 2014-06-12 RISE VICTORY LIMITED 时尚 +// xn--9krt00a : 2015-03-12 Sina Corporation +微博 + // xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited 淡马锡 +// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l. +ファッション + // xn--c1avg : 2013-11-14 Public Interest Registry орг +// xn--c2br7g : 2015-01-15 VeriSign Sarl +नेट + +// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l. +ストア + // xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD 삼성 -// xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES(HOLDING) COMPANY.HONGKONG LIMITED +// xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED 商标 // xn--czrs0t : 2013-12-19 Wild Island, LLC @@ -8813,6 +10230,15 @@ xin // xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社 新闻 +// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited +工行 + +// xn--fct429k : 2015-04-09 Amazon EU S.à r.l. +家電 + +// xn--fhbei : 2015-01-15 VeriSign Sarl +كوم + // xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED 中文网 @@ -8825,6 +10251,15 @@ xin // xn--flw351e : 2014-07-31 Charleston Road Registry Inc. 谷歌 +// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited +電訊盈科 + +// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited +购物 + +// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l. +クラウド + // xn--hxt814e : 2014-05-15 Zodiac Libra Limited 网店 @@ -8837,24 +10272,45 @@ xin // xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) 网络 +// xn--j1aef : 2015-01-15 VeriSign Sarl +ком + +// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation +诺基亚 + +// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l. +食品 + // xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V. 飞利浦 +// xn--kpu716f : 2014-12-22 Richemont DNS Inc. +手表 + // xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd 手机 // xn--mgba3a3ejt : 2014-11-20 Aramco Services Company ارامكو +// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH +العليان + // xn--mgbab2bd : 2013-10-31 CORE Association بازار // xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L. موبايلي +// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre +ابوظبي + // xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. همراه +// xn--mk1bu44c : 2015-01-15 VeriSign Sarl +닷컴 + // xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd. 政府 @@ -8876,6 +10332,12 @@ xin // xn--p1acf : 2013-12-12 Rusnames Limited рус +// xn--pbt977c : 2014-12-22 Richemont DNS Inc. +珠宝 + +// xn--pssy2u : 2015-01-15 VeriSign Sarl +大拿 + // xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc. みんな @@ -8885,9 +10347,18 @@ xin // xn--rhqv96g : 2013-09-11 Stable Tone Limited 世界 -// xn--ses554g : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED +// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l. +書籍 + +// xn--ses554g : 2014-01-16 网址 +// xn--t60b56a : 2015-01-15 VeriSign Sarl +닷넷 + +// xn--tckwe : 2015-01-15 VeriSign Sarl +コム + // xn--unup4y : 2013-07-14 Spring Fields, LLC 游戏 @@ -8903,18 +10374,30 @@ vermögensberatung // xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd. 信息 +// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited +嘉里大酒店 + +// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited +嘉里 + // xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd. 广东 // xn--zfr164b : 2013-11-08 China Organizational Name Administration Center 政务 +// xperia : 2015-05-14 Sony Mobile Communications AB +xperia + // xyz : 2013-12-05 XYZ.COM LLC xyz // yachts : 2014-01-09 DERYachts, LLC yachts +// yahoo : 2015-04-02 Yahoo! Domain Services Inc. +yahoo + // yamaxun : 2014-12-18 Amazon EU S.à r.l. yamaxun @@ -8930,9 +10413,18 @@ yoga // yokohama : 2013-12-12 GMO Registry, Inc. yokohama +// you : 2015-04-09 Amazon EU S.à r.l. +you + // youtube : 2014-05-01 Charleston Road Registry Inc. youtube +// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +yun + +// zappos : 2015-06-25 Amazon EU S.à r.l. +zappos + // zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.) zara @@ -8942,14 +10434,19 @@ zero // zip : 2014-05-08 Charleston Road Registry Inc. zip +// zippo : 2015-07-02 Zadco Company +zippo + // zone : 2013-11-14 Outer Falls, LLC zone // zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich) zuerich + // ===END ICANN DOMAINS=== // ===BEGIN PRIVATE DOMAINS=== +// (Note: these are in alphabetical order by company name) // Amazon CloudFront : https://aws.amazon.com/cloudfront/ // Submitted by Donavan Miller 2013-03-22 @@ -8983,26 +10480,22 @@ elasticbeanstalk.com elb.amazonaws.com // Amazon S3 : https://aws.amazon.com/s3/ -// Submitted by Courtney Eckhardt 2013-03-22 +// Submitted by Eric Kinolik 2015-04-08 s3.amazonaws.com -s3-us-west-2.amazonaws.com -s3-us-west-1.amazonaws.com -s3-eu-west-1.amazonaws.com +s3-ap-northeast-1.amazonaws.com s3-ap-southeast-1.amazonaws.com s3-ap-southeast-2.amazonaws.com -s3-ap-northeast-1.amazonaws.com +s3-external-1.amazonaws.com +s3-external-2.amazonaws.com +s3-fips-us-gov-west-1.amazonaws.com +s3-eu-central-1.amazonaws.com +s3-eu-west-1.amazonaws.com s3-sa-east-1.amazonaws.com s3-us-gov-west-1.amazonaws.com -s3-fips-us-gov-west-1.amazonaws.com -s3-website-us-east-1.amazonaws.com -s3-website-us-west-2.amazonaws.com -s3-website-us-west-1.amazonaws.com -s3-website-eu-west-1.amazonaws.com -s3-website-ap-southeast-1.amazonaws.com -s3-website-ap-southeast-2.amazonaws.com -s3-website-ap-northeast-1.amazonaws.com -s3-website-sa-east-1.amazonaws.com -s3-website-us-gov-west-1.amazonaws.com +s3-us-west-1.amazonaws.com +s3-us-west-2.amazonaws.com +s3.cn-north-1.amazonaws.com.cn +s3.eu-central-1.amazonaws.com // BetaInABox // Submitted by adrian@betainabox.com 2012-09-13 @@ -9070,10 +10563,22 @@ cloudcontrolapp.com // co.ca : http://registry.co.ca/ co.ca +// CDN77.com : http://www.cdn77.com +// Submitted by Jan Krpes 2015-07-13 +c.cdn77.org +cdn77-ssl.net +r.cdn77.net +rsc.cdn77.org +ssl.origin.cdn77-secure.org + // CoDNS B.V. co.nl co.no +// Commerce Guys, SAS +// Submitted by Damien Tournoud 2015-01-22 +*.platform.sh + // Cupcake : https://cupcake.io/ // Submitted by Jonathan Rudenberg 2013-10-08 cupcake.is @@ -9082,6 +10587,10 @@ cupcake.is // Submitted by Andrew Farmer 2012-10-02 dreamhosters.com +// DuckDNS : http://www.duckdns.org/ +// Submitted by Richard Harper 2015-05-17 +duckdns.org + // DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ dyndns-at-home.com dyndns-at-work.com @@ -9363,6 +10872,66 @@ webhop.org worse-than.tv writesthisblog.com +// EU.org https://eu.org/ +// Submitted by Pierre Beyssac 2015-04-17 + +eu.org +al.eu.org +asso.eu.org +at.eu.org +au.eu.org +be.eu.org +bg.eu.org +ca.eu.org +cd.eu.org +ch.eu.org +cn.eu.org +cy.eu.org +cz.eu.org +de.eu.org +dk.eu.org +edu.eu.org +ee.eu.org +es.eu.org +fi.eu.org +fr.eu.org +gr.eu.org +hr.eu.org +hu.eu.org +ie.eu.org +il.eu.org +in.eu.org +int.eu.org +is.eu.org +it.eu.org +jp.eu.org +kr.eu.org +lt.eu.org +lu.eu.org +lv.eu.org +mc.eu.org +me.eu.org +mk.eu.org +mt.eu.org +my.eu.org +net.eu.org +ng.eu.org +nl.eu.org +no.eu.org +nz.eu.org +paris.eu.org +pl.eu.org +pt.eu.org +q-a.eu.org +ro.eu.org +ru.eu.org +se.eu.org +si.eu.org +sk.eu.org +tr.eu.org +uk.eu.org +us.eu.org + // Fastly Inc. http://www.fastly.com/ // Submitted by Vladimir Vuksan 2013-05-31 a.ssl.fastly.net @@ -9379,6 +10948,10 @@ firebaseapp.com // Submitted by Jonathan Rudenberg 2014-07-12 flynnhub.com +// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains +// Submitted by David Illsley 2014-08-28 +service.gov.uk + // GitHub, Inc. // Submitted by Ben Toews 2014-02-06 github.io @@ -9392,21 +10965,37 @@ ro.com // Submitted by Eduardo Vela 2014-12-19 appspot.com blogspot.ae +blogspot.al +blogspot.am +blogspot.ba blogspot.be +blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch +blogspot.cl blogspot.co.at +blogspot.co.id blogspot.co.il +blogspot.co.ke blogspot.co.nz blogspot.co.uk +blogspot.co.za blogspot.com blogspot.com.ar blogspot.com.au blogspot.com.br +blogspot.com.by +blogspot.com.co +blogspot.com.cy +blogspot.com.ee +blogspot.com.eg blogspot.com.es +blogspot.com.mt +blogspot.com.ng blogspot.com.tr +blogspot.com.uy blogspot.cv blogspot.cz blogspot.de @@ -9415,30 +11004,46 @@ blogspot.fi blogspot.fr blogspot.gr blogspot.hk +blogspot.hr blogspot.hu blogspot.ie blogspot.in +blogspot.is blogspot.it blogspot.jp blogspot.kr +blogspot.li +blogspot.lt +blogspot.lu +blogspot.md +blogspot.mk blogspot.mr blogspot.mx +blogspot.my blogspot.nl blogspot.no +blogspot.pe blogspot.pt +blogspot.qa blogspot.re blogspot.ro +blogspot.rs blogspot.ru blogspot.se blogspot.sg +blogspot.si blogspot.sk +blogspot.sn blogspot.td blogspot.tw +blogspot.ug +blogspot.vn codespot.com googleapis.com googlecode.com pagespeedmobilizer.com withgoogle.com +withyoutube.com // Heroku : https://www.heroku.com/ // Submitted by Tom Maher 2013-05-02 @@ -9462,6 +11067,14 @@ azurewebsites.net azure-mobile.net cloudapp.net +// Mozilla Foundation : https://mozilla.org/ +// Submited by glob 2015-07-06 +bmoattachments.org + +// Neustar Inc. +// Submitted by Trung Tran 2015-04-23 +4u.com + // NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ // Submitted by Jeff Wheelhouse 2014-02-02 nfshost.com @@ -9490,17 +11103,38 @@ poznan.pl wroc.pl zakopane.pl +// Pantheon Systems, Inc. : https://pantheon.io/ +// Submitted by Gary Dylina 2015-09-14 +pantheon.io +gotpantheon.com + +// priv.at : http://www.nic.priv.at/ +// Submitted by registry 2008-06-09 +priv.at + +// QA2 +// Submitted by Daniel Dent (https://www.danieldent.com/) 2015-07-16 +qa2.com + // Red Hat, Inc. OpenShift : https://openshift.redhat.com/ // Submitted by Tim Kramer 2012-10-24 rhcloud.com -// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains -// Submitted by David Illsley 2014-08-28 -service.gov.uk +// Sandstorm Development Group, Inc. : https://sandcats.io/ +// Submitted by Asheesh Laroia 2015-07-21 +sandcats.io -// priv.at : http://www.nic.priv.at/ -// Submitted by registry 2008-06-09 -priv.at +// Service Online LLC : http://drs.ua/ +// Submitted by Serhii Bulakh 2015-07-30 +biz.ua +co.ua +pp.ua + +// SinaAppEngine : http://sae.sina.com.cn/ +// Submitted by SinaAppEngine 2015-02-02 +sinaapp.com +vipsinaapp.com +1kapp.com // TASK geographical domains (www.task.gda.pl/uslugi/dns) gda.pl commit 58ecdad0b08d8b8414abee1e5e8c89a384b6306c Author: Eli Zaretskii Date: Thu Sep 24 21:04:42 2015 +0300 Prevent timers from messing up TTY menus * src/term.c (tty_menu_activate): Inhibit redisplay for as long as the TTY menu is open. (Bug#21530) diff --git a/src/term.c b/src/term.c index 8ebb620..5acc473 100644 --- a/src/term.c +++ b/src/term.c @@ -3117,6 +3117,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, Lisp_Object selectface; int first_item = 0; int col, row; + Lisp_Object prev_inhibit_redisplay = Vinhibit_redisplay; USE_SAFE_ALLOCA; /* Don't allow non-positive x0 and y0, lest the menu will wrap @@ -3159,6 +3160,11 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, buffers_num_deleted = 1; } + /* Inhibit redisplay for as long as the menu is active, to avoid + messing the screen if some timer calls sit-for or a similar + function. */ + Vinhibit_redisplay = Qt; + /* Force update of the current frame, so that the desired and the current matrices are identical. */ update_frame_with_menu (sf, -1, -1); @@ -3349,6 +3355,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, if (!kbd_buffer_events_waiting ()) clear_input_pending (); SAFE_FREE (); + Vinhibit_redisplay = prev_inhibit_redisplay; return result; } commit 9fa9bc6a327e55d5a9cfc7e4b03f9dc0c8932669 Author: Paul Eggert Date: Thu Sep 24 09:13:36 2015 -0700 No need to mention K&R C in c-mode intro diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index c90a7db..b93bc8f 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@ -378,7 +378,7 @@ This manual describes @ccmode{} version 5.32. @comment Release.py script can update the version number automatically -@ccmode{} supports the editing of K&R and ANSI C, C++, Objective-C, +@ccmode{} supports the editing of C, C++, Objective-C, Java, CORBA's Interface Definition Language, Pike@footnote{A C-like scripting language with its roots in the LPC language used in some MUD engines. See @uref{http://pike.ida.liu.se/}.} and AWK files. In this diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 97491e4..5c68de4 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1265,7 +1265,7 @@ Note that the style variables are always made local to the buffer." ;; ;; ;; void myfunc(T* p) {} - ;; + ;; ;; Type a space in the first blank line, and the fontification of the next ;; line was fouled up by context fontification. (let (new-beg new-end new-region case-fold-search @@ -1455,7 +1455,8 @@ This function is called from `c-common-init', once per mode initialization." ;;;###autoload (define-derived-mode c-mode prog-mode "C" - "Major mode for editing K&R and ANSI C code. + "Major mode for editing C code. + To submit a problem report, enter `\\[c-submit-bug-report]' from a c-mode buffer. This automatically sets up a mail buffer with version information already added. You just need to add a description of the commit 8f88db14946f46a95603dfaa2a425d64b01fbb53 Author: Stefan Monnier Date: Thu Sep 24 08:54:39 2015 -0400 Fix recent bootstrap problems * src/syntax.c (parse_sexp_propertize): Fix last fix. * lisp/nxml/nxml-mode.el (nxml-comment-quote-nested): Fix paren typo. * lisp/emacs-lisp/lisp-mode.el: Require cl-lib for cl-progv. diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index f8b935e..fec9467 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -28,6 +28,8 @@ ;;; Code: +(eval-when-compile (require 'cl-lib)) + (defvar font-lock-comment-face) (defvar font-lock-doc-face) (defvar font-lock-keywords-case-fold-search) diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index 8b0dc92..0e2fca3 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -1351,9 +1351,9 @@ of the inserted start-tag or nil if none was inserted." start-tag-indent))))) inserted-start-tag-pos)) -(defun nxml-comment-quote-nested (cs ce unp) +(defun nxml-comment-quote-nested (_cs _ce unp) "Quote nested comments in buffer. -See `comment-quote-nested-function' for more information.") +See `comment-quote-nested-function' for more information." (goto-char (point-min)) (save-match-data (while (re-search-forward "-[\\]*-" nil t) diff --git a/src/syntax.c b/src/syntax.c index 6b1865f..cacdf18 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -499,7 +499,8 @@ parse_sexp_propertize (ptrdiff_t charpos) gl_state.e_property = syntax_propertize__done; gl_state.e_property_truncated = true; } - else if (gl_state.e_property_truncated) + else if (gl_state.e_property_truncated + && gl_state.e_property < syntax_propertize__done) { /* When moving backward, e_property might be set without resetting e_property_truncated, so the e_property_truncated flag may occasionally be left raised spuriously. This should be rare. */ commit 8c909d75128b5bf92b090d34adbe07ed882ecd74 Author: Michael Albinus Date: Thu Sep 24 09:36:12 2015 +0200 * src/gfilenotify.c (Fgfile_add_watch): Decrease polling rate. diff --git a/src/gfilenotify.c b/src/gfilenotify.c index b5baa30..8b6b0a0 100644 --- a/src/gfilenotify.c +++ b/src/gfilenotify.c @@ -215,6 +215,10 @@ will be reported only in case of the `moved' event. */) file); } + /* The default rate limit is 800 msec. We adapt this. */ + g_file_monitor_set_rate_limit (monitor, 100); + + /* Subscribe to the "changed" signal. */ g_signal_connect (monitor, "changed", (GCallback) dir_monitor_callback, NULL); commit f247147d1646e1d80068d5d8aaf284707606fe9d Author: Ivan Andrus Date: Wed Sep 23 09:21:32 2015 -0600 ; Implement Stefan's feedback on last two commits diff --git a/lisp/newcomment.el b/lisp/newcomment.el index 765e60a..0c49211 100644 --- a/lisp/newcomment.el +++ b/lisp/newcomment.el @@ -418,7 +418,6 @@ If UNP is non-nil, unquote nested comment markers." (setq cs (comment-string-strip cs t t)) (setq ce (comment-string-strip ce t t)) (when (and comment-quote-nested - comment-quote-nested-function (> (length ce) 0)) (funcall comment-quote-nested-function cs ce unp))) @@ -427,8 +426,8 @@ If UNP is non-nil, unquote nested comment markers." It expects to be called with the buffer narrowed to a single comment. It is used as a default for `comment-quote-nested-function'. -The arguments CS and CE are regular expressions matching comment -starting and ending delimiters respectively. +The arguments CS and CE are strings matching comment starting and +ending delimiters respectively. If UNP is non-nil, comments are unquoted instead. diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index dc151a3..8b0dc92 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -546,8 +546,7 @@ Many aspects this mode can be customized using (setq comment-end-skip "[ \t\r\n]*-->") (make-local-variable 'comment-line-break-function) (setq comment-line-break-function 'nxml-newline-and-indent) - (make-local-variable 'comment-quote-nested-function) - (setq comment-quote-nested-function 'nxml-comment-quote-nested) + (setq-local comment-quote-nested-function 'nxml-comment-quote-nested) (use-local-map nxml-mode-map) (save-excursion (save-restriction commit ec0ddb5c7a27dd600a68940db762fc5c92550b08 Author: Ivan Andrus Date: Tue Sep 8 16:38:13 2015 -0600 Properly quote nested xml comments (Bug#6267) (Bug#20001) * nxml-mode.el (nxml-comment-quote-nested): New function (nxml-mode): Set comment-quote-nested-function diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index 6c5c85b..dc151a3 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -546,6 +546,8 @@ Many aspects this mode can be customized using (setq comment-end-skip "[ \t\r\n]*-->") (make-local-variable 'comment-line-break-function) (setq comment-line-break-function 'nxml-newline-and-indent) + (make-local-variable 'comment-quote-nested-function) + (setq comment-quote-nested-function 'nxml-comment-quote-nested) (use-local-map nxml-mode-map) (save-excursion (save-restriction @@ -1350,6 +1352,18 @@ of the inserted start-tag or nil if none was inserted." start-tag-indent))))) inserted-start-tag-pos)) +(defun nxml-comment-quote-nested (cs ce unp) + "Quote nested comments in buffer. +See `comment-quote-nested-function' for more information.") + (goto-char (point-min)) + (save-match-data + (while (re-search-forward "-[\\]*-" nil t) + (goto-char (match-beginning 0)) + (forward-char 1) + (if unp + (delete-char 1) + (insert "\\"))))) + ;;; Indentation (defun nxml-indent-line () commit 04ef947705c1b4c1742f539c0299b1f3665ca504 Author: Ivan Andrus Date: Tue Sep 8 16:37:06 2015 -0600 Allow major-modes full control over quoting nested comments * newcomment.el (comment-quote-nested-function): New variable. (comment-quote-nested-default): New function. (comment-quote-nested): Use `comment-quote-nested-function'. diff --git a/lisp/newcomment.el b/lisp/newcomment.el index 7df05a0..765e60a 100644 --- a/lisp/newcomment.el +++ b/lisp/newcomment.el @@ -179,6 +179,11 @@ comments always start in column zero.") "Non-nil if nested comments should be quoted. This should be locally set by each major mode if needed.") +(defvar comment-quote-nested-function #'comment-quote-nested-default + "Function to quote nested comments in a region. +It takes the same arguments as `comment-quote-nested-default', +and is called with the buffer narrowed to a single comment.") + (defvar comment-continue nil "Continuation string to insert for multiline comments. This string will be added at the beginning of each line except the very @@ -412,28 +417,45 @@ function should first call this function explicitly." If UNP is non-nil, unquote nested comment markers." (setq cs (comment-string-strip cs t t)) (setq ce (comment-string-strip ce t t)) - (when (and comment-quote-nested (> (length ce) 0)) - (let ((re (concat (comment-quote-re ce unp) - "\\|" (comment-quote-re cs unp)))) - (goto-char (point-min)) - (while (re-search-forward re nil t) - (goto-char (match-beginning 0)) - (forward-char 1) - (if unp (delete-char 1) (insert "\\")) - (when (= (length ce) 1) - ;; If the comment-end is a single char, adding a \ after that - ;; "first" char won't deactivate it, so we turn such a CE - ;; into !CS. I.e. for pascal, we turn } into !{ - (if (not unp) - (when (string= (match-string 0) ce) - (replace-match (concat "!" cs) t t)) - (when (and (< (point-min) (match-beginning 0)) - (string= (buffer-substring (1- (match-beginning 0)) - (1- (match-end 0))) - (concat "!" cs))) - (backward-char 2) - (delete-char (- (match-end 0) (match-beginning 0))) - (insert ce)))))))) + (when (and comment-quote-nested + comment-quote-nested-function + (> (length ce) 0)) + (funcall comment-quote-nested-function cs ce unp))) + +(defun comment-quote-nested-default (cs ce unp) + "Quote comment delimiters in the buffer. +It expects to be called with the buffer narrowed to a single comment. +It is used as a default for `comment-quote-nested-function'. + +The arguments CS and CE are regular expressions matching comment +starting and ending delimiters respectively. + +If UNP is non-nil, comments are unquoted instead. + +To quote the delimiters, a \\ is inserted after the first +character of CS or CE. If CE is a single character it will +change CE into !CS." + (let ((re (concat (comment-quote-re ce unp) + "\\|" (comment-quote-re cs unp)))) + (goto-char (point-min)) + (while (re-search-forward re nil t) + (goto-char (match-beginning 0)) + (forward-char 1) + (if unp (delete-char 1) (insert "\\")) + (when (= (length ce) 1) + ;; If the comment-end is a single char, adding a \ after that + ;; "first" char won't deactivate it, so we turn such a CE + ;; into !CS. I.e. for pascal, we turn } into !{ + (if (not unp) + (when (string= (match-string 0) ce) + (replace-match (concat "!" cs) t t)) + (when (and (< (point-min) (match-beginning 0)) + (string= (buffer-substring (1- (match-beginning 0)) + (1- (match-end 0))) + (concat "!" cs))) + (backward-char 2) + (delete-char (- (match-end 0) (match-beginning 0))) + (insert ce))))))) ;;;; ;;;; Navigation commit 791355fd403eb1b9a73221e6ea586539ebdcb5e5 Author: Paul Eggert Date: Wed Sep 23 14:43:26 2015 -0700 Prefer CALLN in a few more places * src/macfont.m (macfont_set_family_cache): * src/nsterm.m (append2): * src/xterm.c (x_cr_export_frames): Prefer CALLN to allocating the arg arrays by hand. diff --git a/src/macfont.m b/src/macfont.m index 23d272c..97a255b 100644 --- a/src/macfont.m +++ b/src/macfont.m @@ -945,13 +945,7 @@ macfont_set_family_cache (Lisp_Object symbol, CFStringRef string) Lisp_Object value; if (!HASH_TABLE_P (macfont_family_cache)) - { - Lisp_Object args[2]; - - args[0] = QCtest; - args[1] = Qeq; - macfont_family_cache = Fmake_hash_table (2, args); - } + macfont_family_cache = CALLN (Fmake_hash_table, QCtest, Qeq); h = XHASH_TABLE (macfont_family_cache); i = hash_lookup (h, symbol, &hash); diff --git a/src/nsterm.m b/src/nsterm.m index 14f2beb..7c6b9dc 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -440,10 +440,7 @@ append2 (Lisp_Object list, Lisp_Object item) Utility to append to a list -------------------------------------------------------------------------- */ { - Lisp_Object array[2]; - array[0] = list; - array[1] = list1 (item); - return Fnconc (2, &array[0]); + return CALLN (Fnconc, list, list1 (item)); } diff --git a/src/xterm.c b/src/xterm.c index 13e1902..dd54552 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -575,7 +575,7 @@ x_cr_export_frames (Lisp_Object frames, cairo_surface_type_t surface_type) cairo_t *cr; int width, height; void (*surface_set_size_func) (cairo_surface_t *, double, double) = NULL; - Lisp_Object acc = Qnil, args[2]; + Lisp_Object acc = Qnil; int count = SPECPDL_INDEX (); Fredisplay (Qt); @@ -659,9 +659,7 @@ x_cr_export_frames (Lisp_Object frames, cairo_surface_type_t surface_type) #endif unbind_to (count, Qnil); - args[0] = intern ("concat"); - args[1] = Fnreverse (acc); - return Fapply (2, args); + return CALLN (Fapply, intern ("concat"), Fnreverse (acc)); } #endif /* USE_CAIRO */ commit 20ff1b5cd96a548376fd7f70fa1da5c0060849cd Author: Michael Albinus Date: Wed Sep 23 22:25:02 2015 +0200 Adapt file-notify-test02-events test case * test/automated/file-notify-tests.el (file-notify-test02-events): Create a new watch for every test. diff --git a/test/automated/file-notify-tests.el b/test/automated/file-notify-tests.el index 569f946..03946dd 100644 --- a/test/automated/file-notify-tests.el +++ b/test/automated/file-notify-tests.el @@ -264,22 +264,26 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." (skip-unless (file-notify--test-local-enabled)) (unwind-protect (progn + ;; Check creation, change, and deletion. (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) file-notify--test-tmpfile1 (file-notify--test-make-temp-name) file-notify--test-desc (file-notify-add-watch file-notify--test-tmpfile '(change) 'file-notify--test-event-handler)) - (should file-notify--test-desc) - - ;; Check creation, change, and deletion. (file-notify--test-with-events (file-notify--test-timeout) '(created changed deleted) (write-region "any text" nil file-notify--test-tmpfile nil 'no-message) (delete-file file-notify--test-tmpfile)) + (file-notify-rm-watch file-notify--test-desc) ;; Check copy. + (setq file-notify--test-desc + (file-notify-add-watch + file-notify--test-tmpfile + '(change) 'file-notify--test-event-handler)) + (should file-notify--test-desc) (file-notify--test-with-events (file-notify--test-timeout) ;; w32notify does not distinguish between `changed' and @@ -296,8 +300,14 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." (set-file-times file-notify--test-tmpfile '(0 0)) (delete-file file-notify--test-tmpfile) (delete-file file-notify--test-tmpfile1)) + (file-notify-rm-watch file-notify--test-desc) ;; Check rename. + (setq file-notify--test-desc + (file-notify-add-watch + file-notify--test-tmpfile + '(change) 'file-notify--test-event-handler)) + (should file-notify--test-desc) (file-notify--test-with-events (file-notify--test-timeout) '(created changed renamed) (write-region @@ -305,10 +315,10 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." (rename-file file-notify--test-tmpfile file-notify--test-tmpfile1) ;; After the rename, we won't get events anymore. (delete-file file-notify--test-tmpfile1)) + (file-notify-rm-watch file-notify--test-desc) ;; Check attribute change. It doesn't work for w32notify. (unless (eq file-notify--library 'w32notify) - (file-notify-rm-watch file-notify--test-desc) (setq file-notify--test-desc (file-notify-add-watch file-notify--test-tmpfile @@ -320,7 +330,8 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." (set-file-modes file-notify--test-tmpfile 000) (read-event nil nil 0.1) ; In order to distinguish the events. (set-file-times file-notify--test-tmpfile '(0 0)) - (delete-file file-notify--test-tmpfile))) + (delete-file file-notify--test-tmpfile)) + (file-notify-rm-watch file-notify--test-desc)) ;; Check the global sequence again just to make sure that ;; `file-notify--test-events' has been set correctly. commit 8c3c506aa52b96bac8a24ebfd81f403fcfe0228d Author: Michael Albinus Date: Wed Sep 23 21:21:49 2015 +0200 ; Fix thinko in last commit of filenotify.el diff --git a/lisp/filenotify.el b/lisp/filenotify.el index d48d3f9..a07f99a 100644 --- a/lisp/filenotify.el +++ b/lisp/filenotify.el @@ -327,30 +327,31 @@ DESCRIPTOR should be an object returned by `file-notify-add-watch'." (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) (file (if (consp descriptor) (cdr descriptor))) (dir (car (gethash desc file-notify-descriptors))) - handler registered) + (handler (and (stringp dir) + (find-file-name-handler dir 'file-notify-rm-watch))) + (registered (gethash desc file-notify-descriptors))) (when (stringp dir) ;; Call low-level function. - (setq handler (find-file-name-handler dir 'file-notify-rm-watch)) - (condition-case nil - (if handler - ;; A file name handler could exist even if there is no - ;; local file notification support. - (funcall handler 'file-notify-rm-watch desc) - - (funcall - (cond - ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch) - ((eq file-notify--library 'inotify) 'inotify-rm-watch) - ((eq file-notify--library 'w32notify) 'w32notify-rm-watch)) - desc)) - (file-notify-error nil)) + (when (null (cdr registered)) + (condition-case nil + (if handler + ;; A file name handler could exist even if there is no local + ;; file notification support. + (funcall handler 'file-notify-rm-watch desc) + + (funcall + (cond + ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch) + ((eq file-notify--library 'inotify) 'inotify-rm-watch) + ((eq file-notify--library 'w32notify) 'w32notify-rm-watch)) + desc)) + (file-notify-error nil))) ;; Modify `file-notify-descriptors'. (if (not file) (remhash desc file-notify-descriptors) - (setq registered (gethash desc file-notify-descriptors)) (setcdr registered (delete (assoc file (cdr registered)) (cdr registered))) (if (null (cdr registered)) commit cad8aef3241efa0873fb0c003b563cf31a4c0f2e Author: Michael Albinus Date: Wed Sep 23 20:34:22 2015 +0200 Continue gfilenotify.c implementation of missing parts * lisp/filenotify.el (file-notify-add-watch): Append `flags' to `gfile-add-watch' call. (file-notify-rm-watch): Modify `file-notify-descriptors' only after calling the low level functions. * src/gfilenotify.c (dir_monitor_callback): Check, whether event_type is expected. (Fgfile_add_watch): Allow also `change'and `attribute-change' for FLAGS. (Fgfile_rm_watch): Fix typo. (syms_of_gfilenotify): Declare Qchange and Qattribute_change. diff --git a/lisp/filenotify.el b/lisp/filenotify.el index e2c0af0..d48d3f9 100644 --- a/lisp/filenotify.el +++ b/lisp/filenotify.el @@ -291,7 +291,7 @@ FILE is the name of the file whose event is being reported." ;; Determine respective flags. (if (eq file-notify--library 'gfilenotify) - (setq l-flags '(watch-mounts send-moved)) + (setq l-flags (append '(watch-mounts send-moved) flags)) (when (memq 'change flags) (setq l-flags @@ -330,7 +330,21 @@ DESCRIPTOR should be an object returned by `file-notify-add-watch'." handler registered) (when (stringp dir) + ;; Call low-level function. (setq handler (find-file-name-handler dir 'file-notify-rm-watch)) + (condition-case nil + (if handler + ;; A file name handler could exist even if there is no + ;; local file notification support. + (funcall handler 'file-notify-rm-watch desc) + + (funcall + (cond + ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch) + ((eq file-notify--library 'inotify) 'inotify-rm-watch) + ((eq file-notify--library 'w32notify) 'w32notify-rm-watch)) + desc)) + (file-notify-error nil)) ;; Modify `file-notify-descriptors'. (if (not file) @@ -341,23 +355,7 @@ DESCRIPTOR should be an object returned by `file-notify-add-watch'." (delete (assoc file (cdr registered)) (cdr registered))) (if (null (cdr registered)) (remhash desc file-notify-descriptors) - (puthash desc registered file-notify-descriptors))) - - ;; Call low-level function. - (when (null (cdr registered)) - (condition-case nil - (if handler - ;; A file name handler could exist even if there is no local - ;; file notification support. - (funcall handler 'file-notify-rm-watch desc) - - (funcall - (cond - ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch) - ((eq file-notify--library 'inotify) 'inotify-rm-watch) - ((eq file-notify--library 'w32notify) 'w32notify-rm-watch)) - desc)) - (file-notify-error nil)))))) + (puthash desc registered file-notify-descriptors)))))) (defun file-notify-valid-p (descriptor) "Check a watch specified by its DESCRIPTOR. diff --git a/src/gfilenotify.c b/src/gfilenotify.c index 1439666..b5baa30 100644 --- a/src/gfilenotify.c +++ b/src/gfilenotify.c @@ -29,7 +29,7 @@ along with GNU Emacs. If not, see . */ #include "process.h" -/* This is a list, elements are triples (DESCRIPTOR FILE CALLBACK) */ +/* This is a list, elements are triples (DESCRIPTOR FILE FLAGS CALLBACK) */ static Lisp_Object watch_list; /* This is the callback function for arriving signals from @@ -42,7 +42,7 @@ dir_monitor_callback (GFileMonitor *monitor, GFileMonitorEvent event_type, gpointer user_data) { - Lisp_Object symbol, monitor_object, watch_object; + Lisp_Object symbol, monitor_object, watch_object, flags; char *name = g_file_get_parse_name (file); char *oname = other_file ? g_file_get_parse_name (other_file) : NULL; @@ -84,26 +84,35 @@ dir_monitor_callback (GFileMonitor *monitor, if (CONSP (watch_object)) { - /* Construct an event. */ struct input_event event; Lisp_Object otail = oname ? list1 (build_string (oname)) : Qnil; - EVENT_INIT (event); - event.kind = FILE_NOTIFY_EVENT; - event.frame_or_window = Qnil; - event.arg = list2 (Fcons (monitor_object, - Fcons (symbol, - Fcons (build_string (name), - otail))), - XCAR (XCDR (XCDR (watch_object)))); - - /* Store it into the input event queue. */ - kbd_buffer_store_event (&event); + + /* Check, whether event_type is expected. */ + flags = XCAR (XCDR (XCDR (watch_object))); + if ((!NILP (Fmember (Qchange, flags)) && + !NILP (Fmember (symbol, list5 (Qchanged, Qchanges_done_hint, + Qdeleted, Qcreated, Qmoved)))) || + (!NILP (Fmember (Qattribute_change, flags)) && + ((EQ (symbol, Qattribute_changed))))) + { + /* Construct an event. */ + EVENT_INIT (event); + event.kind = FILE_NOTIFY_EVENT; + event.frame_or_window = Qnil; + event.arg = list2 (Fcons (monitor_object, + Fcons (symbol, + Fcons (build_string (name), + otail))), + XCAR (XCDR (XCDR (XCDR (watch_object))))); + + /* Store it into the input event queue. */ + kbd_buffer_store_event (&event); + // XD_DEBUG_MESSAGE ("%s", XD_OBJECT_TO_STRING (event.arg)); + } /* Cancel monitor if file or directory is deleted. */ - if (((event_type == G_FILE_MONITOR_EVENT_DELETED) || - (event_type == G_FILE_MONITOR_EVENT_MOVED)) && - (strcmp (name, SSDATA (XCAR (XCDR (watch_object)))) == 0) && - (!g_file_monitor_is_cancelled (monitor))) + if (!NILP (Fmember (symbol, list2 (Qdeleted, Qmoved))) && + !g_file_monitor_is_cancelled (monitor)) g_file_monitor_cancel (monitor); } @@ -127,9 +136,13 @@ watched for some reason, this function signals a `file-notify-error' error. FLAGS is a list of conditions to set what will be watched for. It can include the following symbols: - `watch-mounts' -- watch for mount events - `send-moved' -- pair `deleted' and `created' events caused by file - renames and send a single `renamed' event instead + `change' -- watch for file changes + `attribute-change' -- watch for file attributes changes, like + permissions or modification time + `watch-mounts' -- watch for mount events + `send-moved' -- pair `deleted' and `created' events caused by + file renames and send a single `renamed' event + instead When any event happens, Emacs will call the CALLBACK function passing it a single argument EVENT, which is of the form @@ -206,13 +219,13 @@ will be reported only in case of the `moved' event. */) (GCallback) dir_monitor_callback, NULL); /* Store watch object in watch list. */ - watch_object = list3 (watch_descriptor, file, callback); + watch_object = list4 (watch_descriptor, file, flags, callback); watch_list = Fcons (watch_object, watch_list); return watch_descriptor; } -DEFUN ("gfile-rm-watc", Fgfile_rm_watch, Sgfile_rm_watch, 1, 1, 0, +DEFUN ("gfile-rm-watch", Fgfile_rm_watch, Sgfile_rm_watch, 1, 1, 0, doc: /* Remove an existing WATCH-DESCRIPTOR. WATCH-DESCRIPTOR should be an object returned by `gfile-add-watch'. */) @@ -279,6 +292,8 @@ syms_of_gfilenotify (void) defsubr (&Sgfile_valid_p); /* Filter objects. */ + DEFSYM (Qchange, "change"); + DEFSYM (Qattribute_change, "attribute-change"); DEFSYM (Qwatch_mounts, "watch-mounts"); /* G_FILE_MONITOR_WATCH_MOUNTS */ DEFSYM (Qsend_moved, "send-moved"); /* G_FILE_MONITOR_SEND_MOVED */ commit 4c0fed13e5ca1826bab52cd9c3fc31ad0e5c765c Author: Stefan Monnier Date: Wed Sep 23 12:33:48 2015 -0400 * src/syntax.c: Handle spurious e_property_truncated flag * src/syntax.c (parse_sexp_propertize): Handle spurious e_property_truncated flag. (update_syntax_table_forward): Remove invalid assertion. diff --git a/src/syntax.c b/src/syntax.c index 3bd301f..6b1865f 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -499,6 +499,13 @@ parse_sexp_propertize (ptrdiff_t charpos) gl_state.e_property = syntax_propertize__done; gl_state.e_property_truncated = true; } + else if (gl_state.e_property_truncated) + { /* When moving backward, e_property might be set without resetting + e_property_truncated, so the e_property_truncated flag may + occasionally be left raised spuriously. This should be rare. */ + gl_state.e_property_truncated = false; + update_syntax_table_forward (charpos, false, Qnil); + } } void @@ -509,7 +516,6 @@ update_syntax_table_forward (ptrdiff_t charpos, bool init, { eassert (NILP (object)); eassert (charpos >= gl_state.e_property); - eassert (charpos >= syntax_propertize__done); parse_sexp_propertize (charpos); } else commit aab67529d229cd0d09ae3b9d7f8bb2f44e1d6276 Author: Eli Zaretskii Date: Wed Sep 23 16:20:10 2015 +0300 Support ':relative-width' space display spec on text-mode terminals * src/xdisp.c (produce_stretch_glyph): Support ':relative-width' space display spec on text-mode terminals, by calling PRODUCE_GLYPHS instead of x_produce_glyphs. Remove the HAVE_WINDOW_SYSTEM guards from the supporting code, as well as the test for a GUI frame. diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 6a30adf..452462a 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -4387,8 +4387,9 @@ width. @var{width} can also be a @dfn{pixel width} specification Specifies that the width of the stretch should be computed from the first character in the group of consecutive characters that have the same @code{display} property. The space width is the pixel width of -that character, multiplied by @var{factor}. This specification is -only supported on graphic terminals. +that character, multiplied by @var{factor}. (On text-mode terminals, +the ``pixel width'' of a character is usually 1, but it could be more +for TABs and double-width CJK characters.) @item :align-to @var{hpos} Specifies that the space should be wide enough to reach @var{hpos}. diff --git a/src/xdisp.c b/src/xdisp.c index 0d0bc91..bac74e2 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -25956,9 +25956,7 @@ produce_stretch_glyph (struct it *it) zero_width_ok_p = true; width = (int)tem; } -#ifdef HAVE_WINDOW_SYSTEM - else if (FRAME_WINDOW_P (it->f) - && (prop = Fplist_get (plist, QCrelative_width), NUMVAL (prop) > 0)) + else if (prop = Fplist_get (plist, QCrelative_width), NUMVAL (prop) > 0) { /* Relative width `:relative-width FACTOR' specified and valid. Compute the width of the characters having the `glyph' @@ -25978,10 +25976,9 @@ produce_stretch_glyph (struct it *it) it2.glyph_row = NULL; it2.what = IT_CHARACTER; - x_produce_glyphs (&it2); + PRODUCE_GLYPHS (&it2); width = NUMVAL (prop) * it2.pixel_width; } -#endif /* HAVE_WINDOW_SYSTEM */ else if ((prop = Fplist_get (plist, QCalign_to), !NILP (prop)) && calc_pixel_width_or_height (&tem, it, prop, font, true, &align_to)) commit 0a133c70f1d2c068e8ad3ed5527f13ea7246fc68 Author: Oleh Krehel Date: Wed Sep 23 13:50:15 2015 +0200 Move let-when-compile to lisp-mode.el This fixes the bootstrapping problem of `let-when-compile' using `cl-progv' while being in subr.el (i.e. before cl stuff was loaded). diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 4576f5c..f8b935e 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -235,6 +235,19 @@ (match-beginning 0))))) (throw 'found t)))))) +(defmacro let-when-compile (bindings &rest body) + "Like `let', but allow for compile time optimization. +Use BINDINGS as in regular `let', but in BODY each usage should +be wrapped in `eval-when-compile'. +This will generate compile-time constants from BINDINGS." + (declare (indent 1) (debug let)) + (cl-progv (mapcar #'car bindings) + (mapcar (lambda (x) (eval (cadr x))) bindings) + (macroexpand-all + (macroexp-progn + body) + macroexpand-all-environment))) + (let-when-compile ((lisp-fdefs '("defmacro" "defun")) (lisp-vdefs '("defvar")) diff --git a/lisp/subr.el b/lisp/subr.el index ce3011d..b1b3638 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1503,19 +1503,6 @@ All symbols are bound before the VALUEFORMs are evalled." ,@(mapcar (lambda (binder) `(setq ,@binder)) binders) ,@body)) -(defmacro let-when-compile (bindings &rest body) - "Like `let', but allow for compile time optimization. -Use BINDINGS as in regular `let', but in BODY each usage should -be wrapped in `eval-when-compile'. -This will generate compile-time constants from BINDINGS." - (declare (indent 1) (debug let)) - (cl-progv (mapcar #'car bindings) - (mapcar (lambda (x) (eval (cadr x))) bindings) - (macroexpand-all - (macroexp-progn - body) - macroexpand-all-environment))) - (defmacro with-wrapper-hook (hook args &rest body) "Run BODY, using wrapper functions from HOOK with additional ARGS. HOOK is an abnormal hook. Each hook function in HOOK \"wraps\"