commit f5dbbd03393b0b9706fd59a16b2260806e292876
parent a8ccc4303d1fd1075f7089b7b1cfe546ba3d0961
Author: fjbalon <fbalon@templier.es>
Date: Sun, 26 Jul 2026 02:13:20 +0200
Merge branch 'master' of templier.es:/git/static-httpd
Diffstat:
3 files changed, 218 insertions(+), 191 deletions(-)
diff --git a/ab-1043-linux/index.html b/ab-1043-linux/index.html
@@ -21,205 +21,205 @@
<p>b. La fecha de nacimiento registrada indica que el usuario es menor de 18 años.</p>
<p>Se ha añadido el nuevo <emb>errno</emb>, <emb>ETOOYOUNG (134)</emb>. De esta forma el espacio de usuario o la propia distribución pueda manejar el error mostrando un mensaje tranquilizador. El autor sugiere «se requiere un padre o tutor legal que cree el archivo en su nombre».</p>
<p>Aquí está todo el código del <emb>diff</emb> para quien le interese:</p>
-<pre><code>@@ -42,6 +42,23 @@ source "fs/crypto/Kconfig"
+<pre><code class="diff"><span class="hunk">@@ -42,6 +42,23 @@ source "fs/crypto/Kconfig"</span>
source "fs/verity/Kconfig"
source "fs/notify/Kconfig"
-+config VFS_AGE_VERIFICATION
-+ bool "Require birth date verification for file creation"
-+ default y
-+ help
-+ When enabled, every process must register a valid birth date via
-+ prctl(PR_SET_BIRTHDATE, day, month, year) before being allowed to
-+ create files. Processes that have not registered a birth date or
-+ whose registered birth date indicates they are under 18 years of
-+ age will receive -ETOOYOUNG on any file creation attempt.
-+
-+ If unsure, say Y. Failure to comply may result in stern letters
-+ from lawyers. You don't want that. Trust us. Say Y.
-+
+<span class="add">+config VFS_AGE_VERIFICATION</span>
+<span class="add">+ bool "Require birth date verification for file creation"</span>
+<span class="add">+ default y</span>
+<span class="add">+ help</span>
+<span class="add">+ When enabled, every process must register a valid birth date via</span>
+<span class="add">+ prctl(PR_SET_BIRTHDATE, day, month, year) before being allowed to</span>
+<span class="add">+ create files. Processes that have not registered a birth date or</span>
+<span class="add">+ whose registered birth date indicates they are under 18 years of</span>
+<span class="add">+ age will receive -ETOOYOUNG on any file creation attempt.</span>
+<span class="add">+</span>
+<span class="add">+ If unsure, say Y. Failure to comply may result in stern letters</span>
+<span class="add">+ from lawyers. You don't want that. Trust us. Say Y.</span>
+<span class="add">+</span>
source "fs/quota/Kconfig"
source "fs/autofs/Kconfig"
-diff --git a/include/uapi/asm-generic/errno.h b/include/uapi/asm-generic/errno.h
-index 1..2 100644
---- a/include/uapi/asm-generic/errno.h
-+++ b/include/uapi/asm-generic/errno.h
-@@ -20,4 +20,6 @@
+<span class="info">diff --git a/include/uapi/asm-generic/errno.h b/include/uapi/asm-generic/errno.h</span>
+<span class="info">index 1..2 100644</span>
+<span class="info">--- a/include/uapi/asm-generic/errno.h</span>
+<span class="info">+++ b/include/uapi/asm-generic/errno.h</span>
+<span class="hunk">@@ -20,4 +20,6 @@</span>
- #define EHWPOISON 133 /* Memory page has hardware error */
+ #define EHWPOISON 133 /* Memory page has hardware error */
-+#define ETOOYOUNG 134 /* Process too young to create content */
-+
+<span class="add">+#define ETOOYOUNG 134 /* Process too young to create content */</span>
+<span class="add">+</span>
#endif
-diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h
-index 3..4 100644
---- a/include/uapi/linux/prctl.h
-+++ b/include/uapi/linux/prctl.h
-@@ -328,4 +328,8 @@
+<span class="info">diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h</span>
+<span class="info">index 3..4 100644</span>
+<span class="info">--- a/include/uapi/linux/prctl.h</span>
+<span class="info">+++ b/include/uapi/linux/prctl.h</span>
+<span class="hunk">@@ -328,4 +328,8 @@</span>
#define PR_LOCK_INDIR_BR_LP_STATUS 82
-+/* age verification for file creation */
-+#define PR_SET_BIRTHDATE 83
-+#define PR_GET_BIRTHDATE 84
-+
+<span class="add">+/* age verification for file creation */</span>
+<span class="add">+#define PR_SET_BIRTHDATE 83</span>
+<span class="add">+#define PR_GET_BIRTHDATE 84</span>
+<span class="add">+</span>
#endif /* _LINUX_PRCTL_H */
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 5..6 100644
---- a/include/linux/sched.h
-+++ b/include/linux/sched.h
-@@ -1215,6 +1215,14 @@ struct task_struct {
+<span class="info">diff --git a/include/linux/sched.h b/include/linux/sched.h</span>
+<span class="info">index 5..6 100644</span>
+<span class="info">--- a/include/linux/sched.h</span>
+<span class="info">+++ b/include/linux/sched.h</span>
+<span class="hunk">@@ -1215,6 +1215,14 @@ struct task_struct {</span>
#endif
- struct seccomp seccomp;
- struct syscall_user_dispatch syscall_dispatch;
-+
-+#ifdef CONFIG_VFS_AGE_VERIFICATION
-+ /* compliance - birth date for age verification */
-+ u8 birthdate_day;
-+ u8 birthdate_month;
-+ u16 birthdate_year;
-+ bool birthdate_verified;
-+#endif
+ struct seccomp seccomp;
+ struct syscall_user_dispatch syscall_dispatch;
+<span class="add">+</span>
+<span class="add">+#ifdef CONFIG_VFS_AGE_VERIFICATION</span>
+<span class="add">+ /* compliance - birth date for age verification */</span>
+<span class="add">+ u8 birthdate_day;</span>
+<span class="add">+ u8 birthdate_month;</span>
+<span class="add">+ u16 birthdate_year;</span>
+<span class="add">+ bool birthdate_verified;</span>
+<span class="add">+#endif</span>
- /* Thread group tracking: */
- u64 parent_exec_id;
-diff --git a/kernel/sys.c b/kernel/sys.c
-index 7..8 100644
---- a/kernel/sys.c
-+++ b/kernel/sys.c
-@@ -2345,6 +2345,48 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
- break;
-+
-+#ifdef CONFIG_VFS_AGE_VERIFICATION
-+ case PR_SET_BIRTHDATE:
-+ {
-+ u8 day = (u8)arg2;
-+ u8 month = (u8)arg3;
-+ u16 year = (u16)arg4;
-+ struct tm now;
-+ int age;
-+
-+ /* Basic date validation */
-+ if (month < 1 || month > 12)
-+ return -EINVAL;
-+ if (day < 1 || day > 31)
-+ return -EINVAL;
-+ if (year < 1900)
-+ return -EINVAL;
-+
-+ time64_to_tm(ktime_get_real_seconds(), 0, &now);
-+
-+ /* The kernel does not support vampires or immortal entities */
-+ if ((now.tm_year + 1900) - year > 150)
-+ return -EINVAL;
-+
-+ /* No time travelers either */
-+ if (year > (now.tm_year + 1900))
-+ return -EINVAL;
-+
-+ me->birthdate_day = day;
-+ me->birthdate_month = month;
-+ me->birthdate_year = year;
-+ me->birthdate_verified = true;
-+
-+ age = (now.tm_year + 1900) - year;
-+ if (now.tm_mon + 1 < month ||
-+ (now.tm_mon + 1 == month && now.tm_mday < day))
-+ age--;
-+
-+ if (age < 18)
-+ pr_info_ratelimited("Process %d (comm: %s) registered as minor (age %d). "
-+ "File creation will be denied. Please ask a "
-+ "parent or guardian for assistance.\n",
-+ task_pid_nr(me), me->comm, age);
-+ break;
-+ }
-+ case PR_GET_BIRTHDATE:
-+ if (!me->birthdate_verified)
-+ return -EINVAL;
-+ if (put_user(me->birthdate_day, (u8 __user *)arg2) ||
-+ put_user(me->birthdate_month, (u8 __user *)arg3) ||
-+ put_user(me->birthdate_year, (u16 __user *)arg4))
-+ return -EFAULT;
-+ break;
-+#endif /* CONFIG_VFS_AGE_VERIFICATION */
-+
- default:
- error = -EINVAL;
- break;
-diff --git a/fs/namei.c b/fs/namei.c
-index 9..10 100644
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -4148,6 +4148,45 @@ static int vfs_mknodat(struct mnt_idmap *idmap, struct dentry *dentry,
- umode_t mode, dev_t dev);
+ /* Thread group tracking: */
+ u64 parent_exec_id;
+<span class="info">diff --git a/kernel/sys.c b/kernel/sys.c</span>
+<span class="info">index 7..8 100644</span>
+<span class="info">--- a/kernel/sys.c</span>
+<span class="info">+++ b/kernel/sys.c</span>
+<span class="hunk">@@ -2345,6 +2345,48 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,</span>
+ break;
+<span class="add">+</span>
+<span class="add">+#ifdef CONFIG_VFS_AGE_VERIFICATION</span>
+<span class="add">+ case PR_SET_BIRTHDATE:</span>
+<span class="add">+ {</span>
+<span class="add">+ u8 day = (u8)arg2;</span>
+<span class="add">+ u8 month = (u8)arg3;</span>
+<span class="add">+ u16 year = (u16)arg4;</span>
+<span class="add">+ struct tm now;</span>
+<span class="add">+ int age;</span>
+<span class="add">+</span>
+<span class="add">+ /* Basic date validation */</span>
+<span class="add">+ if (month < 1 || month > 12)</span>
+<span class="add">+ return -EINVAL;</span>
+<span class="add">+ if (day < 1 || day > 31)</span>
+<span class="add">+ return -EINVAL;</span>
+<span class="add">+ if (year < 1900)</span>
+<span class="add">+ return -EINVAL;</span>
+<span class="add">+</span>
+<span class="add">+ time64_to_tm(ktime_get_real_seconds(), 0, &now);</span>
+<span class="add">+</span>
+<span class="add">+ /* The kernel does not support vampires or immortal entities */</span>
+<span class="add">+ if ((now.tm_year + 1900) - year > 150)</span>
+<span class="add">+ return -EINVAL;</span>
+<span class="add">+</span>
+<span class="add">+ /* No time travelers either */</span>
+<span class="add">+ if (year > (now.tm_year + 1900))</span>
+<span class="add">+ return -EINVAL;</span>
+<span class="add">+</span>
+<span class="add">+ me->birthdate_day = day;</span>
+<span class="add">+ me->birthdate_month = month;</span>
+<span class="add">+ me->birthdate_year = year;</span>
+<span class="add">+ me->birthdate_verified = true;</span>
+<span class="add">+</span>
+<span class="add">+ age = (now.tm_year + 1900) - year;</span>
+<span class="add">+ if (now.tm_mon + 1 < month ||</span>
+<span class="add">+ (now.tm_mon + 1 == month && now.tm_mday < day))</span>
+<span class="add">+ age--;</span>
+<span class="add">+</span>
+<span class="add">+ if (age < 18)</span>
+<span class="add">+ pr_info_ratelimited("Process %d (comm: %s) registered as minor (age %d). "</span>
+<span class="add">+ "File creation will be denied. Please ask a "</span>
+<span class="add">+ "parent or guardian for assistance.\n",</span>
+<span class="add">+ task_pid_nr(me), me->comm, age);</span>
+<span class="add">+ break;</span>
+<span class="add">+ }</span>
+<span class="add">+ case PR_GET_BIRTHDATE:</span>
+<span class="add">+ if (!me->birthdate_verified)</span>
+<span class="add">+ return -EINVAL;</span>
+<span class="add">+ if (put_user(me->birthdate_day, (u8 __user *)arg2) ||</span>
+<span class="add">+ put_user(me->birthdate_month, (u8 __user *)arg3) ||</span>
+<span class="add">+ put_user(me->birthdate_year, (u16 __user *)arg4))</span>
+<span class="add">+ return -EFAULT;</span>
+<span class="add">+ break;</span>
+<span class="add">+#endif /* CONFIG_VFS_AGE_VERIFICATION */</span>
+<span class="add">+</span>
+ default:
+ error = -EINVAL;
+ break;
+<span class="info">diff --git a/fs/namei.c b/fs/namei.c</span>
+<span class="info">index 9..10 100644</span>
+<span class="info">--- a/fs/namei.c</span>
+<span class="info">+++ b/fs/namei.c</span>
+<span class="hunk">@@ -4148,6 +4148,45 @@ static int vfs_mknodat(struct mnt_idmap *idmap, struct dentry *dentry,</span>
+ umode_t mode, dev_t dev);
-+#ifdef CONFIG_VFS_AGE_VERIFICATION
-+/**
-+ * check_age_verification - verify the calling process has registered a valid
-+ * birth date and is old enough to create files.
-+ *
-+ * Returns 0 if the caller is verified as an adult (>= 18 years old).
-+ * Returns -ETOOYOUNG if the caller is a minor or has not registered a
-+ * birth date.
-+ *
-+ * This function exists because the fundamental UNIX
-+ * principle of "everything is a file" was insufficiently regulated.
-+ */
-+static int check_age_verification(void)
-+{
-+ struct task_struct *tsk = current;
-+ struct tm now;
-+ int age;
-+
-+ if (!tsk->birthdate_verified) {
-+ pr_warn_ratelimited(
-+ "Process %d (comm: %s) attempted to create a file "
-+ "without age verification. Set birth date via "
-+ "prctl(PR_SET_BIRTHDATE, day, month, year).\n",
-+ task_pid_nr(tsk), tsk->comm);
-+ return -ETOOYOUNG;
-+ }
-+
-+ time64_to_tm(ktime_get_real_seconds(), 0, &now);
-+
-+ age = (now.tm_year + 1900) - tsk->birthdate_year;
-+ if (now.tm_mon + 1 < tsk->birthdate_month ||
-+ (now.tm_mon + 1 == tsk->birthdate_month &&
-+ now.tm_mday < tsk->birthdate_day))
-+ age--;
-+
-+ if (age < 18) {
-+ pr_warn_ratelimited(
-+ "Process %d (comm: %s) is only %d years old. "
-+ "Must be 18 or older to create files. "
-+ "Ask a parent or guardian for help.\n",
-+ task_pid_nr(tsk), tsk->comm, age);
-+ return -ETOOYOUNG;
-+ }
-+
-+ return 0;
-+}
-+#endif /* CONFIG_VFS_AGE_VERIFICATION */
-+
+<span class="add">+#ifdef CONFIG_VFS_AGE_VERIFICATION</span>
+<span class="add">+/**</span>
+<span class="add">+ * check_age_verification - verify the calling process has registered a valid</span>
+<span class="add">+ * birth date and is old enough to create files.</span>
+<span class="add">+ *</span>
+<span class="add">+ * Returns 0 if the caller is verified as an adult (>= 18 years old).</span>
+<span class="add">+ * Returns -ETOOYOUNG if the caller is a minor or has not registered a</span>
+<span class="add">+ * birth date.</span>
+<span class="add">+ *</span>
+<span class="add">+ * This function exists because the fundamental UNIX</span>
+<span class="add">+ * principle of "everything is a file" was insufficiently regulated.</span>
+<span class="add">+ */</span>
+<span class="add">+static int check_age_verification(void)</span>
+<span class="add">+{</span>
+<span class="add">+ struct task_struct *tsk = current;</span>
+<span class="add">+ struct tm now;</span>
+<span class="add">+ int age;</span>
+<span class="add">+</span>
+<span class="add">+ if (!tsk->birthdate_verified) {</span>
+<span class="add">+ pr_warn_ratelimited(</span>
+<span class="add">+ "Process %d (comm: %s) attempted to create a file "</span>
+<span class="add">+ "without age verification. Set birth date via "</span>
+<span class="add">+ "prctl(PR_SET_BIRTHDATE, day, month, year).\n",</span>
+<span class="add">+ task_pid_nr(tsk), tsk->comm);</span>
+<span class="add">+ return -ETOOYOUNG;</span>
+<span class="add">+ }</span>
+<span class="add">+</span>
+<span class="add">+ time64_to_tm(ktime_get_real_seconds(), 0, &now);</span>
+<span class="add">+</span>
+<span class="add">+ age = (now.tm_year + 1900) - tsk->birthdate_year;</span>
+<span class="add">+ if (now.tm_mon + 1 < tsk->birthdate_month ||</span>
+<span class="add">+ (now.tm_mon + 1 == tsk->birthdate_month &&</span>
+<span class="add">+ now.tm_mday < tsk->birthdate_day))</span>
+<span class="add">+ age--;</span>
+<span class="add">+</span>
+<span class="add">+ if (age < 18) {</span>
+<span class="add">+ pr_warn_ratelimited(</span>
+<span class="add">+ "Process %d (comm: %s) is only %d years old. "</span>
+<span class="add">+ "Must be 18 or older to create files. "</span>
+<span class="add">+ "Ask a parent or guardian for help.\n",</span>
+<span class="add">+ task_pid_nr(tsk), tsk->comm, age);</span>
+<span class="add">+ return -ETOOYOUNG;</span>
+<span class="add">+ }</span>
+<span class="add">+</span>
+<span class="add">+ return 0;</span>
+<span class="add">+}</span>
+<span class="add">+#endif /* CONFIG_VFS_AGE_VERIFICATION */</span>
+<span class="add">+</span>
/**
* vfs_create - create new file
- * @idmap: idmap of the mount the inode was found from
-@@ -4170,6 +4209,12 @@ int vfs_create(struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode,
- if (error)
- return error;
+ * @idmap: idmap of the mount the inode was found from
+<span class="hunk">@@ -4170,6 +4209,12 @@ int vfs_create(struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode,</span>
+ if (error)
+ return error;
-+#ifdef CONFIG_VFS_AGE_VERIFICATION
-+ error = check_age_verification();
-+ if (error)
-+ return error;
-+#endif
-+
- if (!dir->i_op->create)
- return -EACCES; /* shouldn't it be ENOSYS? */
+<span class="add">+#ifdef CONFIG_VFS_AGE_VERIFICATION</span>
+<span class="add">+ error = check_age_verification();</span>
+<span class="add">+ if (error)</span>
+<span class="add">+ return error;</span>
+<span class="add">+#endif</span>
+<span class="add">+</span>
+ if (!dir->i_op->create)
+ return -EACCES; /* shouldn't it be ENOSYS? */
---
+<span class="del">--</span>
2.49.0</code></pre>
<p>Entre las partes más interesantes, a mi parecer, son que con este parche, el Kernel de Linux no soportará deliberadamente el uso de vampiros ni entidades inmortales, estableciendo un condicional que si, la fecha es superior a 150 años en el pasado, devuelve error.</p>
<pre><code>/* The kernel does not support vampires or immortal entities */
diff --git a/raza/index.html b/raza/index.html
@@ -12,21 +12,31 @@
<p class="title">Consideraciones católicas sobre «el verdadero, propio y sano racismo»</p>
<p class="date">11 de abril de 2019 • fjbalon</p>
</header>
-<p></p>
-
-Arzobispo Conrad Gröber
-
-<cita><p>«Puesto que cada nación tiene la responsabilidad de su propia existencia feliz y el recibir sangre completamente extranjera de una nacionalidad <span class="subrayado">históricamente probada supone siempre un riesgo, ninguna nación puede negarse el derecho a preservar su anterior estado racial intacto y a proveer salvaguardias para este fin</span>. La religión cristiana sólo exige que los medios empleados no violen los preceptos morales y la justicia natural.</p>
-<p>La legislación racial del presente sólo puede significar, por tanto, que la raza autóctona y la cultura autóctona deben ser protegidas de la degeneración y cultivadas. <span class="subrayado">Si un pueblo quiere preservar su singularidad, los hijos e hijas sanos por herencia de familias nativas deben casarse con familias similares y evitar matrimonios con personas de otras razas</span> en el sentido antes indicado.</p>
+<p>Es bien sabido que la primera mitad del siglo XX ha tenido un altísimo componente racial, que ha inundado la teología y la política del Oeste. El estudio científico de la raza, la búsqueda de los pueblos nativos europeos de un perfeccionamiento y protección de ésta, así como el avance de las grandes guerras mundiales son características dignas de un estudio profundo que rara vez se hacen. Hoy día el componente racial se vuelve de nuevo crucial, aumentado principalmente en el siglo XXI por el problema de la inmigración masiva y el turismo.</p>
+<p>El primero que citaré será el obispo Conrad Gröber, arzobispo de Friburgo de Brisgovia desde 1932 hasta su muerte. Nacido en Baden, ordenado sacerdote en 1897 y obispo de Meissen en 1931.</p>
+<cita><p>«Puesto que cada pueblo tiene la responsabilidad de su propia existencia feliz, y la admisión de sangre completamente extranjera <span class="subrayado">supone siempre un riesgo para una nacionalidad de valor histórico probado, a ningún pueblo se le puede negar el derecho a preservar intacto su patrimonio racial anterior y a establecer las salvaguardias necesarias para ello</span>. La religión cristiana solo exige que los medios empleados no vulneren la ley moral ni la justicia natural.</p>
+<p>Por tanto, la legislación racial actual solo puede significar que la raza y la cultura autóctona deben ser protegidas de la degeneración y fomentadas. <span class="subrayado">Si un pueblo desea preservar su singularidad, los hijos e hijas hereditariamente sanos de las familias nativas deben casarse con personas de familias semejantes y evitar los matrimonios con personas de otras razas</span>, en el sentido antes indicado.»
<p>...</p>
-<p>Debe añadirse aquí que, desde el punto de vista del cristianismo, la investigación racial científicamente fundada y el cuidado racial sólo deben ser bienvenidos. <span class="subrayado">Todos estarán de acuerdo en que el amor hacia el propio pueblo nunca debe tener efecto en el odio hacia pueblos compuestos de manera diferente</span>. Odiamos el pecado, pero no a las personas que son racialmente diferentes de nosotros. Además, nadie creerá que la mera composición rimbombante exime a uno del deber moral de educarse perseverantemente para cultivar su alma. En este sentido, un cristiano valorará los medios de la gracia por encima de todo lo demás.
-</p>
+<p>Debe añadirse aquí que, desde el punto de vista del cristianismo, la investigación racial científicamente fundada y el cuidado de la raza deben ser bienvenidos. <span class="subrayado">Todos estarán de acuerdo en que el amor al propio pueblo nunca debe convertirse en odio hacia los pueblos de distinta composición racial</span>. Odiamos el pecado, pero no a las personas que son racialmente diferentes de nosotros. Además, nadie creerá que la mera composición racial exime a nadie del deber moral de formarse perseverantemente en el cultivo de su alma. En este sentido, un cristiano valorará los medios de la gracia por encima de todo lo demás.</p>
<p>...</p>
-<p>Un estudio racial y el cuidado racial, que elevarían a la raza misma al más alto valor como punto de vista del mundo y de la vida y que por lo tanto se verían tentados a atacar al cristianismo mismo, estarían en un camino fatalmente equivocado. <span class="subrayado">Porque la raza y el cristianismo no son opuestos, sino órdenes diferentes que se complementan mutuamente</span>. La raza es algo dado por la naturaleza a cada individuo. El cristianismo es una revelación sobrenatural para todos los pueblos. De ambos órdenes, armoniosamente conectados entre sí, surge el perfeccionamiento de la personalidad, la familia, el pueblo, la humanidad.»
-</p>
+<p>Un estudio racial y un cuidado de la raza que elevasen la raza misma al valor supremo como visión del mundo y de la vida, y que por tanto se vieran tentados a atacar al cristianismo mismo, estarían en un camino fatalmente equivocado. <span class="subrayado">Porque la raza y el cristianismo no son opuestos, sino órdenes diferentes que se complementan mutuamente</span>. La raza es algo dado por la naturaleza a cada individuo. El cristianismo es una revelación sobrenatural para todos los pueblos. De ambos órdenes, armoniosamente unidos entre sí, surge el perfeccionamiento de la personalidad, de la familia, del pueblo y de la humanidad.</p>
<p>Manual de Cuestiones Religiosas Contemporáneas, (1937), págs. 437-438</p></cita>
+Cuatro años después de la subida de Hitler al poder (1933) y de la firma del Reichskonkordat entre el Vaticano y el Tercer Reich.
+En plena fase de consolidación del régimen nazi, cuando la Iglesia católica alemana intentaba preservar su autonomía, sus escuelas, su juventud y su doctrina frente a las crecientes pretensiones totalitarias del Estado.
+Cuando las ideas de «higiene racial», eugenesia y pureza de la sangre formaban parte del discurso oficial y tenían cierta aceptación incluso fuera de los círculos estrictamente nazis.
+
+
+
+Arzobispo
+
+Las frases que has ido citando pertenecen al artículo sobre «Rasse» (raza) del Handbuch der religiösen Gegenwartsfragen («Manual de cuestiones religiosas contemporáneas»), publicado en 1937 por la editorial Herder de Friburgo y editado por el propio Gröber «con la recomendación del episcopado alemán en su conjunto».
+
+
+
+
+
Papa Pío XI
<cita><p>«Con la universalidad está la esencia de la Iglesia Católica; pero con esta universalidad están también, <span class="subrayado">bien armonizadas, bien comprendidas y cada una en su lugar, las ideas de raza, de linaje</span>, de nación y de nacionalidad... No hay necesidad de ser demasiado exigentes: así como se dice género, puede decirse raza, y debe decirse que los hombres son ante todo un solo gran género, una sola gran familia… La humanidad es una, única, universal, raza católica. Sin embargo, de ningún modo se niega que <span class="subrayado">en esta raza universal haya lugar para las razas particulares y, como otras tantas variaciones sobre ellas, también para numerosas naciones aún más particularizadas</span>. Del mismo modo que en las grandes composiciones musicales existen importantes variaciones en las que se encuentra el mismo motivo general, que las inspira a todas y reaparece repetidamente con tonalidades, acentos y expresiones diferentes, así también en la humanidad existe una única, vasta, universal y católica raza humana, y junto a ella, y dentro de ella, diversas variaciones…»
diff --git a/slstatus/index.html b/slstatus/index.html
@@ -22,8 +22,25 @@ static const char unknown_str[] = "n/a";
static const struct arg args[] = {
{ datetime, "%s", "%F %T" },
};</code></pre>
-<p>Lo que más nos interesa por el momento es la estructura <emb>arg</emb>, que es un array de elementos a mostrar por pantalla. En un inicio, sólo mostrará la fecha y hora.</p>
-
+<p>La configuración por defecto de <emb>datetime</emb> la he dejado con una configuración que me gusta algo más: <emb>{ datetime, " %s", "%d/%m/%y %H:%M" },</emb>, de tal forma que la fecha mostrada es <emb>22/07/26 16:59</emb>.</p>
+<p>Lo que más nos interesa por el momento es la estructura <emb>arg</emb>, que es un array de elementos a mostrar por pantalla. En un inicio, sólo mostrará la fecha y hora. Pero hay muchas más opciones ya programadas en el código base, como <emb>battery_perc</emb>. <emb>battery_remaining</emb> y <emb>battery_state</emb>, que muestra el porcentaje de batería, el cálculo del tiempo restante y el estado de la batería (en carga, en descarga, completa...), respectivamente.</p>
+<p>De tal forma añado, en mi caso, el siguiente contenido para su muestra en la barra de estado:</p>
+<pre><code>{ battery_state, "%s", "BAT0" },
+{ battery_perc, "%s", "BAT0" },
+{ battery_remaining, " %s", "BAT0" },</code></pre>
+<p>Por gusto personal he cambiado también el código de <emb>components/battery.c</emb>, para que al descargar muestre <emb>ϟ</emb> y al cargar, <emb>ϟϟ</emb>.</p>
+<pre><code class="diff"><span class="info">diff --git a/components/battery.c b/components/battery.c</span>
+<span class="hunk">@@ -56,8 +56,8 @@</span>
+ char *state;
+ char *symbol;
+ } map[] = {
+<span class="del">- { "Charging", "+" },</span>
+<span class="del">- { "Discharging", "-" },</span>
+<span class="add">+ { "Charging", "ϟϟ" },</span>
+<span class="add">+ { "Discharging", "ϟ" },</span>
+ { "Full", "o" },
+ { "Not charging", "o" },
+ };</code></pre>
<!--
* battery_perc battery percentage battery name (BAT0)