Compare commits
30 Commits
f026f3ae43
...
8309fee73a
Author | SHA1 | Date |
---|---|---|
|
8309fee73a | |
|
1f07b2ca50 | |
|
fe93eb97df | |
|
cc3155f5b3 | |
|
3988a5e575 | |
|
859a1d6254 | |
|
ea89ece89c | |
|
0b32b1fc93 | |
|
0969b54fb6 | |
|
6dad066eaf | |
|
2a1263c647 | |
|
4a8d728fa6 | |
|
b5cab6ccbd | |
|
2447eeb18c | |
|
539dfe1833 | |
|
1d48ebecf8 | |
|
05b709480b | |
|
edf9987b2c | |
|
68b73fd2b3 | |
|
f0a635fd8c | |
|
cfa4d0cac1 | |
|
f180e2ca98 | |
|
86d12f43a6 | |
|
ddc60e265a | |
|
f0caedab74 | |
|
c5beb7bf51 | |
|
373cf6cd3a | |
|
26290f64ce | |
|
47ef7c7109 | |
|
701f9025c9 |
|
@ -2186,9 +2186,9 @@ static void on_mkpart(size_t argc, char** argv)
|
||||||
}
|
}
|
||||||
const char* mkfs_argv[] =
|
const char* mkfs_argv[] =
|
||||||
{
|
{
|
||||||
"mkfs.fat",
|
"mformat",
|
||||||
"-F", // TODO: Force FAT32 until FAT12/16 root dir writing is added.
|
"-F", // TODO: Force FAT32 until FAT12/16 root dir writing is added.
|
||||||
"32",
|
"-i",
|
||||||
p->path,
|
p->path,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
|
@ -459,12 +459,12 @@ Inode* Inode::Open(const char* elem, int flags, mode_t mode)
|
||||||
memset(block->block_data, 0, filesystem->bytes_per_sector);
|
memset(block->block_data, 0, filesystem->bytes_per_sector);
|
||||||
struct fat_dirent* dirent = (struct fat_dirent*) block->block_data;
|
struct fat_dirent* dirent = (struct fat_dirent*) block->block_data;
|
||||||
// TODO: Mirror modified times in here.
|
// TODO: Mirror modified times in here.
|
||||||
memcpy(dirent->name, ". ", 11);
|
memcpy(dirent->name, ".", 1);
|
||||||
dirent->attributes = attributes;
|
dirent->attributes = attributes;
|
||||||
dirent->cluster_high = htole16(inode_id >> 16);
|
dirent->cluster_high = htole16(inode_id >> 16);
|
||||||
dirent->cluster_low = htole16(inode_id & 0xFFFF);
|
dirent->cluster_low = htole16(inode_id & 0xFFFF);
|
||||||
dirent++;
|
dirent++;
|
||||||
memcpy(dirent->name, ".. ", 11);
|
memcpy(dirent->name, "..", 2);
|
||||||
dirent->attributes = FAT_ATTRIBUTE_DIRECTORY;
|
dirent->attributes = FAT_ATTRIBUTE_DIRECTORY;
|
||||||
if ( this->inode_id == filesystem->root_inode_id )
|
if ( this->inode_id == filesystem->root_inode_id )
|
||||||
{
|
{
|
||||||
|
|
|
@ -3101,9 +3101,7 @@ static bool fsck(struct filesystem* fs)
|
||||||
if ( pid == 0 )
|
if ( pid == 0 )
|
||||||
{
|
{
|
||||||
uninstall_signal_handler();
|
uninstall_signal_handler();
|
||||||
// TODO: Move to libmount abstraction.
|
execlp(fs->fsck, fs->fsck, "-fp", "--", bdev_path, (const char*) NULL);
|
||||||
const char* options = !strcmp(fs->fstype_name, "ext2") ? "-fp" : "-p";
|
|
||||||
execlp(fs->fsck, fs->fsck, options, "--", bdev_path, (const char*) NULL);
|
|
||||||
warning("%s: Failed to load filesystem checker: %s: %m",
|
warning("%s: Failed to load filesystem checker: %s: %m",
|
||||||
bdev_path, fs->fsck);
|
bdev_path, fs->fsck);
|
||||||
_exit(127);
|
_exit(127);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011, 2012, 2013, 2014, 2015, 2016 Jonas 'Sortie' Termansen.
|
* Copyright (c) 2011, 2012, 2013, 2014, 2015, 2016 Jonas 'Sortie' Termansen.
|
||||||
* Copyright (c) 2023 Juhani 'nortti' Krekelä.
|
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and distribute this software for any
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
@ -660,42 +659,8 @@ void TextTerminal::RunAnsiCommand(TextBuffer* textbuf, char c)
|
||||||
uint32_t fillbg = attr & ATTR_INVERSE ? fgcolor : bgcolor;
|
uint32_t fillbg = attr & ATTR_INVERSE ? fgcolor : bgcolor;
|
||||||
textbuf->Fill(from, to, TextChar(' ', vgacolor, 0, fillfg, fillbg));
|
textbuf->Fill(from, to, TextChar(' ', vgacolor, 0, fillfg, fillbg));
|
||||||
} break;
|
} break;
|
||||||
case 'L': // Append lines before current line.
|
// TODO: CSI Ps M Delete Ps Line(s) (default = 1) (DL).
|
||||||
{
|
// (delete those lines and move the rest of the lines upwards).
|
||||||
column = 0;
|
|
||||||
unsigned lines = 0 < ansiusedparams ? ansiparams[0] : 1;
|
|
||||||
if ( height < line + lines )
|
|
||||||
lines = height - line;
|
|
||||||
TextPos from(0, line);
|
|
||||||
TextPos move_to(0, line + lines);
|
|
||||||
unsigned move_lines = height - line - lines;
|
|
||||||
textbuf->Move(move_to, from, move_lines * width);
|
|
||||||
if ( 0 < lines )
|
|
||||||
{
|
|
||||||
TextPos fill_to(width - 1, line + lines - 1);
|
|
||||||
uint32_t fill_fg = attr & ATTR_INVERSE ? bgcolor : fgcolor;
|
|
||||||
uint32_t fill_bg = attr & ATTR_INVERSE ? fgcolor : bgcolor;
|
|
||||||
TextChar fill_char(' ', vgacolor, 0, fill_fg, fill_bg);
|
|
||||||
textbuf->Fill(from, fill_to, fill_char);
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
case 'M': // Delete lines starting from beginning of current line.
|
|
||||||
{
|
|
||||||
column = 0;
|
|
||||||
unsigned lines = 0 < ansiusedparams ? ansiparams[0] : 1;
|
|
||||||
if ( height < line + lines )
|
|
||||||
lines = height - line;
|
|
||||||
TextPos move_from(0, line + lines);
|
|
||||||
TextPos move_to(0, line);
|
|
||||||
unsigned move_lines = height - line - lines;
|
|
||||||
textbuf->Move(move_to, move_from, move_lines * width);
|
|
||||||
TextPos fill_from(0, height - lines);
|
|
||||||
TextPos fill_to(width - 1, height - 1);
|
|
||||||
uint32_t fill_fg = attr & ATTR_INVERSE ? bgcolor : fgcolor;
|
|
||||||
uint32_t fill_bg = attr & ATTR_INVERSE ? fgcolor : bgcolor;
|
|
||||||
TextChar fill_char(' ', vgacolor, 0, fill_fg, fill_bg);
|
|
||||||
textbuf->Fill(fill_from, fill_to, fill_char);
|
|
||||||
} break;
|
|
||||||
// TODO: CSI Ps P Delete Ps Character(s) (default = 1) (DCH).
|
// TODO: CSI Ps P Delete Ps Character(s) (default = 1) (DCH).
|
||||||
// (delete those characters and move the rest of the line leftward).
|
// (delete those characters and move the rest of the line leftward).
|
||||||
case 'S': // Scroll a line up and place a new line at the buttom.
|
case 'S': // Scroll a line up and place a new line at the buttom.
|
||||||
|
|
|
@ -43,8 +43,10 @@ static bool fat_probe(struct blockdevice* bdev,
|
||||||
(void) amount;
|
(void) amount;
|
||||||
// TODO: Relax restriction that this must be a partition? At least for non-EFI.
|
// TODO: Relax restriction that this must be a partition? At least for non-EFI.
|
||||||
struct partition* p = bdev->p;
|
struct partition* p = bdev->p;
|
||||||
|
if ( !p )
|
||||||
|
return false;
|
||||||
// TODO: Test for a space padded FAT32 at 0x52 + 8 bytes.
|
// TODO: Test for a space padded FAT32 at 0x52 + 8 bytes.
|
||||||
if ( p && p->table_type == PARTITION_TABLE_TYPE_GPT )
|
if ( p->table_type == PARTITION_TABLE_TYPE_GPT )
|
||||||
{
|
{
|
||||||
unsigned char bdp_uuid[16];
|
unsigned char bdp_uuid[16];
|
||||||
uuid_from_string(bdp_uuid, BDP_GPT_TYPE_UUID);
|
uuid_from_string(bdp_uuid, BDP_GPT_TYPE_UUID);
|
||||||
|
@ -54,7 +56,7 @@ static bool fat_probe(struct blockdevice* bdev,
|
||||||
return memcmp(p->gpt_type_guid, bdp_uuid, 16) == 0 ||
|
return memcmp(p->gpt_type_guid, bdp_uuid, 16) == 0 ||
|
||||||
memcmp(p->gpt_type_guid, esp_uuid, 16) == 0;
|
memcmp(p->gpt_type_guid, esp_uuid, 16) == 0;
|
||||||
}
|
}
|
||||||
else if ( p && p->table_type == PARTITION_TABLE_TYPE_MBR )
|
if ( p->table_type == PARTITION_TABLE_TYPE_MBR )
|
||||||
return p->mbr_system_id == 0x01 ||
|
return p->mbr_system_id == 0x01 ||
|
||||||
p->mbr_system_id == 0x04 ||
|
p->mbr_system_id == 0x04 ||
|
||||||
p->mbr_system_id == 0x06 ||
|
p->mbr_system_id == 0x06 ||
|
||||||
|
@ -65,20 +67,6 @@ static bool fat_probe(struct blockdevice* bdev,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool fat_is_esp(struct blockdevice* bdev)
|
|
||||||
{
|
|
||||||
struct partition* p = bdev->p;
|
|
||||||
if ( p->table_type == PARTITION_TABLE_TYPE_GPT )
|
|
||||||
{
|
|
||||||
unsigned char esp_uuid[16];
|
|
||||||
uuid_from_string(esp_uuid, ESP_GPT_TYPE_UUID);
|
|
||||||
return memcmp(p->gpt_type_guid, esp_uuid, 16) == 0;
|
|
||||||
}
|
|
||||||
else if ( p->table_type == PARTITION_TABLE_TYPE_MBR )
|
|
||||||
return p->mbr_system_id == 0xEF;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void fat_release(struct filesystem* fs)
|
static void fat_release(struct filesystem* fs)
|
||||||
{
|
{
|
||||||
if ( !fs )
|
if ( !fs )
|
||||||
|
@ -99,8 +87,9 @@ static enum filesystem_error fat_inspect(struct filesystem** fs_ptr,
|
||||||
unsigned char vbr[512];
|
unsigned char vbr[512];
|
||||||
if ( blockdevice_preadall(bdev, vbr, sizeof(vbr), 0) != sizeof(vbr) )
|
if ( blockdevice_preadall(bdev, vbr, sizeof(vbr), 0) != sizeof(vbr) )
|
||||||
return fat_release(fs), FILESYSTEM_ERROR_ERRNO;
|
return fat_release(fs), FILESYSTEM_ERROR_ERRNO;
|
||||||
fs->fstype_name = fat_is_esp(fs->bdev) ? "efi": "fat";
|
// TODO: Report efi instead if ESP.
|
||||||
fs->fsck = "fsck.fat";
|
fs->fstype_name = "fat";
|
||||||
|
// TODO: Port a fat fsck.
|
||||||
fs->driver = "fatfs";
|
fs->driver = "fatfs";
|
||||||
fs->flags |= FILESYSTEM_FLAG_UUID;
|
fs->flags |= FILESYSTEM_FLAG_UUID;
|
||||||
// Use the serial number + label as the UUID.
|
// Use the serial number + label as the UUID.
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
diff -Paur --no-dereference -- dosfstools.upstream/src/blkdev/blkdev.c dosfstools/src/blkdev/blkdev.c
|
|
||||||
--- dosfstools.upstream/src/blkdev/blkdev.c
|
|
||||||
+++ dosfstools/src/blkdev/blkdev.c
|
|
||||||
@@ -7,7 +7,6 @@
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
-#include <sys/sysmacros.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
diff -Paur --no-dereference -- dosfstools.upstream/src/common.c dosfstools/src/common.c
|
|
||||||
--- dosfstools.upstream/src/common.c
|
|
||||||
+++ dosfstools/src/common.c
|
|
||||||
@@ -297,16 +297,7 @@
|
|
||||||
|
|
||||||
uint32_t generate_volume_id(void)
|
|
||||||
{
|
|
||||||
- struct timeval now;
|
|
||||||
-
|
|
||||||
- if (gettimeofday(&now, NULL) != 0 || now.tv_sec == (time_t)-1 || now.tv_sec < 0) {
|
|
||||||
- srand(getpid());
|
|
||||||
- /* rand() returns int from [0,RAND_MAX], therefore only 31 bits */
|
|
||||||
- return (((uint32_t)(rand() & 0xFFFF)) << 16) | ((uint32_t)(rand() & 0xFFFF));
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* volume ID = current time, fudged for more uniqueness */
|
|
||||||
- return ((uint32_t)now.tv_sec << 20) | (uint32_t)now.tv_usec;
|
|
||||||
+ return arc4random();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
diff -Paur --no-dereference -- dosfstools.upstream/src/device_info.c dosfstools/src/device_info.c
|
|
||||||
--- dosfstools.upstream/src/device_info.c
|
|
||||||
+++ dosfstools/src/device_info.c
|
|
||||||
@@ -24,7 +24,6 @@
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
-#include <sys/sysmacros.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_LINUX_LOOP_H
|
|
||||||
#include <linux/loop.h>
|
|
|
@ -1,12 +0,0 @@
|
||||||
NAME=dosfstools
|
|
||||||
BUILD_LIBRARIES=libiconv?
|
|
||||||
VERSION=4.2
|
|
||||||
DISTNAME=$NAME-$VERSION
|
|
||||||
COMPRESSION=tar.gz
|
|
||||||
ARCHIVE=$DISTNAME.$COMPRESSION
|
|
||||||
SHA256SUM=64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527
|
|
||||||
UPSTREAM_SITE=https://github.com/dosfstools/dosfstools/releases/download/v$VERSION
|
|
||||||
UPSTREAM_ARCHIVE=$ARCHIVE
|
|
||||||
LICENSE=GPL-3.0-or-later
|
|
||||||
BUILD_SYSTEM=configure
|
|
||||||
DEVELOPMENT=true
|
|
|
@ -1,152 +0,0 @@
|
||||||
diff -Paur --no-dereference -- irssi.upstream/Makefile.in irssi/Makefile.in
|
|
||||||
--- irssi.upstream/Makefile.in
|
|
||||||
+++ irssi/Makefile.in
|
|
||||||
@@ -941,7 +941,8 @@
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
-install-data-am: install-confDATA install-pkgconfigDATA \
|
|
||||||
+# PATCH: Don't install /etc/irssi.conf. Same configuration is built-in.
|
|
||||||
+install-data-am: install-pkgconfigDATA \
|
|
||||||
install-pkgincludeHEADERS
|
|
||||||
|
|
||||||
install-dvi: install-dvi-recursive
|
|
||||||
diff -Paur --no-dereference -- irssi.upstream/src/core/log.c irssi/src/core/log.c
|
|
||||||
--- irssi.upstream/src/core/log.c
|
|
||||||
+++ irssi/src/core/log.c
|
|
||||||
@@ -101,7 +101,10 @@
|
|
||||||
int log_start_logging(LOG_REC *log)
|
|
||||||
{
|
|
||||||
char *dir;
|
|
||||||
+/* PATCH: Sortix doesn't implement flock */
|
|
||||||
+#ifndef __sortix__
|
|
||||||
struct flock lock;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
g_return_val_if_fail(log != NULL, FALSE);
|
|
||||||
|
|
||||||
@@ -139,6 +142,8 @@
|
|
||||||
log->failed = TRUE;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
+/* PATCH: Sortix doesn't implement flock */
|
|
||||||
+#ifndef __sortix__
|
|
||||||
memset(&lock, 0, sizeof(lock));
|
|
||||||
lock.l_type = F_WRLCK;
|
|
||||||
if (fcntl(log->handle, F_SETLK, &lock) == -1 && errno == EACCES) {
|
|
||||||
@@ -148,6 +153,7 @@
|
|
||||||
log->failed = TRUE;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
lseek(log->handle, 0, SEEK_END);
|
|
||||||
|
|
||||||
log->opened = log->last = time(NULL);
|
|
||||||
@@ -162,7 +168,10 @@
|
|
||||||
|
|
||||||
void log_stop_logging(LOG_REC *log)
|
|
||||||
{
|
|
||||||
+/* PATCH: Sortix doesn't implement flock */
|
|
||||||
+#ifndef __sortix__
|
|
||||||
struct flock lock;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
g_return_if_fail(log != NULL);
|
|
||||||
|
|
||||||
@@ -175,9 +184,12 @@
|
|
||||||
settings_get_str("log_close_string"),
|
|
||||||
"\n", time(NULL));
|
|
||||||
|
|
||||||
+/* PATCH: Sortix doesn't implement flock */
|
|
||||||
+#ifndef __sortix__
|
|
||||||
memset(&lock, 0, sizeof(lock));
|
|
||||||
lock.l_type = F_UNLCK;
|
|
||||||
fcntl(log->handle, F_SETLK, &lock);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
write_buffer_flush();
|
|
||||||
close(log->handle);
|
|
||||||
diff -Paur --no-dereference -- irssi.upstream/src/core/net-disconnect.c irssi/src/core/net-disconnect.c
|
|
||||||
--- irssi.upstream/src/core/net-disconnect.c
|
|
||||||
+++ irssi/src/core/net-disconnect.c
|
|
||||||
@@ -18,6 +18,8 @@
|
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#include <sys/select.h>
|
|
||||||
+
|
|
||||||
#include "module.h"
|
|
||||||
#include <irssi/src/core/network.h>
|
|
||||||
|
|
||||||
diff -Paur --no-dereference -- irssi.upstream/src/core/network.c irssi/src/core/network.c
|
|
||||||
--- irssi.upstream/src/core/network.c
|
|
||||||
+++ irssi/src/core/network.c
|
|
||||||
@@ -501,16 +501,8 @@
|
|
||||||
} else {
|
|
||||||
/* IPv4 */
|
|
||||||
ip->family = AF_INET;
|
|
||||||
-#ifdef HAVE_INET_ATON
|
|
||||||
- if (inet_aton(host, &ip->ip.s_addr) == 0)
|
|
||||||
+ if (inet_pton(AF_INET, host, &ip->ip) == 0)
|
|
||||||
return -1;
|
|
||||||
-#else
|
|
||||||
- addr = inet_addr(host);
|
|
||||||
- if (addr == INADDR_NONE)
|
|
||||||
- return -1;
|
|
||||||
-
|
|
||||||
- memcpy(&ip->ip, &addr, 4);
|
|
||||||
-#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
diff -Paur --no-dereference -- irssi.upstream/src/core/network.h irssi/src/core/network.h
|
|
||||||
--- irssi.upstream/src/core/network.h
|
|
||||||
+++ irssi/src/core/network.h
|
|
||||||
@@ -11,6 +11,11 @@
|
|
||||||
# include <netdb.h>
|
|
||||||
# include <arpa/inet.h>
|
|
||||||
|
|
||||||
+/* PATCH: Sortix netdb.h does not define HOST_NOT_FOUND */
|
|
||||||
+#ifndef HOST_NOT_FOUND
|
|
||||||
+#define HOST_NOT_FOUND 1
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#ifndef AF_INET6
|
|
||||||
# ifdef PF_INET6
|
|
||||||
# define AF_INET6 PF_INET6
|
|
||||||
diff -Paur --no-dereference -- irssi.upstream/src/core/refstrings.c irssi/src/core/refstrings.c
|
|
||||||
--- irssi.upstream/src/core/refstrings.c
|
|
||||||
+++ irssi/src/core/refstrings.c
|
|
||||||
@@ -122,7 +122,7 @@
|
|
||||||
mem += sizeof(char) * (strlen(key) + 1) + 2 * sizeof(void *);
|
|
||||||
}
|
|
||||||
|
|
||||||
- return g_strdup_printf("Shared strings: %ld, %dkB of data", count,
|
|
||||||
+ return g_strdup_printf("Shared strings: %zu, %dkB of data", count,
|
|
||||||
(int) (mem / 1024));
|
|
||||||
}
|
|
||||||
|
|
||||||
diff -Paur --no-dereference -- irssi.upstream/src/fe-common/core/fe-exec.c irssi/src/fe-common/core/fe-exec.c
|
|
||||||
--- irssi.upstream/src/fe-common/core/fe-exec.c
|
|
||||||
+++ irssi/src/fe-common/core/fe-exec.c
|
|
||||||
@@ -327,7 +327,7 @@
|
|
||||||
signal(SIGINT, SIG_IGN);
|
|
||||||
signal(SIGQUIT, SIG_DFL);
|
|
||||||
|
|
||||||
- putenv("TERM=tty");
|
|
||||||
+ setenv("TERM", "tty", 1);
|
|
||||||
|
|
||||||
/* set stdin, stdout and stderr */
|
|
||||||
dup2(in[0], STDIN_FILENO);
|
|
||||||
diff -Paur --no-dereference -- irssi.upstream/src/irc/core/irc.c irssi/src/irc/core/irc.c
|
|
||||||
--- irssi.upstream/src/irc/core/irc.c
|
|
||||||
+++ irssi/src/irc/core/irc.c
|
|
||||||
@@ -90,7 +90,7 @@
|
|
||||||
end = tmp;
|
|
||||||
|
|
||||||
if (tmp - cmd > MAX_IRC_USER_TAGS_LEN) {
|
|
||||||
- g_warning("irc_send_cmd_full(); tags too long(%ld)", tmp - cmd);
|
|
||||||
+ g_warning("irc_send_cmd_full(); tags too long(%td)", tmp - cmd);
|
|
||||||
while (tmp - cmd > MAX_IRC_USER_TAGS_LEN && cmd != tmp - 1) tmp--;
|
|
||||||
while (*tmp != ',' && cmd != tmp - 1) tmp--;
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
NAME=irssi
|
|
||||||
BUILD_LIBRARIES='libcurses libglib libssl'
|
|
||||||
VERSION=1.4.5
|
|
||||||
DISTNAME=$NAME-$VERSION
|
|
||||||
COMPRESSION=tar.xz
|
|
||||||
ARCHIVE=$DISTNAME.$COMPRESSION
|
|
||||||
SHA256SUM=72a951cb0ad622785a8962801f005a3a412736c7e7e3ce152f176287c52fe062
|
|
||||||
UPSTREAM_SITE=https://codeberg.org/irssi/irssi/releases/download/$VERSION
|
|
||||||
UPSTREAM_ARCHIVE=$ARCHIVE
|
|
||||||
RELEASE_SEARCH_PAGE=https://codeberg.org/irssi/irssi/releases
|
|
||||||
BUILD_SYSTEM=configure
|
|
||||||
MAKE_VARS=V=1
|
|
||||||
LICENSE=GPL-2.0-or-later
|
|
|
@ -1 +0,0 @@
|
||||||
rm -rf -- 'irssi-config.h'
|
|
|
@ -293,7 +293,7 @@ diff -Paur --no-dereference -- libcurses.upstream/netbsd_sys/cdefs.h libcurses/n
|
||||||
diff -Paur --no-dereference -- libcurses.upstream/terminfo/sortix.terminfo libcurses/terminfo/sortix.terminfo
|
diff -Paur --no-dereference -- libcurses.upstream/terminfo/sortix.terminfo libcurses/terminfo/sortix.terminfo
|
||||||
--- libcurses.upstream/terminfo/sortix.terminfo
|
--- libcurses.upstream/terminfo/sortix.terminfo
|
||||||
+++ libcurses/terminfo/sortix.terminfo
|
+++ libcurses/terminfo/sortix.terminfo
|
||||||
@@ -0,0 +1,231 @@
|
@@ -0,0 +1,230 @@
|
||||||
+# TODO: Decode setab and setaf and see if they are what I want.
|
+# TODO: Decode setab and setaf and see if they are what I want.
|
||||||
+# TODO: Implement BEL \a and add bel=^G,
|
+# TODO: Implement BEL \a and add bel=^G,
|
||||||
+# TODO: Add blink support and add blink=\E[5m,
|
+# TODO: Add blink support and add blink=\E[5m,
|
||||||
|
@ -302,9 +302,12 @@ diff -Paur --no-dereference -- libcurses.upstream/terminfo/sortix.terminfo libcu
|
||||||
+# TODO: Support dch=\E[%p1%dP,
|
+# TODO: Support dch=\E[%p1%dP,
|
||||||
+# TODO: dch1=\E[P,
|
+# TODO: dch1=\E[P,
|
||||||
+# TODO: Add faint support and add dim=\E[2m,
|
+# TODO: Add faint support and add dim=\E[2m,
|
||||||
|
+# TODO: dl1=\E[M,
|
||||||
+# TODO: ech=\E[%p1%dX,
|
+# TODO: ech=\E[%p1%dX,
|
||||||
+# TODO: hts=\EH,
|
+# TODO: hts=\EH,
|
||||||
+# TODO: ich=\E[%p1%d@,
|
+# TODO: ich=\E[%p1%d@,
|
||||||
|
+# TODO: il=\E[%p1%dL,
|
||||||
|
+# TODO: il1=\E[L,
|
||||||
+# TODO: invis=\E[8m,
|
+# TODO: invis=\E[8m,
|
||||||
+# TODO: Some modifiers for the function keys are missing, like control + alt +
|
+# TODO: Some modifiers for the function keys are missing, like control + alt +
|
||||||
+# shift + f12, kfxx should probably go up to 96. On the other hand,
|
+# shift + f12, kfxx should probably go up to 96. On the other hand,
|
||||||
|
@ -343,16 +346,12 @@ diff -Paur --no-dereference -- libcurses.upstream/terminfo/sortix.terminfo libcu
|
||||||
+ cup=\E[%i%p1%d;%p2%dH,
|
+ cup=\E[%i%p1%d;%p2%dH,
|
||||||
+ cuu1=\E[A,
|
+ cuu1=\E[A,
|
||||||
+ cuu=\E[%p1%dA,
|
+ cuu=\E[%p1%dA,
|
||||||
+ dl1=\E[M,
|
|
||||||
+ dl=\E[%p1%dM,
|
|
||||||
+ ed=\E[J,
|
+ ed=\E[J,
|
||||||
+ el1=\E[1K,
|
+ el1=\E[1K,
|
||||||
+ el=\E[K,
|
+ el=\E[K,
|
||||||
+ home=\E[H,
|
+ home=\E[H,
|
||||||
+ hpa=\E[%i%p1%dG,
|
+ hpa=\E[%i%p1%dG,
|
||||||
+ ht=^I,
|
+ ht=^I,
|
||||||
+ il1=\E[L,
|
|
||||||
+ il=\E[%p1%dL,
|
|
||||||
+ ind=^J,
|
+ ind=^J,
|
||||||
+ indn=\E[%p1%dS,
|
+ indn=\E[%p1%dS,
|
||||||
+ nel=^J,
|
+ nel=^J,
|
||||||
|
|
|
@ -178,18 +178,6 @@ number matched in the first subexpression.
|
||||||
.Sy ARCHIVE
|
.Sy ARCHIVE
|
||||||
and
|
and
|
||||||
.Sy VERSION_REGEX )
|
.Sy VERSION_REGEX )
|
||||||
.It Sy EDITION
|
|
||||||
An increasing number used to distinguish this edition of the package from any previous packages by
|
|
||||||
the same name.
|
|
||||||
A new pacckage with the same name and a different edition will considered a different package.
|
|
||||||
Upgrades will uninstall the old package and will not upgrade to the new edition as if the package
|
|
||||||
has stopped existing.
|
|
||||||
The
|
|
||||||
.Sy RENAMES
|
|
||||||
variable can be used in combination with
|
|
||||||
.Sy EDITION
|
|
||||||
to rename and split packages.
|
|
||||||
The default edition is 1.
|
|
||||||
.It Sy LICENSE
|
.It Sy LICENSE
|
||||||
Primary license identifier for the installed files from the
|
Primary license identifier for the installed files from the
|
||||||
.Lk https://spdx.org/licenses/ "SPDX License List" .
|
.Lk https://spdx.org/licenses/ "SPDX License List" .
|
||||||
|
@ -265,19 +253,6 @@ Locate new upstream versions of the port by searching
|
||||||
.Sy RELEASE_SEARCH_PAGE
|
.Sy RELEASE_SEARCH_PAGE
|
||||||
using this regular expression matching the new version number in the first
|
using this regular expression matching the new version number in the first
|
||||||
subexpression.
|
subexpression.
|
||||||
.It Sy RENAMES
|
|
||||||
Comma-separated list of package renames.
|
|
||||||
Each rename is expressed as the name of a package followed by a
|
|
||||||
.Sq "@"
|
|
||||||
and its
|
|
||||||
.Sy EDITION ,
|
|
||||||
followed by a
|
|
||||||
.Sq ":"
|
|
||||||
and then a potentially-empty space separated list of replacement packages, each
|
|
||||||
taking the form of a replacement package name followed by
|
|
||||||
.Sq "@"
|
|
||||||
and then the replacement package
|
|
||||||
.Sy EDITION .
|
|
||||||
.It Sy RUNTIME_DEPS
|
.It Sy RUNTIME_DEPS
|
||||||
Space delimited list of libraries (ports) needed at run time.
|
Space delimited list of libraries (ports) needed at run time.
|
||||||
Unsupported.
|
Unsupported.
|
||||||
|
|
|
@ -69,25 +69,6 @@ releasing Sortix x.y, foo." to allow the maintainer to easily
|
||||||
.Xr grep 1
|
.Xr grep 1
|
||||||
for it after a release.
|
for it after a release.
|
||||||
.Sh CHANGES
|
.Sh CHANGES
|
||||||
.Ss Add tix-repository(8)
|
|
||||||
The new
|
|
||||||
.Xr tix-repository 8
|
|
||||||
program is used to generate repository metadata in releases.
|
|
||||||
The new
|
|
||||||
.Sy EDITION
|
|
||||||
and
|
|
||||||
.Sy RENAMES
|
|
||||||
variables in
|
|
||||||
.Xr port 5
|
|
||||||
are used to rename and split packages and requires a new
|
|
||||||
.Xr tix-build 8 .
|
|
||||||
.Pp
|
|
||||||
Tix must be upgraded:
|
|
||||||
.Bd -literal
|
|
||||||
cd /src/tix &&
|
|
||||||
make clean &&
|
|
||||||
make install
|
|
||||||
.Ed
|
|
||||||
.Ss Support system upgrades and configuration in GRUB
|
.Ss Support system upgrades and configuration in GRUB
|
||||||
The GRUB configuration now implements the
|
The GRUB configuration now implements the
|
||||||
.Pa /etc
|
.Pa /etc
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, 2022 Jonas 'Sortie' Termansen.
|
* Copyright (c) 2017, 2022 Jonas 'Sortie' Termansen.
|
||||||
* Copyright (c) 2023 Juhani 'nortti' Krekelä.
|
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and distribute this software for any
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
@ -212,21 +211,6 @@ static void fill(size_t from_x, size_t from_y, size_t to_x, size_t to_y,
|
||||||
scrollback[i] = with;
|
scrollback[i] = with;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void move(size_t to_x, size_t to_y, size_t from_x, size_t from_y,
|
|
||||||
size_t num_chars)
|
|
||||||
{
|
|
||||||
// TODO: Assert within bounds?
|
|
||||||
size_t from = from_y * columns + from_x;
|
|
||||||
size_t to = to_y * columns + to_x;
|
|
||||||
if ( to < from )
|
|
||||||
for ( size_t i = 0; i < num_chars; i++ )
|
|
||||||
scrollback[to + i] = scrollback[from + i];
|
|
||||||
else if ( from < to )
|
|
||||||
for ( size_t i = 0; i < num_chars; i++ )
|
|
||||||
scrollback[to + num_chars - 1 - i] =
|
|
||||||
scrollback[from + num_chars - 1 - i];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void scroll(ssize_t offsigned, struct entry with)
|
static void scroll(ssize_t offsigned, struct entry with)
|
||||||
{
|
{
|
||||||
if ( 0 < offsigned )
|
if ( 0 < offsigned )
|
||||||
|
@ -412,37 +396,8 @@ static void run_ansi_command(char c)
|
||||||
with.wc = 0;
|
with.wc = 0;
|
||||||
fill(from_x, from_y, to_x, to_y, with);
|
fill(from_x, from_y, to_x, to_y, with);
|
||||||
} break;
|
} break;
|
||||||
case 'L': // Append lines before current line.
|
// TODO: CSI Ps M Delete Ps Line(s) (default = 1) (DL).
|
||||||
{
|
// (delete those lines and move the rest of the lines upwards).
|
||||||
column = 0;
|
|
||||||
unsigned lines = 0 < ansiusedparams ? ansiparams[0] : 1;
|
|
||||||
if ( rows < row + lines )
|
|
||||||
lines = rows - row;
|
|
||||||
unsigned move_lines = rows - row - lines;
|
|
||||||
move(0, row + lines, 0, row, move_lines * columns);
|
|
||||||
struct entry with;
|
|
||||||
with.attr = 0;
|
|
||||||
with.fgcolor = attr & ATTR_INVERSE ? current_bgcolor : current_fgcolor;
|
|
||||||
with.bgcolor = attr & ATTR_INVERSE ? current_fgcolor : current_bgcolor;
|
|
||||||
with.wc = 0;
|
|
||||||
if ( 0 < lines )
|
|
||||||
fill(0, row, columns - 1, row + lines - 1, with);
|
|
||||||
} break;
|
|
||||||
case 'M': // Delete lines starting from beginning of current line.
|
|
||||||
{
|
|
||||||
column = 0;
|
|
||||||
unsigned lines = 0 < ansiusedparams ? ansiparams[0] : 1;
|
|
||||||
if ( rows < row + lines )
|
|
||||||
lines = rows - row;
|
|
||||||
unsigned move_lines = rows - row - lines;
|
|
||||||
move(0, row, 0, row + lines, move_lines * columns);
|
|
||||||
struct entry with;
|
|
||||||
with.attr = 0;
|
|
||||||
with.fgcolor = attr & ATTR_INVERSE ? current_bgcolor : current_fgcolor;
|
|
||||||
with.bgcolor = attr & ATTR_INVERSE ? current_fgcolor : current_bgcolor;
|
|
||||||
with.wc = 0;
|
|
||||||
fill(0, rows - lines, columns - 1, rows - 1, with);
|
|
||||||
} break;
|
|
||||||
// TODO: CSI Ps P Delete Ps Character(s) (default = 1) (DCH).
|
// TODO: CSI Ps P Delete Ps Character(s) (default = 1) (DCH).
|
||||||
// (delete those characters and move the rest of the line leftward).
|
// (delete those characters and move the rest of the line leftward).
|
||||||
case 'S': // Scroll a line up and place a new line at the buttom.
|
case 'S': // Scroll a line up and place a new line at the buttom.
|
||||||
|
|
Loading…
Reference in New Issue