* [KJ] [patch 2.6.13-rc1 03/23][RESEND] Audit return code of
@ 2005-07-08 10:22 Christophe Lucas
2005-07-08 14:59 ` Domen Puncer
2005-07-12 16:51 ` Christophe Lucas
0 siblings, 2 replies; 3+ messages in thread
From: Christophe Lucas @ 2005-07-08 10:22 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 13931 bytes --]
Description:
Audit return of create_proc_* functions and use of KERN_ in printk();
Signed-off-by: Christophe Lucas <clucas@rotomalug.org>
Index: 2.6.13-rc1/drivers/net/tokenring/olympic.c
===================================================================
--- 2.6.13-rc1.orig/drivers/net/tokenring/olympic.c
+++ 2.6.13-rc1/drivers/net/tokenring/olympic.c
@@ -220,12 +220,12 @@ static int __devinit olympic_probe(struc
}
olympic_priv = dev->priv ;
-
+
spin_lock_init(&olympic_priv->olympic_lock) ;
init_waitqueue_head(&olympic_priv->srb_wait);
init_waitqueue_head(&olympic_priv->trb_wait);
-#if OLYMPIC_DEBUG
+#if OLYMPIC_DEBUG
printk(KERN_INFO "pci_device: %p, dev:%p, dev->priv: %p\n", pdev, dev, dev->priv);
#endif
dev->irq=pdev->irq;
@@ -237,7 +237,7 @@ static int __devinit olympic_probe(struc
if (!olympic_priv->olympic_mmio || !olympic_priv->olympic_lap) {
goto op_free_iomap;
}
-
+
if ((pkt_buf_sz[card_no] < 100) || (pkt_buf_sz[card_no] > 18000) )
olympic_priv->pkt_buf_sz = PKT_BUF_SZ ;
else
@@ -247,10 +247,10 @@ static int __devinit olympic_probe(struc
olympic_priv->olympic_ring_speed = ringspeed[card_no] ;
olympic_priv->olympic_message_level = message_level[card_no] ;
olympic_priv->olympic_network_monitor = network_monitor[card_no];
-
+
if ((i = olympic_init(dev))) {
goto op_free_iomap;
- }
+ }
dev->open=&olympic_open;
dev->hard_start_xmit=&olympic_xmit;
@@ -265,13 +265,16 @@ static int __devinit olympic_probe(struc
pci_set_drvdata(pdev,dev) ;
register_netdev(dev) ;
- printk("Olympic: %s registered as: %s\n",olympic_priv->olympic_card_name,dev->name);
+ printk(KERN_INFO "Olympic: %s registered as: %s\n",olympic_priv->olympic_card_name,dev->name);
if (olympic_priv->olympic_network_monitor) { /* Must go after register_netdev as we need the device name */
+ struct proc_dir_entry *ent;
char proc_name[20] ;
strcpy(proc_name,"net/olympic_") ;
strcat(proc_name,dev->name) ;
- create_proc_read_entry(proc_name,0,NULL,olympic_proc_info,(void *)dev) ;
- printk("Olympic: Network Monitor information: /proc/%s\n",proc_name);
+ ent = create_proc_read_entry(proc_name,0,NULL,olympic_proc_info,(void *)dev) ;
+ if (!ent)
+ printk(KERN_WARNING "Olympic: Unable to create /proc entry.\n");
+ printk(KERN_INFO "Olympic: Network Monitor information: /proc/%s\n",proc_name);
}
return 0 ;
@@ -300,8 +303,10 @@ static int __devinit olympic_init(struct
olympic_priv=(struct olympic_private *)dev->priv;
olympic_mmio=olympic_priv->olympic_mmio;
- printk("%s \n", version);
- printk("%s. I/O at %hx, MMIO at %p, LAP at %p, using irq %d\n", olympic_priv->olympic_card_name, (unsigned int) dev->base_addr,olympic_priv->olympic_mmio, olympic_priv->olympic_lap, dev->irq);
+ printk(KERN_INFO "%s \n", version);
+ printk(KERN_INFO "%s. I/O at %hx, MMIO at %p, LAP at %p, using irq %d\n",
+ olympic_priv->olympic_card_name, (unsigned int) dev->base_addr,
+ olympic_priv->olympic_mmio, olympic_priv->olympic_lap, dev->irq);
writel(readl(olympic_mmio+BCTL) | BCTL_SOFTRESET,olympic_mmio+BCTL);
t=jiffies;
@@ -320,9 +325,9 @@ static int __devinit olympic_init(struct
}
#if OLYMPIC_DEBUG
- printk("BCTL: %x\n",readl(olympic_mmio+BCTL));
- printk("GPR: %x\n",readw(olympic_mmio+GPR));
- printk("SISRMASK: %x\n",readl(olympic_mmio+SISR_MASK));
+ printk(KERN_DEBUG "BCTL: %x\n",readl(olympic_mmio+BCTL));
+ printk(KERN_DEBUG "GPR: %x\n",readw(olympic_mmio+GPR));
+ printk(KERN_DEBUG "SISRMASK: %x\n",readl(olympic_mmio+SISR_MASK));
#endif
/* Aaaahhh, You have got to be real careful setting GPR, the card
holds the previous values from flash memory, including autosense
@@ -347,7 +352,7 @@ static int __devinit olympic_init(struct
writew(readw(olympic_mmio+GPR)|GPR_NEPTUNE_BF,olympic_mmio+GPR);
#if OLYMPIC_DEBUG
- printk("GPR = %x\n",readw(olympic_mmio + GPR) ) ;
+ printk(KERN_DEBUG "GPR = %x\n",readw(olympic_mmio + GPR) ) ;
#endif
/* Solo has been paused to meet the Cardbus power
* specs if the adapter is cardbus. Check to
@@ -382,7 +387,7 @@ static int __devinit olympic_init(struct
writel(readw(olympic_mmio+LAPWWO),olympic_mmio+LAPA);
#if OLYMPIC_DEBUG
- printk("LAPWWO: %x, LAPA: %x\n",readl(olympic_mmio+LAPWWO), readl(olympic_mmio+LAPA));
+ printk(KERN_DEBUG "LAPWWO: %x, LAPA: %x\n",readl(olympic_mmio+LAPWWO), readl(olympic_mmio+LAPA));
#endif
init_srb=olympic_priv->olympic_lap + ((readw(olympic_mmio+LAPWWO)) & (~0xf800));
@@ -390,7 +395,7 @@ static int __devinit olympic_init(struct
#if OLYMPIC_DEBUG
{
int i;
- printk("init_srb(%p): ",init_srb);
+ printk(KERN_INFO "init_srb(%p): ",init_srb);
for(i=0;i<20;i++)
printk("%x ",readb(init_srb+i));
printk("\n");
@@ -412,14 +417,14 @@ static int __devinit olympic_init(struct
uaa_addr=swab16(readw(init_srb+8));
#if OLYMPIC_DEBUG
- printk("UAA resides at %x\n",uaa_addr);
+ printk(KERN_DEBUG "UAA resides at %x\n",uaa_addr);
#endif
writel(uaa_addr,olympic_mmio+LAPA);
adapter_addr=olympic_priv->olympic_lap + (uaa_addr & (~0xf800));
#if OLYMPIC_DEBUG
- printk("adapter address: %02x:%02x:%02x:%02x:%02x:%02x\n",
+ printk(KERN_DEBUG "adapter address: %02x:%02x:%02x:%02x:%02x:%02x\n",
readb(adapter_addr), readb(adapter_addr+1),readb(adapter_addr+2),
readb(adapter_addr+3),readb(adapter_addr+4),readb(adapter_addr+5));
#endif
@@ -450,8 +455,8 @@ static int olympic_open(struct net_devic
}
#if OLYMPIC_DEBUG
- printk("BMCTL: %x\n",readl(olympic_mmio+BMCTL_SUM));
- printk("pending ints: %x\n",readl(olympic_mmio+SISR_RR));
+ printk(KERN_DEBUG "BMCTL: %x\n",readl(olympic_mmio+BMCTL_SUM));
+ printk(KERN_DEBUG "pending ints: %x\n",readl(olympic_mmio+SISR_RR));
#endif
writel(SISR_MI,olympic_mmio+SISR_MASK_SUM);
@@ -466,9 +471,9 @@ static int olympic_open(struct net_devic
init_srb=olympic_priv->olympic_lap + ((readw(olympic_mmio+LAPWWO)) & (~0xf800));
#if OLYMPIC_DEBUG
- printk("LAPWWO: %x, LAPA: %x\n",readw(olympic_mmio+LAPWWO), readl(olympic_mmio+LAPA));
- printk("SISR Mask = %04x\n", readl(olympic_mmio+SISR_MASK));
- printk("Before the open command \n");
+ printk(KERN_DEBUG "LAPWWO: %x, LAPA: %x\n",readw(olympic_mmio+LAPWWO), readl(olympic_mmio+LAPA));
+ printk(KERN_DEBUG "SISR Mask = %04x\n", readl(olympic_mmio+SISR_MASK));
+ printk(KERN_DEBUG "Before the open command \n");
#endif
do {
memset_io(init_srb,0,SRB_COMMAND_SIZE);
@@ -530,7 +535,7 @@ static int olympic_open(struct net_devic
set_current_state(TASK_RUNNING) ;
olympic_priv->srb_queued = 0 ;
#if OLYMPIC_DEBUG
- printk("init_srb(%p): ",init_srb);
+ printk(KERN_DEBUG "init_srb(%p): ",init_srb);
for(i=0;i<20;i++)
printk("%02x ",readb(init_srb+i));
printk("\n");
@@ -650,23 +655,35 @@ static int olympic_open(struct net_devic
writew(i, olympic_mmio+RXSTATQCNT);
#if OLYMPIC_DEBUG
- printk("# of rx buffers: %d, RXENQ: %x\n",i, readw(olympic_mmio+RXENQ));
- printk("RXCSA: %x, rx_status_ring[0]: %p\n",readl(olympic_mmio+RXCSA),&olympic_priv->olympic_rx_status_ring[0]);
- printk(" stat_ring[1]: %p, stat_ring[2]: %p, stat_ring[3]: %p\n", &(olympic_priv->olympic_rx_status_ring[1]), &(olympic_priv->olympic_rx_status_ring[2]), &(olympic_priv->olympic_rx_status_ring[3]) );
- printk(" stat_ring[4]: %p, stat_ring[5]: %p, stat_ring[6]: %p\n", &(olympic_priv->olympic_rx_status_ring[4]), &(olympic_priv->olympic_rx_status_ring[5]), &(olympic_priv->olympic_rx_status_ring[6]) );
- printk(" stat_ring[7]: %p\n", &(olympic_priv->olympic_rx_status_ring[7]) );
-
- printk("RXCDA: %x, rx_ring[0]: %p\n",readl(olympic_mmio+RXCDA),&olympic_priv->olympic_rx_ring[0]);
- printk("Rx_ring_dma_addr = %08x, rx_status_dma_addr = %08x\n",
- olympic_priv->rx_ring_dma_addr,olympic_priv->rx_status_ring_dma_addr) ;
+ printk(KERN_DEBUG "# of rx buffers: %d, RXENQ: %x\n",i,
+ readw(olympic_mmio+RXENQ));
+ printk(KERN_DEBUG "RXCSA: %x, rx_status_ring[0]: %p\n",
+ readl(olympic_mmio+RXCSA),
+ &olympic_priv->olympic_rx_status_ring[0]);
+ printk(KERN_DEBUG " stat_ring[1]: %p, stat_ring[2]: %p, stat_ring[3]: %p\n",
+ &(olympic_priv->olympic_rx_status_ring[1]),
+ &(olympic_priv->olympic_rx_status_ring[2]),
+ &(olympic_priv->olympic_rx_status_ring[3]) );
+ printk(KERN_DEBUG " stat_ring[4]: %p, stat_ring[5]: %p, stat_ring[6]: %p\n",
+ &(olympic_priv->olympic_rx_status_ring[4]),
+ &(olympic_priv->olympic_rx_status_ring[5]),
+ &(olympic_priv->olympic_rx_status_ring[6]) );
+ printk(KERN_DEBUG " stat_ring[7]: %p\n",
+ &(olympic_priv->olympic_rx_status_ring[7]) );
+
+ printk(KERN_DEBUG "RXCDA: %x, rx_ring[0]: %p\n",
+ readl(olympic_mmio+RXCDA),&olympic_priv->olympic_rx_ring[0]);
+ printk(KERN_DEBUG "Rx_ring_dma_addr = %08x, rx_status_dma_addr = %08x\n",
+ olympic_priv->rx_ring_dma_addr,
+ olympic_priv->rx_status_ring_dma_addr);
#endif
writew((((readw(olympic_mmio+RXENQ)) & 0x8000) ^ 0x8000) | i,olympic_mmio+RXENQ);
#if OLYMPIC_DEBUG
- printk("# of rx buffers: %d, RXENQ: %x\n",i, readw(olympic_mmio+RXENQ));
- printk("RXCSA: %x, rx_ring[0]: %p\n",readl(olympic_mmio+RXCSA),&olympic_priv->olympic_rx_status_ring[0]);
- printk("RXCDA: %x, rx_ring[0]: %p\n",readl(olympic_mmio+RXCDA),&olympic_priv->olympic_rx_ring[0]);
+ printk(KERN_DEBUG "# of rx buffers: %d, RXENQ: %x\n",i, readw(olympic_mmio+RXENQ));
+ printk(KERN_DEBUG "RXCSA: %x, rx_ring[0]: %p\n",readl(olympic_mmio+RXCSA),&olympic_priv->olympic_rx_status_ring[0]);
+ printk(KERN_DEBUG "RXCDA: %x, rx_ring[0]: %p\n",readl(olympic_mmio+RXCDA),&olympic_priv->olympic_rx_ring[0]);
#endif
writel(SISR_RX_STATUS | SISR_RX_NOBUF,olympic_mmio+SISR_MASK_SUM);
@@ -699,8 +716,8 @@ static int olympic_open(struct net_devic
writel(SISR_TX1_EOF | SISR_ADAPTER_CHECK | SISR_ARB_CMD | SISR_TRB_REPLY | SISR_ASB_FREE | SISR_ERR,olympic_mmio+SISR_MASK_SUM);
#if OLYMPIC_DEBUG
- printk("BMCTL: %x\n",readl(olympic_mmio+BMCTL_SUM));
- printk("SISR MASK: %x\n",readl(olympic_mmio+SISR_MASK));
+ printk(KERN_DEBUG "BMCTL: %x\n",readl(olympic_mmio+BMCTL_SUM));
+ printk(KERN_DEBUG "SISR MASK: %x\n",readl(olympic_mmio+SISR_MASK));
#endif
if (olympic_priv->olympic_network_monitor) {
@@ -709,19 +726,19 @@ static int olympic_open(struct net_devic
oat = (olympic_priv->olympic_lap + olympic_priv->olympic_addr_table_addr) ;
opt = (olympic_priv->olympic_lap + olympic_priv->olympic_parms_addr) ;
- printk("%s: Node Address: %02x:%02x:%02x:%02x:%02x:%02x\n",dev->name,
+ printk(KERN_INFO "%s: Node Address: %02x:%02x:%02x:%02x:%02x:%02x\n",dev->name,
readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)),
readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+1),
readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+2),
readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+3),
readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+4),
readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+5));
- printk("%s: Functional Address: %02x:%02x:%02x:%02x\n",dev->name,
+ printk(KERN_INFO "%s: Functional Address: %02x:%02x:%02x:%02x\n",dev->name,
readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)),
readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+1),
readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+2),
readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+3));
- printk("%s: NAUN Address: %02x:%02x:%02x:%02x:%02x:%02x\n",dev->name,
+ printk(KERN_INFO "%s: NAUN Address: %02x:%02x:%02x:%02x:%02x:%02x\n",dev->name,
readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)),
readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+1),
readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+2),
@@ -771,7 +788,9 @@ static void olympic_rx(struct net_device
olympic_priv->rx_status_last_received++ ;
olympic_priv->rx_status_last_received &= (OLYMPIC_RX_RING_SIZE -1);
#if OLYMPIC_DEBUG
- printk("rx status: %x rx len: %x \n", le32_to_cpu(rx_status->status_buffercnt), le32_to_cpu(rx_status->fragmentcnt_framelen));
+ printk(KERN_DEBUG "rx status: %x rx len: %x \n",
+ le32_to_cpu(rx_status->status_buffercnt),
+ le32_to_cpu(rx_status->fragmentcnt_framelen));
#endif
length = le32_to_cpu(rx_status->fragmentcnt_framelen) & 0xffff;
buffer_cnt = le32_to_cpu(rx_status->status_buffercnt) & 0xffff;
@@ -779,7 +798,8 @@ static void olympic_rx(struct net_device
frag_len = le32_to_cpu(rx_status->fragmentcnt_framelen) >> 16;
#if OLYMPIC_DEBUG
- printk("length: %x, frag_len: %x, buffer_cnt: %x\n", length, frag_len, buffer_cnt);
+ printk(KERN_DEBUG "length: %x, frag_len: %x, buffer_cnt: %x\n",
+ length, frag_len, buffer_cnt);
#endif
l_status_buffercnt = le32_to_cpu(rx_status->status_buffercnt);
if(l_status_buffercnt & 0xC0000000) {
@@ -1131,7 +1151,7 @@ static int olympic_close(struct net_devi
#if OLYMPIC_DEBUG
{
int i ;
- printk("srb(%p): ",srb);
+ printk(KERN_DEBUG "srb(%p): ",srb);
for(i=0;i<4;i++)
printk("%x ",readb(srb+i));
printk("\n");
@@ -1419,10 +1439,13 @@ static void olympic_arb_cmd(struct net_d
frame_data = buf_ptr+offsetof(struct mac_receive_buffer,frame_data) ;
for (i=0 ; i < 14 ; i++) {
- printk("Loc %d = %02x\n",i,readb(frame_data + i));
+ printk(KERN_DEBUG "Loc %d = %02x\n",i,readb(frame_data + i));
}
- printk("next %04x, fs %02x, len %04x \n",readw(buf_ptr+offsetof(struct mac_receive_buffer,next)), readb(buf_ptr+offsetof(struct mac_receive_buffer,frame_status)), readw(buf_ptr+offsetof(struct mac_receive_buffer,buffer_length)));
+ printk(KERN_DEBUG "next %04x, fs %02x, len %04x \n",
+ readw(buf_ptr+offsetof(struct mac_receive_buffer,next)),
+ readb(buf_ptr+offsetof(struct mac_receive_buffer,frame_status)),
+ readw(buf_ptr+offsetof(struct mac_receive_buffer,buffer_length)));
}
#endif
mac_frame = dev_alloc_skb(frame_len) ;
[-- Attachment #2: Type: text/plain, Size: 168 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [KJ] [patch 2.6.13-rc1 03/23][RESEND] Audit return code of
2005-07-08 10:22 [KJ] [patch 2.6.13-rc1 03/23][RESEND] Audit return code of Christophe Lucas
@ 2005-07-08 14:59 ` Domen Puncer
2005-07-12 16:51 ` Christophe Lucas
1 sibling, 0 replies; 3+ messages in thread
From: Domen Puncer @ 2005-07-08 14:59 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 968 bytes --]
I thought only SCSI drivers are this scary. ;-)
On 08/07/05 12:22 +0200, Christophe Lucas wrote:
> Description:
> Audit return of create_proc_* functions and use of KERN_ in printk();
>
> Signed-off-by: Christophe Lucas <clucas@rotomalug.org>
>
>
> Index: 2.6.13-rc1/drivers/net/tokenring/olympic.c
> -#if OLYMPIC_DEBUG
> +#if OLYMPIC_DEBUG
One space remains: ^ :-)
> #if OLYMPIC_DEBUG
> - printk("BCTL: %x\n",readl(olympic_mmio+BCTL));
> - printk("GPR: %x\n",readw(olympic_mmio+GPR));
> - printk("SISRMASK: %x\n",readl(olympic_mmio+SISR_MASK));
> + printk(KERN_DEBUG "BCTL: %x\n",readl(olympic_mmio+BCTL));
> + printk(KERN_DEBUG "GPR: %x\n",readw(olympic_mmio+GPR));
> + printk(KERN_DEBUG "SISRMASK: %x\n",readl(olympic_mmio+SISR_MASK));
> #endif
How about:
#if OLYMPIC_DEBUG
#define DEBUG
#endif
above includes, and then pr_debug(); or just drop OLYMPIC_DEBUG
and use DEBUG?
And return code audit should probably be in a separate patch?
Domen
[-- Attachment #2: Type: text/plain, Size: 168 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [KJ] [patch 2.6.13-rc1 03/23][RESEND] Audit return code of
2005-07-08 10:22 [KJ] [patch 2.6.13-rc1 03/23][RESEND] Audit return code of Christophe Lucas
2005-07-08 14:59 ` Domen Puncer
@ 2005-07-12 16:51 ` Christophe Lucas
1 sibling, 0 replies; 3+ messages in thread
From: Christophe Lucas @ 2005-07-12 16:51 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 1161 bytes --]
Domen Puncer (domen@coderock.org) wrote:
>
> I thought only SCSI drivers are this scary. ;-)
>
> On 08/07/05 12:22 +0200, Christophe Lucas wrote:
> > Description:
> > Audit return of create_proc_* functions and use of KERN_ in printk();
> >
> > Signed-off-by: Christophe Lucas <clucas@rotomalug.org>
> >
> >
> > Index: 2.6.13-rc1/drivers/net/tokenring/olympic.c
>
> > -#if OLYMPIC_DEBUG
> > +#if OLYMPIC_DEBUG
>
> One space remains: ^ :-)
Yep, I will correct it.
>
> > #if OLYMPIC_DEBUG
> > - printk("BCTL: %x\n",readl(olympic_mmio+BCTL));
> > - printk("GPR: %x\n",readw(olympic_mmio+GPR));
> > - printk("SISRMASK: %x\n",readl(olympic_mmio+SISR_MASK));
> > + printk(KERN_DEBUG "BCTL: %x\n",readl(olympic_mmio+BCTL));
> > + printk(KERN_DEBUG "GPR: %x\n",readw(olympic_mmio+GPR));
> > + printk(KERN_DEBUG "SISRMASK: %x\n",readl(olympic_mmio+SISR_MASK));
> > #endif
>
>
> How about:
> #if OLYMPIC_DEBUG
> #define DEBUG
> #endif
> above includes, and then pr_debug(); or just drop OLYMPIC_DEBUG
> and use DEBUG?
>
> And return code audit should probably be in a separate patch?
You are right sorry :(
- Christophe (clucas@rotomalug.org)
[-- Attachment #2: Type: text/plain, Size: 168 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-07-12 16:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-08 10:22 [KJ] [patch 2.6.13-rc1 03/23][RESEND] Audit return code of Christophe Lucas
2005-07-08 14:59 ` Domen Puncer
2005-07-12 16:51 ` Christophe Lucas
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.