aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/nyancat.c61
1 files changed, 49 insertions, 12 deletions
diff --git a/src/nyancat.c b/src/nyancat.c
index 1a9362a..189da54 100644
--- a/src/nyancat.c
+++ b/src/nyancat.c
@@ -112,6 +112,17 @@ int show_counter = 1;
int frame_count = 0;
/*
+ * Clear the screen between frames (as opposed to reseting
+ * the cursor position)
+ */
+int clear_screen = 1;
+
+/*
+ * Force-set the terminal title.
+ */
+int set_title = 1;
+
+/*
* Environment to use for setjmp/longjmp
* when breaking out of options handler
*/
@@ -146,7 +157,11 @@ int max_col = 50;
* and exit the application.
*/
void finish() {
- printf("\033[?25h\033[0m\033[H\033[2J");
+ if (clear_screen) {
+ printf("\033[?25h\033[0m\033[H\033[2J");
+ } else {
+ printf("\033[0m\n");
+ }
exit(0);
}
@@ -311,13 +326,19 @@ int main(int argc, char ** argv) {
/* Process arguments */
int index, c;
- while ((c = getopt_long(argc, argv, "hitnf:r:R:c:C:W:H:", long_opts, &index)) != -1) {
+ while ((c = getopt_long(argc, argv, "eshitnf:r:R:c:C:W:H:", long_opts, &index)) != -1) {
if (!c) {
if (long_opts[index].flag == 0) {
c = long_opts[index].val;
}
}
switch (c) {
+ case 'e':
+ clear_screen = 0;
+ break;
+ case 's':
+ set_title = 0;
+ break;
case 'i': /* Show introduction */
show_intro = 1;
break;
@@ -654,12 +675,18 @@ int main(int argc, char ** argv) {
}
/* Attempt to set terminal title */
- printf("\033kNyanyanyanyanyanyanya...\033\134");
- printf("\033]1;Nyanyanyanyanyanyanya...\007");
- printf("\033]2;Nyanyanyanyanyanyanya...\007");
+ if (set_title) {
+ printf("\033kNyanyanyanyanyanyanya...\033\134");
+ printf("\033]1;Nyanyanyanyanyanyanya...\007");
+ printf("\033]2;Nyanyanyanyanyanyanya...\007");
+ }
- /* Clear the screen */
- printf("\033[H\033[2J\033[?25l");
+ if (clear_screen) {
+ /* Clear the screen */
+ printf("\033[H\033[2J\033[?25l");
+ } else {
+ printf("\033[s");
+ }
if (show_intro) {
/* Display the MOTD */
@@ -690,11 +717,17 @@ int main(int argc, char ** argv) {
fflush(stdout);
usleep(400000);
- printf("\033[H"); /* Reset cursor */
+ if (clear_screen) {
+ printf("\033[H"); /* Reset cursor */
+ } else {
+ printf("\033[u");
+ }
}
- /* Clear the screen again */
- printf("\033[H\033[2J\033[?25l");
+ if (clear_screen) {
+ /* Clear the screen again */
+ printf("\033[H\033[2J\033[?25l");
+ }
}
/* Store the start time */
@@ -707,6 +740,12 @@ int main(int argc, char ** argv) {
char last = 0; /* Last color index rendered */
size_t y, x; /* x/y coordinates of what we're drawing */
while (playing) {
+ /* Reset cursor */
+ if (clear_screen) {
+ printf("\033[H");
+ } else {
+ printf("\033[u");
+ }
/* Render the frame */
for (y = min_row; y < max_row; ++y) {
for (x = min_col; x < max_col; ++x) {
@@ -765,8 +804,6 @@ int main(int argc, char ** argv) {
/* Loop animation */
i = 0;
}
- /* Reset cursor */
- printf("\033[H");
/* Wait */
usleep(90000);
}
864e0aJonathan McCrohan840-4057/+18230 2016-01-18Update get-vcs-snapshot.sh to reflect gbp changesJonathan McCrohan2-1/+2 2016-01-18Imported Upstream version 0+git20151202.3864e0aupstream/0+git20151202.3864e0aJonathan McCrohan840-4057/+18230 2015-05-05d/control: various fixes found by libconfig-model-dpkg-perlJonathan McCrohan2-5/+13 2015-04-01Release 0+git20150208.f2053b3-1Jonathan McCrohan1-2/+2 2015-04-01Describe changes made in snapshotJonathan McCrohan1-0/+3 2015-04-01New Upstream Snapshot (commit f2053b3)Jonathan McCrohan1-0/+6 2015-04-01Imported Upstream version 0+git20150208.f2053b3upstream/0+git20150208.f2053b3Jonathan McCrohan32-333/+483 2014-12-28Release 0+git20141218.b46a22c-1debian/0+git20141218.b46a22c-1Jonathan McCrohan1-2/+2 2014-12-28Updated AU DVB-T files; Thanks Brian Burch! (Closes LP: #1393280)Jonathan McCrohan1-0/+1 2014-12-28New Upstream Snapshot (commit b46a22c)Jonathan McCrohan1-0/+6 2014-12-28Imported Upstream version 0+git20141218.b46a22cupstream/0+git20141218.b46a22cJonathan McCrohan535-639/+317 2014-10-20Release 0+git20141009.d26b627-1debian/0+git20141009.d26b627-1Jonathan McCrohan1-2/+2 2014-10-20Fix up packaging to account for move to DVBv5Jonathan McCrohan2-2/+6 2014-10-20delete d/dtv-scan-files.install; Upstream now supplies a MakefileJonathan McCrohan2-4/+1 2014-10-15d/control: update Standards Version to 3.9.6Jonathan McCrohan2-1/+3 2014-10-15d/control: add Build-Depends on dvb-toolsJonathan McCrohan2-1/+2 2014-10-15New Upstream Snapshot (commit d26b627)Jonathan McCrohan1-0/+10 2014-10-15Imported Upstream version 0+git20141009.d26b627upstream/0+git20141009.d26b627Jonathan McCrohan2010-11120/+159271 2014-07-23Release 0+git20140611.14bd6c7-1debian/0+git20140611.14bd6c7-1Jonathan McCrohan1-2/+2 2014-07-23New Upstream Snapshot (commit 14bd6c7)Jonathan McCrohan1-2/+3 2014-07-23Imported Upstream version 0+git20140611.14bd6c7upstream/0+git20140611.14bd6c7Jonathan McCrohan7-11/+60 2014-05-13New Upstream Snapshot (commit 1246b27)Jonathan McCrohan1-0/+6 2014-05-13Imported Upstream version 0+git20140512.1246b27upstream/0+git20140512.1246b27Jonathan McCrohan391-301/+3983 2014-04-05Release 0+git20140326.cfc2975-1debian/0+git20140326.cfc2975-1Jonathan McCrohan1-2/+2 2014-04-05d/control: update Homepage (upstream has moved from Gitweb to cgit)Jonathan McCrohan2-1/+2 2014-04-05New Upstream Snapshot (commit cfc2975)Jonathan McCrohan1-0/+6 2014-04-05Imported Upstream version 0+git20140326.cfc2975upstream/0+git20140326.cfc2975Jonathan McCrohan118-656/+877 2014-01-16Release 0+git20140107.1850cf8-1debian/0+git20140107.1850cf8-1Jonathan McCrohan1-2/+2 2014-01-16Update Standards Version to 3.9.5Jonathan McCrohan2-1/+9