]> git.cameronkatri.com Git - bsdgames-darwin.git/log
bsdgames-darwin.git
5 years agointroduce some common variables for use in GCC warning disables:
mrg [Sun, 13 Oct 2019 07:28:04 +0000 (07:28 +0000)]
introduce some common variables for use in GCC warning disables:

GCC_NO_FORMAT_TRUNCATION    -Wno-format-truncation (GCC 7/8)
GCC_NO_STRINGOP_TRUNCATION  -Wno-stringop-truncation (GCC 8)
GCC_NO_STRINGOP_OVERFLOW    -Wno-stringop-overflow (GCC 8)
GCC_NO_CAST_FUNCTION_TYPE   -Wno-cast-function-type (GCC 8)

use these to turn off warnings for most GCC-8 complaints.  many
of these are false positives, most of the real bugs are already
commited, or are yet to come.

we plan to introduce versions of (some?) of these that use the
"-Wno-error=" form, which still displays the warnings but does
not make it an error, and all of the above will be re-considered
as either being "fix me" (warning still displayed) or "warning
is wrong."

5 years agoexpand the internal consistency checks in truedirec() to avoid
mrg [Sat, 5 Oct 2019 23:34:14 +0000 (23:34 +0000)]
expand the internal consistency checks in truedirec() to avoid
fallthrough cases.  now if direction turns up wrong (it should
not, but this code can't tell that, and convert it to an enum
that would also fix this, is more effort than this is worth.

5 years agoconvert HAVE_GCC == 7 to HAVE_GCC >= 7.
mrg [Sun, 29 Sep 2019 23:44:58 +0000 (23:44 +0000)]
convert HAVE_GCC == 7 to HAVE_GCC >= 7.

5 years agoEnd sentence with a dot.
wiz [Mon, 2 Sep 2019 08:26:00 +0000 (08:26 +0000)]
End sentence with a dot.

5 years agoDocument history.
sevan [Sun, 1 Sep 2019 22:50:11 +0000 (22:50 +0000)]
Document history.
https://www.bell-labs.com/usr/dmr/www/man11.pdf
Between v1 & v6 UNIX, bcd was rewritten in C, but I don't know if which version,
hence I've skipped mentioning it.

5 years agoDonnie Darko
sevan [Thu, 22 Aug 2019 22:51:47 +0000 (22:51 +0000)]
Donnie Darko

5 years agoThe mother of all demos
sevan [Fri, 26 Jul 2019 07:41:22 +0000 (07:41 +0000)]
The mother of all demos

5 years agoUse .Dl for displays with single command. Specify .Bl -width with the
uwe [Tue, 23 Jul 2019 11:02:29 +0000 (11:02 +0000)]
Use .Dl for displays with single command.  Specify .Bl -width with the
same formatting as the actual tags.

5 years agostrfile is installed, don't claim it isn't.
uwe [Tue, 23 Jul 2019 10:40:55 +0000 (10:40 +0000)]
strfile is installed, don't claim it isn't.

5 years agoPrettify formatting.
uwe [Tue, 23 Jul 2019 09:50:27 +0000 (09:50 +0000)]
Prettify formatting.

5 years agoUse double dash to simulate em dash
sevan [Mon, 22 Jul 2019 13:44:13 +0000 (13:44 +0000)]
Use double dash to simulate em dash

5 years agoUse \(em to get an emphasis dash
sevan [Mon, 22 Jul 2019 13:37:37 +0000 (13:37 +0000)]
Use \(em to get an emphasis dash

5 years agoArt for the masses - The Dream Machine
sevan [Mon, 22 Jul 2019 09:47:28 +0000 (09:47 +0000)]
Art for the masses - The Dream Machine
The text used an em dash which I've replaced with a coma here.

5 years agoReport the users score _after_ the game has ended and the screen has
pgoyette [Tue, 19 Mar 2019 00:11:34 +0000 (00:11 +0000)]
Report the users score _after_ the game has ended and the screen has
been restored to pre-game state.  Otherwise, the user gets a message
that their score did (or more likely, did not) improve over their
previous score, yet the user has no indication of what the current
score actually was!

5 years agoShorter than a season - The Soul Of A New Machine
sevan [Sun, 24 Feb 2019 12:34:00 +0000 (12:34 +0000)]
Shorter than a season - The Soul Of A New Machine

5 years agoadd fallthrough
christos [Mon, 18 Feb 2019 19:35:44 +0000 (19:35 +0000)]
add fallthrough

5 years agoapply -Wno-error=implicit-fallthrough on files that have fallthru
mrg [Mon, 4 Feb 2019 09:51:47 +0000 (09:51 +0000)]
apply -Wno-error=implicit-fallthrough on files that have fallthru
comments but are missed by the current checker.

5 years ago- done() can return in wizard mode. don't NOTREACHED'd it
mrg [Mon, 4 Feb 2019 03:33:15 +0000 (03:33 +0000)]
- done() can return in wizard mode.  don't NOTREACHED'd it
  but break instead.

5 years ago- 'cango' is used beyond a bool type. make it an int.
mrg [Mon, 4 Feb 2019 03:29:41 +0000 (03:29 +0000)]
- 'cango' is used beyond a bool type.  make it an int.
- add a couple of fallthru comments.

5 years ago- enlarge buffer to avoid snprintf() truncation
mrg [Sun, 3 Feb 2019 10:48:46 +0000 (10:48 +0000)]
- enlarge buffer to avoid snprintf() truncation

5 years ago- avoid multipling a boolean value, use &&.
mrg [Sun, 3 Feb 2019 10:45:58 +0000 (10:45 +0000)]
- avoid multipling a boolean value, use &&.

5 years ago- add or adjust /* FALLTHROUGH */ where appropriate
mrg [Sun, 3 Feb 2019 03:19:25 +0000 (03:19 +0000)]
- add or adjust /* FALLTHROUGH */ where appropriate
- add __unreachable() after functions that can return but won't in
  this case, and thus can't be marked __dead easily

5 years agoAdd Alfred North Whitehead quote.
sevan [Mon, 21 Jan 2019 16:58:47 +0000 (16:58 +0000)]
Add Alfred North Whitehead quote.

6 years agoIncite the "Purple Cow" wrath of Gelett Burgess upon ourselves.
jakllsch [Sun, 13 Jan 2019 17:55:03 +0000 (17:55 +0000)]
Incite the "Purple Cow" wrath of Gelett Burgess upon ourselves.

6 years agoMore appropriate line-wrapping for previous.
pgoyette [Sat, 15 Dec 2018 22:00:16 +0000 (22:00 +0000)]
More appropriate line-wrapping for previous.

6 years agoSome advice from Adam Savage / Alex Jason
sevan [Sat, 15 Dec 2018 17:11:10 +0000 (17:11 +0000)]
Some advice from Adam Savage / Alex Jason
https://www.reddit.com/r/mythbusters/comments/3wgqgv/the_origin_of_the_remember_kids_the_only/

6 years agoAdvice from Bob Morris
sevan [Wed, 3 Oct 2018 00:13:16 +0000 (00:13 +0000)]
Advice from Bob Morris
https://www.ieee-security.org/Cipher/ConfReports/conf-rep-Crypto95.html

6 years agoI've been on an Ed Wood binge.
sevan [Wed, 12 Sep 2018 22:10:07 +0000 (22:10 +0000)]
I've been on an Ed Wood binge.

6 years agoreplace ipf->npf
maxv [Sun, 2 Sep 2018 16:08:12 +0000 (16:08 +0000)]
replace ipf->npf

6 years agotypo
dholland [Sat, 25 Aug 2018 19:38:37 +0000 (19:38 +0000)]
typo

6 years agoTry freebsd's pkg-info as well
maya [Thu, 16 Aug 2018 13:31:04 +0000 (13:31 +0000)]
Try freebsd's pkg-info as well

From John Hein, via Nikolai Lifanov. PR misc/52684

6 years agofix the previous. the code was right, just badly formatted before.
mrg [Sun, 24 Jun 2018 12:55:36 +0000 (12:55 +0000)]
fix the previous.  the code was right, just badly formatted before.

should fix infinite loops reported in some cases.

6 years agoRestore the MKGROFF=bo MKCXX=yes build
kamil [Mon, 11 Jun 2018 14:18:16 +0000 (14:18 +0000)]
Restore the MKGROFF=bo MKCXX=yes build

Mark the documentation in dc(1), gprof(1), rogue(6) and fsck_ffs(8) with
the .roff flag in SUBDIR.

Sponsored by <The NetBSD Foundation>

6 years agouse SUBDIR.roff suggested by uwe@
christos [Sun, 10 Jun 2018 17:55:11 +0000 (17:55 +0000)]
use SUBDIR.roff suggested by uwe@

6 years agomake fortune fatter
snj [Tue, 8 May 2018 05:24:22 +0000 (05:24 +0000)]
make fortune fatter

6 years agoCreate a new bsd.hostinit.mk file and put the build definitions for all host
christos [Tue, 1 May 2018 19:59:42 +0000 (19:59 +0000)]
Create a new bsd.hostinit.mk file and put the build definitions for all host
programs there; make all Makefiles that use bsd.hostprog.mk include it.
Namely turn off MKREPRO and don't make lint, man pages, info files etc.
Remove the Makefile.inc files that contained these same settings, and
remove the settings from Makefile.host

6 years agowtf(6): use character classes
eadler [Wed, 7 Mar 2018 08:25:43 +0000 (08:25 +0000)]
wtf(6): use character classes

ok pgoyette@ silence dholland@

6 years agowtf(6): quote "$f"
eadler [Wed, 7 Mar 2018 08:24:16 +0000 (08:24 +0000)]
wtf(6): quote "$f"

ok pgoyette@ silence dholland@

6 years ago[fish] don't allow users to request cards they have made books for
eadler [Mon, 5 Mar 2018 04:59:54 +0000 (04:59 +0000)]
[fish] don't allow users to request cards they have made books for

While here, don't re-renter pro mode

PR bin/52973

ok maya@ dh@

6 years agoTypos.
dholland [Thu, 8 Feb 2018 09:05:16 +0000 (09:05 +0000)]
Typos.

6 years agofix for OpenSSL-1.1
christos [Tue, 6 Feb 2018 16:53:27 +0000 (16:53 +0000)]
fix for OpenSSL-1.1

6 years agofix issues found by GCC 6.4:
mrg [Sun, 4 Feb 2018 08:48:05 +0000 (08:48 +0000)]
fix issues found by GCC 6.4:

battlestar was missing some {} in its insane printf()+puts() usage.
this is a literal code sequence i found:

printf("The blast catches ");
printf("the goddess in the ");
printf("stomach, knocking ");
puts("her to the ground.");
printf("She writhes in the ");
printf("dirt as the agony of ");
puts("death taunts her.");
puts("She has stopped moving.");

no lines inserted or removed.

tetris' checkscores() had wrong and missing {} usage.

6 years agoPR/52976: Eitan Adler: handle larger primes
christos [Sat, 3 Feb 2018 15:40:29 +0000 (15:40 +0000)]
PR/52976: Eitan Adler: handle larger primes
Using results from
    J. Sorenson and J. Webster, Strong pseudoprimes to twelve prime
    bases, Math. Comp. 86(304):985-1003, 2017.
teach primes(6) to enumerate primes up to 2^64 - 1.  Until Sorenson
and Webster's paper, we did not know how many strong speudoprime tests
were required when testing alleged primes between 3825123056546413051
and 2^64 - 1.

Adapted from: FreeBSD

7 years agoDon't skip the superfluous "is" argument if it's not superfluous!
pgoyette [Wed, 17 Jan 2018 03:03:59 +0000 (03:03 +0000)]
Don't skip the superfluous "is" argument if it's not superfluous!

This allows us to use `wtf is` and get information for the acronym "is"
and produces the same output as `wtf is is` withough requiring the extra
typing by the user.

7 years agoNeither bcd(6) nor morse(6) produce output containing slashes, and the
pgoyette [Tue, 16 Jan 2018 06:43:53 +0000 (06:43 +0000)]
Neither bcd(6) nor morse(6) produce output containing slashes, and the
-d (decode) option works just fine with dashes.  :)

7 years agoAdd _, from Eitan Adler in PR bin/52897
maya [Tue, 16 Jan 2018 06:20:24 +0000 (06:20 +0000)]
Add _, from Eitan Adler in PR bin/52897

7 years agomove offensive quotes per board@
mlelstv [Wed, 13 Dec 2017 21:11:27 +0000 (21:11 +0000)]
move offensive quotes per board@

7 years agoattributions are supposed to be indented.
dholland [Wed, 6 Dec 2017 17:54:58 +0000 (17:54 +0000)]
attributions are supposed to be indented.

7 years agoCorrect code flow of a quote translation (by Tom Ivar Helbekkmo)
kamil [Wed, 6 Dec 2017 17:41:15 +0000 (17:41 +0000)]
Correct code flow of a quote translation (by Tom Ivar Helbekkmo)

7 years agoFix typos, thanks to Tom Ivar Helbekkmo
pgoyette [Wed, 6 Dec 2017 08:38:33 +0000 (08:38 +0000)]
Fix typos, thanks to Tom Ivar Helbekkmo

7 years agoAdd new fortune entry with a quote from Jozef Pilsudski
kamil [Tue, 5 Dec 2017 22:51:59 +0000 (22:51 +0000)]
Add new fortune entry with a quote from Jozef Pilsudski

This quote is a longer form of "the dogs bark, but the caravan goes on"
and compares Poles and Lithuanians (historical meanings used from the time
of country union of both nations).

Today is the 150th birthday anniversary of Jozef Pilsudski (1867-1935).

7 years agorevert removals while there is an active discussion on what to do.
christos [Sun, 19 Nov 2017 01:31:53 +0000 (01:31 +0000)]
revert removals while there is an active discussion on what to do.

7 years agoRemove a few offensive quotes, put in as many new quotes.
maya [Sat, 18 Nov 2017 20:48:50 +0000 (20:48 +0000)]
Remove a few offensive quotes, put in as many new quotes.

PR bin/52735

7 years agoadd quote about libraries offending everyone
jnemeth [Sat, 18 Nov 2017 19:51:46 +0000 (19:51 +0000)]
add quote about libraries offending everyone

7 years agoAdd -h option to factor(6): duplicate factors are printed in
rin [Sat, 11 Nov 2017 23:48:44 +0000 (23:48 +0000)]
Add -h option to factor(6): duplicate factors are printed in
"human-readable" form of x^n.

7 years agoInclude time.h for time. Drop sys/types.h and expect basic working
joerg [Mon, 2 Oct 2017 22:03:10 +0000 (22:03 +0000)]
Include time.h for time. Drop sys/types.h and expect basic working
system headers.

7 years agotypo
dholland [Sun, 2 Jul 2017 07:02:47 +0000 (07:02 +0000)]
typo

7 years agoanother one
dholland [Tue, 13 Jun 2017 17:18:00 +0000 (17:18 +0000)]
another one

7 years agoPermit Prof. Steven Falcon [sic] to play hals_end(6) (or, more
leot [Sun, 21 May 2017 16:47:26 +0000 (16:47 +0000)]
Permit Prof. Steven Falcon [sic] to play hals_end(6) (or, more
seriously: also permit games that contain underscores to be invoked
via wargames(6))

7 years agoRemove MKCRYPTO option.
riastradh [Sun, 21 May 2017 15:28:36 +0000 (15:28 +0000)]
Remove MKCRYPTO option.

Originally, MKCRYPTO was introduced because the United States
classified cryptography as a munition and restricted its export.  The
export controls were substantially relaxed fifteen years ago, and are
essentially irrelevant for software with published source code.

In the intervening time, nobody bothered to remove the option after
its motivation -- the US export restriction -- was eliminated.  I'm
not aware of any other operating system that has a similar option; I
expect it is mainly out of apathy for churn that we still have it.
Today, cryptography is an essential part of modern computing -- you
can't use the internet responsibly without cryptography.

The position of the TNF board of directors is that TNF makes no
representation that MKCRYPTO=no satisfies any country's cryptography
regulations.

My personal position is that the availability of cryptography is a
basic human right; that any local laws restricting it to a privileged
few are fundamentally immoral; and that it is wrong for developers to
spend effort crippling cryptography to work around such laws.

As proposed on tech-crypto, tech-security, and tech-userlevel to no
objections:

https://mail-index.netbsd.org/tech-crypto/2017/05/06/msg000719.html
https://mail-index.netbsd.org/tech-security/2017/05/06/msg000928.html
https://mail-index.netbsd.org/tech-userlevel/2017/05/06/msg010547.html

P.S.  Reviewing all the uses of MKCRYPTO in src revealed a lot of
*bad* crypto that was conditional on it, e.g. DES in telnet...  That
should probably be removed too, but on the grounds that it is bad,
not on the grounds that it is (nominally) crypto.

7 years agoa thing.
dholland [Thu, 4 May 2017 19:12:53 +0000 (19:12 +0000)]
a thing.

7 years agoRemove unmaintained link to imrryr from NetBSD specific fortune(6) entries
kamil [Sun, 16 Apr 2017 20:08:59 +0000 (20:08 +0000)]
Remove unmaintained link to imrryr from NetBSD specific fortune(6) entries

The original content is not accessible with the original link (missing
closing /). This page does not look to be updated since 2002 and artwork
is not freely reusable.

7 years agoadd somethign
dholland [Sat, 25 Mar 2017 22:33:16 +0000 (22:33 +0000)]
add somethign

7 years agoelide compiler stupidity.
christos [Mon, 20 Mar 2017 22:05:27 +0000 (22:05 +0000)]
elide compiler stupidity.

8 years agoneed time.h for time(), got side-loaded before from <fcntl.h> via <sys/stat.h>
christos [Tue, 10 Jan 2017 20:41:40 +0000 (20:41 +0000)]
need time.h for time(), got side-loaded before from <fcntl.h> via <sys/stat.h>

8 years agoned stat.h
christos [Tue, 10 Jan 2017 20:40:53 +0000 (20:40 +0000)]
ned stat.h

8 years agoadd a couple
dholland [Fri, 14 Oct 2016 03:20:04 +0000 (03:20 +0000)]
add a couple

8 years agoFix another place with a wrong author of "Unkempt Thoughts"
kamil [Sun, 28 Aug 2016 19:44:44 +0000 (19:44 +0000)]
Fix another place with a wrong author of "Unkempt Thoughts"

Stanislaw Lem -> Stanislaw J. Lec

8 years agoCorrect the author of "Unkempt Thoughts" - it's Stanislaw Lec, not Lem
kamil [Fri, 26 Aug 2016 18:07:47 +0000 (18:07 +0000)]
Correct the author of "Unkempt Thoughts" - it's Stanislaw Lec, not Lem

Pointed out by Antoni GrzymaƂa <antoni@grzymala.info>

This mistake was in the sources since the beginning of this file in NetBSD.

8 years agoadd one
dholland [Fri, 15 Jul 2016 06:13:50 +0000 (06:13 +0000)]
add one

8 years agoUpdate entries for North and South Yemen, since the two countries were
pgoyette [Tue, 28 Jun 2016 09:27:26 +0000 (09:27 +0000)]
Update entries for North and South Yemen, since the two countries were
united a long time ago (according to WikiPedia).

Thanks, wiz, for double-checking!

8 years agoFix typo.
wiz [Tue, 28 Jun 2016 09:17:06 +0000 (09:17 +0000)]
Fix typo.

8 years agoMissed one.
pgoyette [Tue, 28 Jun 2016 00:16:57 +0000 (00:16 +0000)]
Missed one.

8 years agoMerge updates from PR bin/42576
pgoyette [Tue, 28 Jun 2016 00:15:40 +0000 (00:15 +0000)]
Merge updates from PR bin/42576

XXX Any typos are mine, not those of the PR submitter!

8 years agoDo not pass usleep() values >= 1 million. From Henning Petersen in PR 51286
dholland [Mon, 27 Jun 2016 08:46:04 +0000 (08:46 +0000)]
Do not pass usleep() values >= 1 million. From Henning Petersen in PR 51286

8 years agoDouble the threshold for crashing out with "too many words".
dholland [Sat, 25 Jun 2016 23:15:41 +0000 (23:15 +0000)]
Double the threshold for crashing out with "too many words".

8 years agoFix the out-of-memory behavior so the message doesn't disappear under
dholland [Sun, 12 Jun 2016 02:15:26 +0000 (02:15 +0000)]
Fix the out-of-memory behavior so the message doesn't disappear under
endwin(). Related to PR 3126.

8 years agoget rid of gets
christos [Sun, 5 Jun 2016 18:39:02 +0000 (18:39 +0000)]
get rid of gets

8 years agotetris(6) is not limited to CRT displays. noted by tnn
dholland [Sat, 12 Mar 2016 03:14:59 +0000 (03:14 +0000)]
tetris(6) is not limited to CRT displays. noted by tnn

8 years agosnake(6) supports LCD displays too. (noted by tnn)
dholland [Sat, 12 Mar 2016 03:13:52 +0000 (03:13 +0000)]
snake(6) supports LCD displays too. (noted by tnn)

8 years agoCenter game board on screen. OK from christos@.
nat [Thu, 3 Mar 2016 21:38:55 +0000 (21:38 +0000)]
Center game board on screen.  OK from christos@.

9 years agoPR/50411: Rin Okuyama: fix two bugs:
christos [Fri, 6 Nov 2015 19:53:37 +0000 (19:53 +0000)]
PR/50411: Rin Okuyama: fix two bugs:
- clear blocks in the 0 row, otherwise the pile up forever.
- black (white) blocks are not shown as "next shape":

9 years agoremove cpp abuse
dholland [Mon, 17 Aug 2015 17:17:01 +0000 (17:17 +0000)]
remove cpp abuse

9 years agoUse An in AUTHORS section.
wiz [Sun, 26 Jul 2015 22:22:24 +0000 (22:22 +0000)]
Use An in AUTHORS section.

9 years agoSync descriptive text with actual game definition.
pgoyette [Thu, 23 Jul 2015 01:19:20 +0000 (01:19 +0000)]
Sync descriptive text with actual game definition.

9 years agoFixes color scheme white on black and black on white.
nat [Tue, 7 Jul 2015 22:53:25 +0000 (22:53 +0000)]
Fixes color scheme white on black and black on white.

This commit was approved by christos@

9 years agoadd one
dholland [Sat, 27 Jun 2015 08:07:46 +0000 (08:07 +0000)]
add one

9 years agoMove game logic out of the file with the curses code.
dholland [Thu, 25 Jun 2015 05:33:02 +0000 (05:33 +0000)]
Move game logic out of the file with the curses code.

9 years agoAbolish the foul practice of including every header in existence via a
dholland [Fri, 19 Jun 2015 06:02:31 +0000 (06:02 +0000)]
Abolish the foul practice of including every header in existence via a
single central "include.h". Use only headers that are actually needed.

9 years agoadd -b to usage, from leot
dholland [Sat, 13 Jun 2015 04:53:13 +0000 (04:53 +0000)]
add -b to usage, from leot

9 years agoFix the list of keys across the bottom so it fits on an 80-column screen
dholland [Sat, 13 Jun 2015 04:15:51 +0000 (04:15 +0000)]
Fix the list of keys across the bottom so it fits on an 80-column screen
again. Fixes PR 49937.

HI MRG

9 years agoPR/49850: Nikolai Lifanov: Document acronyms-o
christos [Wed, 22 Apr 2015 15:04:57 +0000 (15:04 +0000)]
PR/49850: Nikolai Lifanov: Document acronyms-o

9 years agoFix typo, remove trailing space.
wiz [Wed, 22 Apr 2015 14:00:46 +0000 (14:00 +0000)]
Fix typo, remove trailing space.

9 years agoobey $ACRONYMDB like before
christos [Tue, 21 Apr 2015 23:56:30 +0000 (23:56 +0000)]
obey $ACRONYMDB like before

9 years agoAdd -o flag.
christos [Tue, 21 Apr 2015 22:49:46 +0000 (22:49 +0000)]
Add -o flag.

9 years agoproperly pluralize.
snj [Fri, 3 Apr 2015 07:28:41 +0000 (07:28 +0000)]
properly pluralize.

9 years agoAvoid runon sentences.
dholland [Wed, 25 Mar 2015 16:23:02 +0000 (16:23 +0000)]
Avoid runon sentences.

9 years agoUse Pp (mdoc) instead of sp (roff).
wiz [Thu, 19 Feb 2015 08:51:14 +0000 (08:51 +0000)]
Use Pp (mdoc) instead of sp (roff).
Use An in AUTHORS section.

9 years agoadd a 'down' key to tetris, defaulting to 'n'. it move the block down
mrg [Thu, 19 Feb 2015 02:27:30 +0000 (02:27 +0000)]
add a 'down' key to tetris, defaulting to 'n'.  it move the block down
a line, if it fits.  like most other tetris games have.

minor clean up of magic number usage while here.

9 years agotypo
dholland [Thu, 12 Feb 2015 06:24:21 +0000 (06:24 +0000)]
typo