MS_SPLITSRCNAME(3)

✨ MS_SPLITSRCNAME ✨

okay bestie, so this is a page from the Library Functions Manual β€” it's ms_splitsrcname(3), and she's here to help you take a source name apart like it's a lil friendship bracelet πŸŽ€


πŸ’– NAME πŸ’–

ms_splitsrcname β€” splits source names into the SEED naming nomenclature. literally her whole job, no cap πŸ’…


🌸 SYNOPSIS 🌸

#include <libmseed.h>

char  *ms_splitsrcname ( char *srcname, char *net, char * sta,
                         char * loc, char *chan, char *qual );

πŸ¦‹ DESCRIPTION πŸ¦‹

so the ms_splitsrcname routine parses SEED channel naming components out of a source name string, and the format it's expecting is exactly this:

"NET_STA_LOC_CHAN[_QUAL]"

The first four components are required to uniquely identify a SEED channel β€” generally these are always present in a srcname. The Quality code is normally optional in a source name, so she's the ✨bonus✨ one.

The arguments for the first four components (net, sta, loc & chan) are treated as strings, but the quality code (qual) is treated as a pointer to a single character. bestie, one (1) character. that's it.

🫢 Memory for the requested component strings must already be allocated. she is not gonna allocate anything for you, that's on you, queen.

If a component pointer is NULL it will not be parsed from the string β€” so you can just be like "no thanks πŸ™ˆ" to any part you don't want.

Source names in the expected format are created, for example, by the ms_recsrcname(3), msr_srcname(3) and mst_srcname(3) routines. so if you ever wonder where these strings come from… them. πŸ‘‘


🌈 LOCATION IDS AND SPACES 🌈

The source name should never include spaces. The fixed format nature of SEED data records leads to blank or unused location IDs represented by spaces β€” and in a source name, such blank location IDs should be collapsed to nothing in the resulting sources names.

A blank location ID is parsed from a source name as an empty string (not two spaces). like, she ate that space and left no crumbs πŸ’€


πŸ“ EXAMPLES πŸ“

This usage will result in net="IU", sta="ANMO", loc="00", chan="BHZ" and qual will remain unchanged (because it was not contained in the input srcname):

ms_splitsrcname("IU_ANMO_00_BHZ", net, sta, loc, chan, qual);

This usage will limit the parsing to only the network and station components, with net="IU", sta="ANMO":

ms_splitsrcname("IU_ANMO_00_BHZ", net, sta, NULL, NULL, NULL);

The following usage illustrates a blank location ID and an included quality code:

ms_splitsrcname("IU_ANMO__BHZ_Q", net, sta, loc, chan, qual);

The result is:

net = "IU"
sta = "ANMO"
loc = ""
chan = "BHZ"
qual = 'Q'

the double underscore is doing the heavy lifting there and she's serving exactly what she's supposed to serve πŸ’…


⭐ RETURN VALUES ⭐

Return 0 on success and -1 on error. short, sweet, iconic.


πŸ’œ SEE ALSO πŸ’œ

ms_recsrcname(3), msr_srcname(3) and mst_srcname(3).


πŸ‘‘ AUTHOR πŸ‘‘

Chad Trabant IRIS Data Management Center


and that's the whole page bestie!! this dropped on 2009/12/19, and it's part of the Libmseed API β€” go forth and split those source names, you absolute main character 🫢✨